c++ - 为什么我需要绑定(bind)姿势矩阵的逆来计算动画?

标签 c++ opengl

我正在尝试在 OpenGL 中实现动画,但我并不真正理解反向绑定(bind)姿势矩阵。据我了解,该矩阵用于“恢复”之前应用于我的顶点的任何变形。但是为什么我什至需要那个?为什么我不能直接将我从文件加载的顶点位置传递给 GPU 并应用骨骼的旋转和平移而不进行任何额外计算? GPU 不会在客户端修改顶点位置,所以我认为我不必恢复之前的任何转换,对吧?

最佳答案

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

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

此外,您不能预先将顶点转换为骨骼空间,因为(通常)顶点受多个骨骼的影响。 (感谢Nicol Bolas)

关于c++ - 为什么我需要绑定(bind)姿势矩阵的逆来计算动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278745/

相关文章:

c++ - 为什么可以从指向实例化基类对象的强制转换指针调用非静态派生类方法?

c++ - 什么时候让一个对象删除自己?

c++ - GLSL 中的 KD 树

c++ - 热气球不可见

java - glTexImage2D 导致内存泄漏

c++ - 在不止一个回文的情况下寻找最长但字典序最小的回文

c++ - 如何检查 GLFW 窗口是否正在运行?

c++ - 在 Objective-C++ 中将 CFTypeRef 转换为 Boolean

c++ - 使用 OpenGL 写入文件而不是在屏幕上绘制

opengl - 什么时候必须将两种颜色相乘,什么时候必须相加?