osg模型的旋转四元素赋值给另一个模型旋转不对
时间: 2024-02-29 12:40:29 浏览: 50
imgui+OSG制作模型编辑器,实现三轴方向的实时平移、旋转和缩放变化
5星 · 资源好评率100%
如果你将一个模型的旋转四元数直接赋值给另一个模型,那么结果可能不正确,因为两个模型的坐标系可能不同。
通常情况下,你需要将一个模型的旋转四元数转换为世界坐标系或另一个模型的坐标系,然后再将其赋值给另一个模型。
具体地,假设你有两个模型 A 和 B,它们分别有自己的旋转四元数 qA 和 qB,且 B 相对于 A 的变换为 tAB(即 B 在 A 的坐标系中的位置和旋转)。
那么,如果你想将 A 的旋转四元数赋值给 B,可以按照以下步骤进行:
1. 将 qA 转换为世界坐标系下的旋转四元数 qA_world,即将 qA 乘以 A 的父节点的旋转四元数(如果有的话),得到 qA_world = qParent * qA。
2. 将 qA_world 转换为相对于 B 的旋转四元数 qB_relative,即将 qA_world 乘以 tAB 的逆变换,得到 qB_relative = tAB^-1 * qA_world。
3. 将 qB_relative 赋值给 B 的旋转四元数 qB,即 qB = qB_relative。
这样,你就可以将 A 的旋转四元数正确地赋值给 B 了。
阅读全文