Unity中Transform组件中transform矩阵获取及验证unity旋转顺序

Unity中Transform组件中transform矩阵获取及验证unity旋转顺序

最近在做根据深度信息恢复三维空间点的工作,逃不出R t矩阵,以及各个坐标系之间的转换。

我使用的是在Unity场景里获取图像的深度信息,在恢复过程中,旋转问题一直困扰,近期有了新的发现,特此分享。

一、Transform组件中transform矩阵获取

要获取Transform里的旋转平移矩阵,首先我新建一个名为“Mytransform”的C#脚本文件,定义matrix矩阵,用SetTRS即可获取旋转平移。

更改控件里的旋转平移量,可以看到获得的矩阵各元素的值。

修改的值
对应的4*4矩阵

我想要获取这些值将其应用于我的VS项目中,故写了一段简单的小代码,将其以txt文件输出。

简单的输出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轴转+平移

绕坐标轴旋转:x轴-0/ y轴-30/ z轴-0;平移:15 12 1


y轴转+平移

绕坐标轴旋转:x轴-0/ y轴-0/ z轴-30;平移:15 12 1


z轴转+平移

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。

你可能感兴趣的:(Unity中Transform组件中transform矩阵获取及验证unity旋转顺序)