2

我正在关注 Youtube ( https://www.youtube.com/watch?v=f3Cr8Yx3GGA ) 上关于骨骼动画的系列教程,但遇到了一个问题 - 一切正常,除非我旋转其中一个骨骼(或“关节”),它们围绕场景原点旋转,这意味着它们不会停留在原地而是被平移。下图说明了问题: 对象除了被旋转外还被移动

我怎样才能使翻译不会发生?我现在已经多次阅读教程系列,但无法确定哪个步骤可以防止这种情况发生。

代码很大,分成十几个文件,我不知道哪个部分可能导致问题,所以我认为在这里发布它没有太大意义(它应该与代码中的代码相似)教程,即使我在他使用 Java 时使用 C++。教​​程代码可以在这里找到:https ://github.com/TheThinMatrix/OpenGL-Animation )。如果您甚至可以就骨骼动画中通常如何解决此问题提供一般性建议,那么我希望至少可以确定错误的部分并尝试从那里移开。

4

2 回答 2

0

你只需要注意你在旋转什么。

解决此问题的一种方法:先旋转它,然后再平移它。在对象位于原点时旋转对象,然后将对象平移到您想要的位置。

当整个程序发生变化时,重复执行此操作。从原点开始对象,进行所需的旋转,然后平移到它的最终静止位置。

于 2019-05-27T20:53:57.523 回答
0

旋转矩阵本身只能描述围绕原点的旋转(维基百科)。但是,旋转可以与平移结合使用,以更改原点的位置以获得所需的效果。例如,您可以:

  1. 平移对象,使其以原点为中心
  2. 将对象旋转到所需方向
  3. 将对象平移回原始位置

或者,用一种不同但功能相同的方式来表达它:

  1. 将原点移动到对象的位置
  2. 将对象旋转到所需方向
  3. 将原点重置回其原始位置

相关问题:围绕opengl中的固定点旋转对象

于 2019-04-07T14:32:24.993 回答