我正在尝试在 OpenGL 中实现动画,但我并不真正理解反向绑定(bind)姿势矩阵。据我了解,该矩阵用于“恢复”之前应用于我的顶点的任何变形。但是为什么我什至需要那个?为什么我不能直接将我从文件加载的顶点位置传递给 GPU 并应用骨骼的旋转和平移而不进行任何额外计算? GPU 不会在客户端修改顶点位置,所以我认为我不必恢复之前的任何转换,对吧?
最佳答案
网格顶点在对象空间中定义。要正确应用骨骼变换,顶点必须位于骨骼局部空间中。因此,姿势分两步应用:
- 将顶点从对象空间转换到骨骼空间(反向绑定(bind)姿势矩阵)
- 将顶点从骨骼空间转换为“动画”空间(来自动画的骨骼矩阵)
此外,您不能预先将顶点转换为骨骼空间,因为(通常)顶点受多个骨骼的影响。 (感谢Nicol Bolas)
关于c++ - 为什么我需要绑定(bind)姿势矩阵的逆来计算动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278745/