【发布时间】:2019-08-12 05:00:07
【问题描述】:
我正在尝试在 OpenGL 中实现动画,但我并不真正了解反向绑定姿势矩阵。据我了解,这个矩阵用于“恢复”之前应用于我的顶点的任何变形。但为什么我什至需要那个?为什么我不能将我从文件中加载的顶点位置传递给 GPU 并应用骨骼的旋转和平移而不进行任何额外的计算? GPU 不会修改客户端的顶点位置,所以我认为我不必还原任何以前的转换,对吧?
【问题讨论】:
我正在尝试在 OpenGL 中实现动画,但我并不真正了解反向绑定姿势矩阵。据我了解,这个矩阵用于“恢复”之前应用于我的顶点的任何变形。但为什么我什至需要那个?为什么我不能将我从文件中加载的顶点位置传递给 GPU 并应用骨骼的旋转和平移而不进行任何额外的计算? GPU 不会修改客户端的顶点位置,所以我认为我不必还原任何以前的转换,对吧?
【问题讨论】:
网格顶点在对象空间中定义。要正确应用骨骼变换,顶点必须位于骨骼局部空间中。因此,一个姿势分两步应用:
此外,您不能将顶点预转换为骨骼空间,因为(通常)顶点受到多个骨骼的影响。 (感谢Nicol Bolas)
【讨论】:
AnimationMatrix * BindPoseInvMatrix * vertex?
AnimationMatrix * BindPoseInvMatrix 预乘到一个矩阵,因此每个顶点只有一个矩阵*顶点乘法