Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   3D и контейнеры (http://www.flasher.ru/forum/showthread.php?t=120531)

nauroman 23.01.2009 12:01

3D и контейнеры
 
Привет всем 3d спецам )

В общем вопрос такой:

Есть 2 контейнера (MovieClip), со своими трансформациями сдвига и вращения (3d). В первом контейнере лежит MovieClip также со своими трансформациями вращения и сдвига (3d). Как мне этот MovieClip переложить из одного контейнера в другой так, чтобы он остался на месте и визуально ничего не изменилось ?

Может есть пример где ? Возможно уже есть готовое решение ?

mre 23.01.2009 12:33

С помощью математических расчетов задать новые координаты при перемещении в другой контейнер.

nauroman 23.01.2009 13:35

Я тоже так думаю. В том и проблема.

Добавлено через 2 часа 45 минут
Делаю так:

Код AS3:

 
        public class SomeContainer extends Sprite
        {
 
                override public function addChild(param_child:DisplayObject):DisplayObject
                {                       
// По этой вот формуле: plane.transform = Matrix3D.multiply(Matrix3D.inverse(newcontainer.transform), Matrix3D.multiply(oldcontainer.transform, plane.transform));
 
                        if (param_child.transform.matrix3D == null) param_child.transform.matrix3D = new Matrix3D();                                       
                        if (param_child.parent.transform.matrix3D == null) param_child.parent.transform.matrix3D = new Matrix3D();
                        if (transform.matrix3D == null) transform.matrix3D = new Matrix3D();
 
                        var inv_m:Matrix3D = transform.matrix3D.clone();
                        inv_m.invert();
 
                        var child_m:Matrix3D = param_child.transform.matrix3D.clone();
                        var prevCont_m:Matrix3D = param_child.parent.transform.matrix3D.clone();
 
                        prevCont_m.prepend(child_m);
                        inv_m.prepend(prevCont_m);
 
                        super.addChild(param_child);                       
 
                        param_child.transform.matrix3D = inv_m;
 
...

Не работает - вращение сбивается


Часовой пояс GMT +4, время: 20:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.