【问题标题】:Why do I need the inverse of the bind pose matrix to calculate animations?为什么我需要绑定姿势矩阵的逆来计算动画?
【发布时间】:2019-08-12 05:00:07
【问题描述】:

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

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

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

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

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

    【讨论】:

    • 您可能还应该提到加权顶点应该在多个空间中进行动画处理(根据它们的权重),因此顶点不能只在骨骼局部空间中,因为它会有多个骨骼- 本地空间。
    • 谢谢你们!那么我是否只为影响顶点的每个骨骼计算AnimationMatrix * BindPoseInvMatrix * vertex
    • @NicolaCrivellin YWa,但您应该将 AnimationMatrix * BindPoseInvMatrix 预乘到一个矩阵,因此每个顶点只有一个矩阵*顶点乘法
    猜你喜欢
    • 2015-04-03
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多