![]() |
away3d objectContainers
Помогайте, кто чем может )
На сцене есть 2 контейнера (ObjectContainer). objectContainer1 и objectContainer2 В objectContainer1 есть объект plane. Задача - перенести объект plane из objectContainer1 в objectContainer2, но так, чтобы положение и поворот plane остались неизменными. т.е., чтобы plane не изменил своего положения. Нужно это для последующей анимации plane в objectContainer2, т.е. чтобы plane плавно переместился из заданной позиции objectContainer1 в заданную позицию objectContainer2 Есть 2 решения: Решение 1: 1. Получить глобальные координаты (coords1) plane пока он находится в objectContainer1 2. Перенести plane в objectContainer2 3. Получить глобальные координаты (coords2) plane пока он находится в objectContainer2 4. Удалить plane из objectContainer2 5. Анимировать plane из coords1 в coords2 6. Перенести plane в objectContainer2 Это решение реализуемо, но не годится, т.к. нужно, чтобы plane сразу стал объектом в objectContainer2 Решение 2: 1. Перенести plane в objectContainer2, но так, чтобы plane остался в предыдущей позиции (Вот тут вся загвоздка) 2. Анимировать plane в objectContainer2 P.S. Вывести plane из objectContainer1 так, чтобы plane оставался на месте я могу. Примерно так: Код:
var rot = Matrix3D.matrix2euler(plane.sceneTransform);Как прицепить его к objectContainer2, чтобы он оставался в этой же позиции неясно ( В общем нужно по известному глобальному (x,y,z и rotX, rotY, rotZ) для objectContainer2 и глобальному (x,y,z и rotX, rotY, rotZ) для plane получить локальные (x,y,z и rotX, rotY, rotZ) для plane в objectContainer2 P.P.S Спасибо за внимание |
если нужно оставить координаты неизменными, относительно сцены, то пользуй localTOGLobal и globalToLocal.
А вообще можно так еще ( набросок ) Если plain лежит в либе. Аттачишь plain в ObjectContainer2 потом Код:
for( i in ObjectContainer2.plain ) |
Я говорю про away3d, про :
plane.x plane.y plane.z plane.rotationX plane.rotationY plane.rotationZ т.е. речь идёт о 3d координатах, и AS3 ) |
nauroman, отредактируйте свой пост и оформите код тегами [code][/code].
|
Что-то вроде
Код:
plane.transform = Matrix3D.multiply(Matrix3D.inverse(newcontainer.transform), Matrix3D.multiply(oldcontainer.transform, plane.transform)); |
РАБОТАЕТ. Спасибо большое.
В результете выглядит примерно так: Код:
... |
Хотя нет, вру. Не работает.
т.е. после Код:
...Код:
param_child.rotationX = param_child.rotationX;Код:
var rot = Matrix3D.matrix2euler(param_child.transform); |
| Часовой пояс GMT +4, время: 04:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.