关于Unity四元数相乘先后顺序的问题

在unity中四元数和向量相乘可以变换旋转。四元数之间相乘类似矩阵之间相乘的效果。

矩阵相乘的顺序不可互换,只有特殊条件矩阵才可互换。四元数相乘类似,今天就因为这个问题掉进坑里了,记录一下

 

问题大致是,有一个cube,它会看向左边的板,用角轴旋转,但我想要y轴看向它

Quaternion.AngleAxis(-90, Vector3.forward);

 

以下代码就是没有注意相乘顺序导致的结果

var quat1 = Quaternion.AngleAxis(-90, Vector3.forward);
var quat2 = Quaternion.AngleAxis(Time.time * 180, referenceTransform.forward);
transform.rotation = quat1 * quat2;

 

修改后正确结果如下

transform.rotation = quat2 * quat1;

 

 

所以在处理四元数或者矩阵相乘操作时,注意顺序,并且避免xxx*=quat这样的操作,尽量用直观写法

 

posted @   HONT  阅读(7598)  评论(6编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
回到顶部