Показать сообщение отдельно
Старый 06.08.2014, 23:18
Dron1564 вне форума Посмотреть профиль Отправить личное сообщение для Dron1564 Найти все сообщения от Dron1564
  № 1  
Ответить с цитированием
Dron1564

Регистрация: Oct 2010
Сообщений: 69
Question Поворот без искажений c использованием Matrix3D

Здравствуйте,
Пытаюсь освоить Stage3D, все аспекты вполне ясны и имеется много уроков, но один вопрос не могу решить уже неделю:
Как правильно для Matrix3D присвоить значение поворота относительно оси Z. ( аналог "rotation" )
Позиция и размер вычисляются правильно, но как только добавляется поворот картинка растягивается.

Опробовал 2 метода:
1.
Код AS3:
_positionMatrix.identity();
var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3);
v3 = _positionMatrix.decompose();
v3[0].incrementBy(new Vector3D( x, y, 0 ));// x, y, z
v3[1].incrementBy(new Vector3D(0,0,-rotation*Math.PI/180)); // rotationX, rotationY, rotationZ
v3[2].incrementBy(new Vector3D(width,height,0)); // scaleX, scaleY, scaleZ
_positionMatrix.recompose(v3);
2.
Код AS3:
 
_positionMatrix.identity();
_positionMatrix.appendScale(width,height,1);
_positionMatrix.appendTranslation(x,y,0);
_positionMatrix.appendRotation(-rotation,Vector3D.Z_AXIS );
Cправа Stage ( Спрайт с графикой ), слева Stage3D ( оба метода поворота дают один и тот же результат )


Подозреваю, что тут как то замешан AspectRatio для Stage3D,
Помогите пожалуйста.


Последний раз редактировалось Dron1564; 07.08.2014 в 00:36.