Ogre3D:相对于自定义中心点的旋转

时间:2012-03-23 10:06:09

标签: 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 degree clockwise rotation:
- What I get:          What I want:

         x
         x                  x  
  ==     o     ==      ==   o       ==
         x                  x
         x                  x
                            x

2 个答案:

答案 0 :(得分:2)

如果这是关于您想要围绕同一点旋转的对象(如门),最简单的方法实际上是更改对象的轴心点。

这可以由您的艺术家在Maya / Max / Blender中轻松完成。

或者您可以将门连接到所需位置的额外场景节点。然后旋转那个额外的场景节点。这样做的好处是你可以从Ogre做任何事情。

答案 1 :(得分:0)

matrix calculus的角度来看,基本技术是:

  • 将模型移至

  • 旋转模型

首先,您可以尝试执行Translate(...),在Rotate(...)之后,有一次对此进行了优化,可以使用单个矩阵进行优化,使用平移和旋转数据,因此将执行您想要的单Transform(...)次电话

希望这有帮助。