Unity变换矩阵之如何构建变换矩阵

这篇博客探讨了Unity中的变换矩阵,包括平移、旋转和缩放矩阵的构建。详细阐述了旋转矩阵的不同相乘顺序及其在Unity中的实现方式。通过一个实例展示了如何从两个向量反推出变换矩阵,并利用该矩阵改变模型顶点的位置,从而实现模型的精确变换。文中还提供了一个Unity脚本,用于获取和打印模型空间下的y轴向量,辅助构建变换矩阵。
摘要由CSDN通过智能技术生成

变换矩阵包括:平移、旋转、缩放。

平移矩阵:


旋转矩阵:

X轴旋转矩阵:



Y轴旋转矩阵:



Z轴旋转矩阵:


缩放矩阵:


变换矩阵,就是将一个向量依次进行 平移、旋转和缩放变换,

设平移矩阵为MatMove,旋转矩阵分别为 MatRotateX、MatRotateY、MatRotateZ,缩放矩阵为MatScale

在Unity中,处理旋转是按照 Z 、 X、Y轴顺序依次进行旋转,所以最终的旋转矩阵

 公式一:MatRotate =  MatRotateY x MatRotateX x MatRotateZ

矩阵相乘的顺序要从右往左读,关于旋转矩阵的相乘顺序,还有另一种

公式二:MatRotate =  MatRotateZ x MatRotateX x MatRotateY

两种顺序刚好相反,这是因为关于旋转有两种解读方案,

第一种是,世界坐标系下依次进行Z轴旋转、X轴、Y轴旋转。对应公式一。

第二种是,先在世界坐标系下进行Z轴旋转,同时将世界坐标系一起旋转,得到新的临时坐标系1,

接着在临时坐标系1下进行X轴旋转,同时将临时坐标系1一起旋转,得到新的临时坐标系2,

最后在在临时坐标系2下进行Y轴旋转,得到最后的旋转结果。对应公式二。

Unity中按照第一种顺序相乘。

最终的变换矩阵,就是:

公式三:MatTransfer = MatMove x MatRotate x MatScale<

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值