为什么需要绑定姿势矩阵的逆矩阵来计算动画?

Nic*_*lin 2 c++ opengl

我正在尝试在 OpenGL 中实现动画,但我不\xe2\x80\x98t 真正理解逆绑定姿势矩阵。据我了解,该矩阵用于 \xe2\x80\x9arevert\xe2\x80\x98 应用于我的顶点的任何先前变形。但为什么我需要那个呢?为什么\xe2\x80\x98t 我可以将从文件加载的顶点位置传递到GPU,并应用骨骼\xe2\x80\x98s 旋转和平移,而不需要任何额外的计算?GPU 不会修改客户端的顶点位置,所以我不认为我必须恢复之前的任何转换,对吗?

\n

Mic*_*nko 5

网格顶点在对象空间中定义。要正确应用骨骼变换,顶点必须位于骨骼局部空间中。因此,一个姿势的应用分两个步骤:

  1. 将顶点从对象空间变换到骨骼空间(逆绑定姿势矩阵)
  2. 将顶点从骨骼空间变换到“动画”空间(来自动画的骨骼矩阵)

另外,您无法将顶点预先转换为骨骼空间,因为(通常)顶点受到多个骨骼的影响。(感谢尼可波拉斯

  • 您可能还应该提到,加权顶点旨在在多个空间中进行动画处理(根据其权重),因此顶点不能仅位于骨骼局部空间中,因为它将有多个骨骼局部空间。 (2认同)