[动画] unity_ObjectToWorld里的每一列分别代表什么意思?

查看:946 |回复:2 | 2021-10-8 11:16:00

您需要 登录 才可以下载或查看,没有账号?注册

x
unity_ObjectToWorld中,最后一列代表的是模型中心点的世界坐标,那其余三列分别是什么意思?
2021-10-8 11:16:00  
 赞 赞 0

使用道具 登录

2个回答,把该问题分享到群,邀请大神一起回答。
2#
首先我们把模型顶点从模型空间转换到世界空间用的就是unity_ObjectToWorld,那么这个矩阵的内容是什么呢,没错,就是这个模型相对于世界空间原点的缩放,旋转和平移(至于为什么是这个顺序,是因为S(缩放)不改变向量基位置和方向,只改变向量基大小,旋转(R)改变向量基方向,平移(T)改变向量基位置,而每一种变换都是以坐标轴为基准的,只有按照这个顺序才能把一个物体按照我们想象的样子置换到正确的位置,旋转和大小(试想一下如果先平移,后缩放,平移后的一个顶点位置为(0,5,0)再在Y方向放大5倍,其坐标就变成了(0,25,0)这显然不是我们想要的,更换任意两个变换都会得到我们并不想要的结果))然后推一下unity_ObjectToWorld的公式其中尤其需要注意的是对于旋转矩阵的处理,在Unity里面,我们约定旋转顺序是先Z轴,再X轴,最后Y轴,但是由于我们旋转会导致向量基方向变化,所以如果按照上面的顺序是有问题的,所以只要反过来写:先Y轴,再X轴,最后Z轴,得到的结果就是正确的,题主可以自己推算一下嗷

image.png
所以,unity_ObjectToWorld拆分意义如下最后一列是模型中心的世界坐标前三行三列的每一列的向量长度分别对应X,Y,Z三个轴向的缩放值前三行三列的向量除以其对应轴的缩放值,并且将最后一列的前三行与最后一行的前三列置为0即为旋转矩阵,我们可以用这个旋转矩阵得到四元数,各个轴向的旋转角等



回复 收起回复
2021-10-8 11:16:54   回复
 赞 赞 2

使用道具 登录

3#
感谢分享
回复 收起回复
2021-10-8 14:42:59   回复
 赞 赞 1

使用道具 登录

CG 游戏行业专业问题

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表