在网格加载和处理过程中如何变换蒙皮网格?

时间:2011-11-03 01:00:44

标签: c# skinning mesh collada

我创建了自己的蒙皮网格加载器。它工作正常,但我的问题是我不知道如何变换(缩放和旋转)蒙皮网格,以便将变换“​​烘焙”到顶点上。如果它只是一个几何体,转换顶点是一块蛋糕,但现在涉及到皮肤信息,例如,如果我做一个比例,我的网格将被拉伸。我知道我也需要转换我的皮肤数据,但哪些部分?所有Bind Pose矩阵?逆绑定姿势矩阵?我似乎无法理解如何解决这个问题。

我的实施是在C#& OpenTK和我专门加载从Blender 2.6导出的Skinned Collada文件。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不知道C#和OpenTK,但我尝试在理论方面提供帮助。通过加权全局变换矩阵来变换顶点。要形成全局变换,需要连接每个关节的局部变换。要创建局部变换,您需要连接本地平移,旋转和缩放。重量来自关节。所以我认为你需要获得绑定姿势的联合局部旋转/平移/缩放,然后操纵那些局部矩阵并将它们形成为全局矩阵。之后,将权重应用于全局变换,然后变换顶点。

以下链接可能与您的问题类似。 COLLADA: Inverse bind pose in the wrong space?

我创建了这个collada文件播放器,但使用的是C ++。 http://www.youtube.com/watch?v=bXBfVl-msYw