PDA

Просмотр полной версии : 3D-поворот объекта без искажений


TanaTiX
14.01.2011, 01:27
Как корректно повернуть объект во флеше в 3Д-пространстве? Сам объект по сути - контейнер, обычный спрайт, куда грузится Bitmap. Использование различных 3Д-движком ИМХО лишнее, т.к. подобный поворот - единственное, что понадобится, так что хотелось бы обойтись применением z-координат и иже с ними.
Как делаю: использую TweenLite, изменяя с его помощью значение переменной. При изменении значения запускается следующий код:
cont.transform.matrix3D.prependRotation(value, new Vector3D(1, 0, 0));
в данном примере cont - контейнер, value - угол поворота
У всей этой схемы есть еще один нюанс: во время поворота происходит перемещение общего контейнера (того, в котором находится cont) тоже с помощью TweenLite, но с применением обычных x и y.
Проблема в том, что при вращении (проблема именно в нем) объект начинает "колбасить": вращается он с искажениями и угол поворота не соответствует заданному.
Предполагаю, что связано с тем, что расчет идет относительно некоторой точки, которая дает подобные искажения.
Как это правильно реализовать?

ЗЫ. в конечном итоге должен получиться эффект поворота карты. Проблема только с вращением.
Заранее спасибо.

alatar
14.01.2011, 04:44
ЗЫ. в конечном итоге должен получиться эффект поворота карты.
Такое можно и по старинке, при помощи scaleX сделать.

TanaTiX
14.01.2011, 05:30
Можно, но эффект будет не совсем трехмерный. Топорно будет выглядеть :(
По сабжу нашел эту (http://www.flasher.ru/forum/showthread.php?t=135188) темку (акцент на посты silin-а). Только вот не могу сообразить куда viewDistance прикрутить. Во флеше с 3Д ранее практически не занимался, так что сорри за нубство.

Wolsh
14.01.2011, 20:52
Можно так, по-быстрому..