Unity中Transform组件中transform矩阵获取及验证unity旋转顺序
最近在做根据深度信息恢复三维空间点的工作,逃不出R t矩阵,以及各个坐标系之间的转换。
我使用的是在Unity场景里获取图像的深度信息,在恢复过程中,旋转问题一直困扰,近期有了新的发现,特此分享。
一、Transform组件中transform矩阵获取
要获取Transform里的旋转平移矩阵,首先我新建一个名为“Mytransform”的C#脚本文件,定义matrix矩阵,用SetTRS即可获取旋转平移。
更改控件里的旋转平移量,可以看到获得的矩阵各元素的值。
我想要获取这些值将其应用于我的VS项目中,故写了一段简单的小代码,将其以txt文件输出。
因为我完全是unity新手,很多操作都不懂。这里需要特别注意:
1.扩展的类和方法必须声明为static
2.而后就可以在脚本里直接调用了。
我这里将其包含在一个自定义的命名空间Output里。
输出txt后将其在VS以矩阵的形式输出。
二、验证unity的旋转顺序
绕坐标轴旋转: x轴-0/ y轴-0/ z轴-0;平移: 15 12 1
绕坐标轴旋转:x轴-30/ y轴-0/ z轴-0;平移:15 12 1
绕坐标轴旋转:x轴-0/ y轴-30/ z轴-0;平移:15 12 1
绕坐标轴旋转:x轴-0/ y轴-0/ z轴-30;平移:15 12 1
Unity获取矩阵
绕坐标轴旋转:x轴-30/ y轴-30/ z轴-30;平移:15 12 1
程序中计算矩阵R = ry*rx*rz
绕坐标轴旋转:x轴-30/ y轴-30/ z轴-30;平移:15 12 1
所以,经验证,发现,unity的旋转顺序应该是先z再x后y。