OpenGL:骨骼动画,为什么在使用GPU时需要反向绑定姿势?
我用软件蒙皮实现了一个MD5加载程序。md5中的绑定姿势是最终的绝对位置和旋转,您只需计算与关节相关的权重 我试图实现GPU蒙皮,但我在一个点上卡住了。既然这些坐标是最终坐标,为什么我不能将我的3d向量和四元数转换成矩阵并上传到着色器?正如我在这里读到的:,我需要用绑定姿势的倒数乘以我的骨架。但我不理解这一部分,因为我一直认为我需要做的唯一一件事就是将最终矩阵上传到GPU,然后计算剩余矩阵(权重总和等)OpenGL:骨骼动画,为什么在使用GPU时需要反向绑定姿势?,opengl,glsl,skeletal-mesh,Opengl,Glsl,Skeletal Mesh,我用软件蒙皮实现了一个MD5加载程序。md5中的绑定姿势是最终的绝对位置和旋转,您只需计算与关节相关的权重 我试图实现GPU蒙皮,但我在一个点上卡住了。既然这些坐标是最终坐标,为什么我不能将我的3d向量和四元数转换成矩阵并上传到着色器?正如我在这里读到的:,我需要用绑定姿势的倒数乘以我的骨架。但我不理解这一部分,因为我一直认为我需要做的唯一一件事就是将最终矩阵上传到GPU,然后计算剩余矩阵(权重总和等) 你能给我解释一下反向绑定姿势的行为吗?老实说,这篇文章有点太难理解了。似乎使用反向绑定姿势矩
你能给我解释一下反向绑定姿势的行为吗?老实说,这篇文章有点太难理解了。似乎使用反向绑定姿势矩阵将顶点变换为骨骼的局部坐标系
这是必要的,因为骨骼的变换是局部的(相对于其父关节)。因此,为了给顶点设置动画,必须将其变换为骨骼的局部坐标系,计算骨骼的局部变换并将其变换回世界系统。作为该文章的原始作者,我将尝试解释与反向绑定姿势相乘的作用: “反向绑定姿势”基本上“撤消”已在绑定姿势中应用于模型的任何变换 你可以这样想: 如果将标识矩阵应用于模型中的每个关节,则得到的是绑定姿势中的模型(您可以通过发送一个填充标识矩阵的骨架帧来尝试此操作。如果结果是绑定姿势,则说明操作正确) 如果将绑定姿势矩阵(未反转)应用于模型中的每个关节,则会得到意大利面,因为将应用绑定姿势两次 因此,要修复意大利面模型,只需将生成的关节变换乘以反向绑定姿势即可“撤消”已应用于模型的变换
我希望这能澄清一点…在那段时间里,我想我理解了背后的想法。我们已经上传了绑定姿势的顶点,我只需要根据当前骨架变换它们。由于我的所有顶点都已在世界空间中,我需要将新骨架的绝对矩阵转换为关节空间,因为我需要偏移量,然后将结果与我的顶点相乘,最后与modelview矩阵相乘。