2009-02-21 66 views
32

即时通讯编写游戏引擎,我想知道我应该使用/加载/导出什么3D模型格式? Obj似乎普遍且容易,但它似乎也不可靠,因为大多数模型都包含错误,并且不会像其他格式那样存储在任何地方。我应该使用哪种3D模型格式?

似乎有专门针对游戏的格式,例如MD2/3/5,但我不确定,如果我模型使用wings3d,除了纯粹加载我需要的和支持的其他细节外,格式ID必须实现,比如我需要实现IK吗?并且我可以使用脚本每片动画而不是逆运动学和骨骼索具?

回答

22

Collada是由Khronos Group所拥有的3D模型(OpenGL的标准组织)

从Collada.org FAQ开放的基于XML的格式:

的COLLADA 1.4。X的功能集包括:

  • 网格几何
  • 变换层级(旋转,平移,切变,规模,矩阵)
  • 影响
  • 着色器(CG,GLSL,GLES)
  • 材料
  • 纹理
  • 灯光
  • 相机
  • 剥皮
  • 动画
  • 物理(刚体,约束,布娃娃,碰撞,体积)
  • 实例化
  • 技术
  • Multirepresentations
  • 资产
  • 用户数据
+15

我不会使用这种格式的实时图形。 Collada旨在作为图形生产管线的中间格式。使用它来转换为更紧凑的二进制格式,或者您将整天等待加载。 – 2010-03-29 23:13:16

+0

还要考虑到并非所有工具都支持整个COLLADA功能集。 – 2010-07-20 16:53:53

+0

最后,我使用ASSIMP库进行几何加载,所以任何人都可以使用他们喜欢的东西,只要他们支持必要的属性。 – 2010-11-21 00:39:49

2

我使用我自己的二进制格式。我试图使用现有的格式,但总是遇到限制。有些人可以解决问题,其他人可以在那里炫耀。

Collada可能值得一看。我不认为这是3D引擎可以读取的格式。尽管如此,它仍然是一种通用的数据交换格式。

http://www.collada.org/mediawiki/index.php/Main_Page

5

担心什么3D格式要支持之前,我想你应该专注于什么功能,你计划在你的引擎来实现。写下这些要求,并从列表中选择支持最多功能的格式......因为您需要展示您的引擎(我假设您计划让引擎公开可用)。如果你的引擎有特定的功能(对游戏引擎来说这总是一件好事),你甚至可能想要推出自己的格式。

之后,支持尽可能多的流行格式(.X,.3DS,.OBJ,.B3D)......您的引擎越容易访问,越多的人希望使用它!

Collada是一个不错的通用格式,但像Nils提到的那样,它不是最终部署的理想格式。

1

很好地支持Collada,然后提供良好的转换器到/从th其他格式(这可能是困难的部分)。这会给你最大的灵活性。看看C4 engine

-1

Collada是伟大的,但它更多地生活在3D应用程序的一面。即它最适用于在应用程序之间传输3D数据,而不是从游戏引擎中加载3D数据。你看过Lua吗?它广泛用于游戏,因为它的脚本语言既快速(非常适合游戏),又非常灵活(可以用来表示您的引擎需要的任何数据)。

2

Collada的+1。你可能还需要一个自定义的本地二进制格式来实现真正的快速加载(通常只需要一个顶点/索引缓冲区数据的二进制转储,以及材料和骨架数据以及适当的冲突数据)。

游戏行业的一个趋势是支持在引擎的开发者版本中加载像collada这样的格式,但也有一个工具链可以输出用于发布的优化版本。开发人员版本可以动态更新网格,为艺术家保存更改,文件会自动重新加载,允许他们(几乎)即时所见即所得的模型视图,但仍提供完全优化的发布格式。