将一个动画模型中的多个网格合并为一个网格,libgdx
Combining multiple meshes in one animated model into one mesh, libgdx
我得到了一些动画角色模型(不是我自己创建的)我在 Maya 中查看过它们,它们由 5-7 个独立的网格组成; body、眼睛、斗篷、剑等。libgdx 中渲染的每个模型都会添加大约 35 个绘制调用...我想减少这个。我在想我应该将模型的所有网格合并为一个。我无法在 Maya 中执行此操作(好吧,它使用组合网格功能工作,它仍然可以很好地动画等等,但我无法在网格组合后将其导出到 FBX,因此我无法将它们放入我的游戏中)。所以我在想也许有一种方法可以在代码中做到这一点?
有什么方法可以 merge/combine 使用 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-skinning
我得到了一些动画角色模型(不是我自己创建的)我在 Maya 中查看过它们,它们由 5-7 个独立的网格组成; body、眼睛、斗篷、剑等。libgdx 中渲染的每个模型都会添加大约 35 个绘制调用...我想减少这个。我在想我应该将模型的所有网格合并为一个。我无法在 Maya 中执行此操作(好吧,它使用组合网格功能工作,它仍然可以很好地动画等等,但我无法在网格组合后将其导出到 FBX,因此我无法将它们放入我的游戏中)。所以我在想也许有一种方法可以在代码中做到这一点?
有什么方法可以 merge/combine 使用 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-skinning