静态和动画3D模型的文件格式


22

我目前正在使用C ++和OpenGL编写3D游戏,而我即将加载3D模型。因此,我正在寻找流行的文件格式和技术来

  • 显示静态网格物体和
  • 渲染动画网格。

我已经发现了很多可能的格式和技术,例如关键帧动画,骨骼动画,MD2到MD5、3DS,X,Collada等。

为了简单起见,我想使用一种允许同时使用的格式(和技术),即静态和动画网格。所以我的问题是,是否有一种格式适合该任务,您建议使用哪种格式。并澄清一下:我不需要超平滑动画或全新功能。

旁注:因为我是搅拌机爱好者(但不是专家;-),所以可以将其与之配合使用-但这当然不应该成为表演的障碍。

Answers:


16

让我建议您使用Collada

DCC工具广泛支持它,并且标准化程度很高。它支持骨骼动画,并且..很好,它几乎可以执行所有操作,包括着色器和物理-这些与您无关。

基于顶点的动画(例如MDL或MD2格式)或多或少是过去的遗物。如今,大多数动画都是骨骼动画(即认为是否平滑装配的角色),并且内容创建工具已针对它们进行了优化。

Blender的Collada出口商在运作中,但是像往常一样,从Blender出口东西可能很烦人。如果遇到问题,您可能需要尝试使用其他导出器或文件格式,或者手动修改脚本。

要加载Collada,请使用FColladaColladaDOM之类的库(不要自行解析,Collada是一个非常胖的XML怪物……)。还有开放资产导入库,可加载约25种文件格式,包括Collada(以及您提到的所有其他格式)。这将是一个绝佳的选择,因为它特别针对游戏开发人员,并以适合实时渲染的格式提供其输出。但老实说:我是它的合著者之一,所以我可能有点偏颇。

最后但并非最不重要的一点:用于导入资产的文件格式不应定义引擎的功能及其使用的技术-相反,应该相反。您的动画是否超平滑不是导入格式的问题,而是关于您使用哪种技术对网格进行动画处理以及它们首先建模的质量如何。导入格式应仅能帮助您将Blender中的数据带入游戏中。


非常感谢您的详细回答。我今天是第一次听说Collada(由朋友推荐),并且不确定是否真的可以在生产环境中使用它。我现在试一试,谢谢。:-)
stschindler 2011年

2
好的建议,尤其是对AssImp的引用。但是,我不建议COLLADA,因为似乎没有人始终如一地正确支持所有内容,并且出于实际内容的目的,它相当大。我建议使用MD5之类的东西,它可以为您提供骨架,并且可以正确地广泛实现(我认为)。我也不会那么轻易地撤消MD2。有很多示例模型可以使用,您可以廉价地对其进行动画处理(尽管对于布娃娃或您拥有的东西没用)。
克里斯(ChrisE)2011年

我将使用不同的文件格式。感谢AssImp,这很容易做到。MD2确实是我的第一个主意,但是我认为创建它而不是仅导出适当的骨骼是非常昂贵的。在我的情况下,不需要布娃娃,我只需要动画模型,不涉及物理。
stschindler 2011年

确实确实有非常糟糕的Collada出口商,但是至少有充分记录的格式,因此您总是知道应归咎于谁:-)。MD5也是不错的选择,但我不知道Blender出口商的表现如何。MD2的顶点表示非常有限,并且受大小和精度限制。我真的不会使用它,没有理由这样做。
亚历山大·盖斯勒

wazim.com/Collada_Tutorial_1.htm是用于加载collada的相当不错的深入教程,但是我仍然建议您使用库。
Exilyth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.