【发布时间】:2018-03-26 01:48:37
【问题描述】:
我正在用鼠标对相机控件进行编程。我希望用户能够上下或左右看,但不能“倾斜”到一边。换句话说,我想允许 Yaw 和 Pitch 改变,但将 Roll 限制为 0。
如何防止四元数围绕某个轴旋转?当我自己只允许 x 轴旋转或 y 轴旋转时,一切正常,但是当我出于某种原因同时允许两者时,y 旋转会受到影响并且相机会向侧面倾斜。
【问题讨论】:
-
这是一个常见的问题,它是由于在同一对象上添加了 Yaw 和 Pitch 导致它滚动。我不记得究竟如何解决它,但你需要有一个对象作为父对象并让该对象做例如俯仰,然后将偏航应用于子对象或相反,我不太确定。如果您将 Yaw 和 Pitch 在两个不同的对象上分开,它应该可以工作。
-
似乎当你有两个四元数并组合它们时,你应该能够获取生成的四元数,将其轴投影到滚动轴上并使用它来移除滚动组件。但这是基于对所涉及的线性代数的直觉的即兴回答。
标签: c++ math unity3d rotation quaternions