将一个动画模型中的多个网格组合成一个网格libgdx

时间:2015-02-17 19:27:14

标签: model 3d libgdx mesh

我有一些动画角色模型(我自己没有创建)我在Maya中看过它们,它们由5-7个单独的网格组成;身体,眼睛,斗篷,剑等。在libgdx渲染的每个模型增加了大约35个绘制调用...我想减少这个。我在想我应该把模型的所有网格合二为一。我无法在Maya中做到这一点(好吧,它使用了组合网格功能,它仍然可以很好地制作动画等,但是在网格结合后我无法将它导出到FBX,所以我无法将它们放入我的游戏中)。所以我想也许有可能在代码中做到这一点吗?

有没有办法可以将这些模型中的所有网格与lbgdx代码合并/组合?我看过MeshPartBuilder.addMesh(),但据我所知,它不会合并我添加到一个的网格?

1 个答案:

答案 0 :(得分:0)

MeshPartBuilder.addMesh可用于合并(部分)网格。但假设你正在谈论皮肤,那么它就不会像那样工作,因为骨骼信息会有所不同。您必须手动更新每个顶点的骨骼索引。您最好在建模应用程序中将它们组合起来。

除了在建模应用程序中合并网格外,还有其他方面需要考虑。例如,网格的大小不应超过32k顶点(java short的最大值,用于索引),否则fbx-conv会将其拆分为更小的部分。

同样,如果网格主动受到超过12个骨骼的影响,fbx-conv将分割网格。您可以使用-b命令行选项更改此设置。请参阅:https://github.com/libgdx/libgdx/wiki/3D-animations-and-skinning#loading-skinning