Изменить 3D точку регистрации для вращения в AS3 - PullRequest
2 голосов
/ 18 апреля 2011

Кто-нибудь получил немного кода, который я могу использовать, чтобы изменить центральную точку, вокруг которой вращаются объекты DisplayObjects в трехмерном пространстве? Мне нужно, чтобы он работал с вращением X, вращением Y и вращением Z. Я знаю, что есть способ обернуть каждый объект в другой спрайт и сместить позиции x & y, но я бы предпочел математическое решение.

В качестве примера проблемы этот код должен иметь форму звезды:

var a=new Sprite()
addChild(a)
a.graphics.lineStyle(0,0xFF0000)
a.graphics.moveTo(10,10)
a.graphics.drawRect(100,100,100,100)

var b=new Sprite()
addChild(b)
b.graphics.lineStyle(0,0)
b.graphics.moveTo(10,10)
b.graphics.drawRect(100,100,100,100)
b.rotationZ=45

...

ОБНОВЛЕНИЕ : Спасибо Алексу за подсказку, я разместил здесь многоразовое решение :)

1 Ответ

3 голосов
/ 18 апреля 2011

Вам необходимо использовать объект Matrix3D и применить его к свойству преобразования экземпляров DisplayObject. Прежде чем вы сможете применить преобразования 3DMatrix 4x4, вам необходимо определить свойство z ​​объекта DisplayObject.

Так что-то вроде:

myObject.z = 1; 
    myObject.transform.matrix3D.appendTranslation(10,10,0);
    myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS);
    myObject.transform.matrix3D.appendTranslation(-10,-10,0);

От: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix3D.html

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...