actionscript-3 - 如何将矢量转换为 z 旋转角度
问题描述
请帮忙。
我在 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角的值?
解决方案
在 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;
推荐阅读
- c# - 在 ASP.NET 标识中自定义 UserRole
- android - FlutterEnginePluginRegistry - 在 Flutter 应用中注册插件 Firebase 的问题
- python - Python替换由split函数分隔的列表索引
- tensorflow - 如何确保部分输入不参与训练神经网络?
- python - 与字符串列表python的精确字符串匹配和比较
- c# - 对于在 Win10 上调用 FileDialog 的 WinForms 应用程序,在 Application.VisualStyleState 使用 NoneEnabled 时上下文菜单为空
- android - Android 在某些设备上连接到 IPv6 地址失败
- ios - 如何在没有 UITableView 的情况下使用带有 xib 的自定义 UITableViewCell
- c# - 实体框架生成错误的查询
- unity3d - 在 Unity 中使用 MediaPipe 手部追踪