Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ogre3D:相对于自定义中心点的旋转_C#_C++_3d_Rotation_Ogre3d - Fatal编程技术网

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

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

我试图在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

矩阵演算的角度来看,基本技术是:

  • 将模型移动到点

  • 旋转模型

首先,您可以尝试执行
Translate(…)
,在
Rotate(…)
之后,一次成功的执行此操作,可以使用一个矩阵进行优化,其中包含平移和旋转数据,因此将使用单个
Transform(…)
调用执行您想要的操作


希望这有帮助。

如果这是一个对象,您希望始终围绕同一点旋转(如门),最简单的方法实际上是更改对象的轴心点

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


或者,可以将门附加到所需位置的额外场景节点。然后旋转额外的场景节点。这样做的好处是,你可以从食人魔身上做任何事情。

为什么不将过渡和旋转结合起来呢?听起来很有希望。我们要试一试。