我正在尝试围绕Ogre3D中的自定义中心点旋转节点,但我似乎找不到这样做的方法。 我已经查看了四元数和矩阵,但它们似乎没有做我想做的事情(但说实话,我不太确定我完全理解它们)。
下面的图画说明了我想要的东西(墙上的“门”,从顶部看)。 'o'代表中心点(铰链),'x'代表门,'='代表墙壁。
- Original position
- What I get: What I want:
== x x o x x == == x o x x x ==
- After a 90 degree clockwise rotation:
- What I get: What I want:
x
x x
== o == == o ==
x x
x x
x
答案 0 :(得分:2)
如果这是关于您想要围绕同一点旋转的对象(如门),最简单的方法实际上是更改对象的轴心点。
这可以由您的艺术家在Maya / Max / Blender中轻松完成。
或者您可以将门连接到所需位置的额外场景节点。然后旋转那个额外的场景节点。这样做的好处是你可以从Ogre做任何事情。
答案 1 :(得分:0)
从matrix calculus
的角度来看,基本技术是:
将模型移至
旋转模型
首先,您可以尝试执行Translate(...)
,在Rotate(...)
之后,有一次对此进行了优化,可以使用单个矩阵进行优化,使用平移和旋转数据,因此将执行您想要的单Transform(...)
次电话
希望这有帮助。