将一个动画模型中的多个网格合并为一个网格,libgdx



我得到了一些动画角色模型(我不是自己创建的),我在Maya中看过它们,它们由5-7个独立的网格组成;身体、眼睛、斗篷、剑等。在libgdx中渲染的每个模型都添加了大约35个绘制调用。。。我想减少这种情况。我在想我应该把模型的所有网格合并为一个网格。我在Maya中无法做到这一点(好吧,它使用了组合网格功能,它仍然很好地设置了动画等,但在网格组合后我无法将其导出为FBX,因此我无法将它们放入我的游戏中)。所以我在想,也许有一种方法可以在代码中实现这一点?

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

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

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

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

最新更新