12

我实现了一个带有软件皮肤的 MD5 Loader。md5 中的绑定姿势是最终的、绝对位置和旋转,您只需要计算与关节相关的权重。

我试图实现 GPU 蒙皮,但我被困在了一个点上。由于这些坐标是最终的,为什么我不能将我的 3d 向量和四元数转换为矩阵并将其上传到着色器?正如我在这里读到的:http: //3dgep.com/ ?p=1356 ,我需要将我的骨架与绑定姿势的倒数相乘。但我不明白这部分,因为我一直认为我唯一需要做的就是将最终矩阵上传到 GPU 并在那里计算其余的(权重总和等)

你能解释一下反向绑定姿势的行为吗?

4

2 回答 2

25

作为那篇文章的原作者,我将尝试解释乘以反向绑定姿势的作用:

“反向绑定姿势”基本上“撤消”了任何已经应用到模型绑定姿势的变换。

像这样考虑它:如果您将单位矩阵应用于模型中的每个关节,那么您将获得处于绑定姿势的模型(您可以通过发送一个填充了单位矩阵的骨架框架来尝试此操作。如果结果是绑定姿势,那么你做对了)。

如果您将绑定姿势矩阵(未反转)应用于模型中的每个关节,那么您将得到意大利面条,因为您将应用绑定姿势两次!

因此,要修复意大利面条模型,您只需将生成的关节变换乘以反向绑定姿势即可“撤消”已应用于模型的变换。

我希望这能澄清一点......

于 2013-09-30T19:37:07.693 回答
11

老实说,这篇文章有点难以完全完成。似乎反向绑定姿势矩阵用于将顶点转换为骨骼的局部坐标系。

这是必要的,因为骨骼的变换是局部的(相对于它们的父关节)。因此,为了对顶点进行动画处理,您必须将其转换为骨骼的局部坐标系,计算骨骼的局部变换并将其转换回世界系统。

于 2013-06-16T09:08:51.480 回答