【问题标题】:How to convert Vector to z rotation angle如何将矢量转换为 z 旋转角度
【发布时间】:2018-08-29 18:22:16
【问题描述】:

请帮忙。

我在 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角的值?

【问题讨论】:

  • 我不熟悉 X3d 格式,但您需要弄清楚为什么在每个方向使用相同的值会产生不同的结果...第一次 x-y 90, -30 给出 0, 0 是吗?那么为什么突然第二次,90, -30 的相同 x-y 值现在给出-0.251, 0.935?好奇怪……

标签: actionscript-3 3d stage3d x3d


【解决方案1】:

在 Stage3D 中找到了一种方法,在其他平台上可能相同:

首先你创建一个空的matrix3D:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多