C# Ogre3D:相对于自定义中心点的旋转
我试图在Ogre3D中围绕一个自定义中心点旋转一个节点,但我似乎找不到这样做的方法。 我研究过四元数和矩阵,但它们似乎并不像我想做的那样(但老实说,我不太确定我是否完全理解它们) 下图说明了我想要的东西(从顶部看,墙上有一扇门)o'表示中心点(铰链),'x'表示门,='表示墙C# Ogre3D:相对于自定义中心点的旋转,c#,c++,3d,rotation,ogre3d,C#,C++,3d,Rotation,Ogre3d,我试图在Ogre3D中围绕一个自定义中心点旋转一个节点,但我似乎找不到这样做的方法。 我研究过四元数和矩阵,但它们似乎并不像我想做的那样(但老实说,我不太确定我是否完全理解它们) 下图说明了我想要的东西(从顶部看,墙上有一扇门)o'表示中心点(铰链),'x'表示门,='表示墙 - Original position - What I get: What I want: == x x o x x == == x o x x x == - After a 90 d
- 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
从
矩阵演算的角度来看,基本技术是:
- 将模型移动到点
- 旋转模型
首先,您可以尝试执行Translate(…)
,在Rotate(…)
之后,一次成功的执行此操作,可以使用一个矩阵进行优化,其中包含平移和旋转数据,因此将使用单个Transform(…)
调用执行您想要的操作
希望这有帮助。如果这是一个对象,您希望始终围绕同一点旋转(如门),最简单的方法实际上是更改对象的轴心点
这可以由您的艺术家在Maya/Max/Blender中轻松完成
或者,可以将门附加到所需位置的额外场景节点。然后旋转额外的场景节点。这样做的好处是,你可以从食人魔身上做任何事情。为什么不将过渡和旋转结合起来呢?听起来很有希望。我们要试一试。