Как преобразовать вектор в угол поворота z - PullRequest
0 голосов
/ 25 августа 2018

Пожалуйста, помогите.

Ориентация моей камеры на 3D max:

90 -30 0

Когда я экспортирую в файл X3D, он будет иметь такую ​​ориентацию:

0, 0, -1, -0.524

И я могу легко преобразовать это в угол камеры на оси Z, как это:

-1 * -0.524 * 180/Math.PI = 30;

Проблема:

Но когда я поворачиваю камеру на 3D max, чтобы:

90 -30 90

на X3D я получаю этот вектор:

-0.251, 0.935, -0.251,-1.638

Как узнать значение угла z?

1 Ответ

0 голосов
/ 29 августа 2018

Нашел способ сделать это в Stage3D, вероятно, то же самое на других платформах:

сначала вы создаете пустую матрицу 3D:

var m3d:Matrix3D = new Matrix3D();

затем вы поворачиваете его с заданным вектором ориентации из файла X3D:

m3d.appendRotation(v.w*180/Math.PI,new Vector3D(v.x,v.y,v.z));

разложить матрицу

var angles:Vector3D = m3d.decompose("eulerAngles")[1];

Вы получаете xyz углы в радианах, поэтому поворачивайте радианы в градусы:

var _z:Number = angles.z*180/Math.PI;
...