32

我正在编写一个游戏引擎,我想知道我应该使用/加载/导出哪种 3D 模型格式?Obj 似乎通用且简单,但它似乎也不可靠,因为那里的大多数模型都包含错误,并且它不像其他格式那样存储任何地方。

似乎有专门用于 MD2/3/5 等游戏的格式,但我不确定,如果我建模,我会使用wings3d,除了纯粹从格式 Id 加载我需要和支持的内容之外,我不知道还有什么其他细节必须实施,例如我需要实施 IK 吗?我可以使用脚本化的每件动画而不是反向运动学和骨骼绑定吗?

4

6 回答 6

23

Collada是 Khronos 组(OpenGL 标准机构)拥有的基于 XML 的开放式 3d 模型格式

来自 Collada.org 常见问题解答:

COLLADA 1.4.x 功能集包括:

  • 网格几何
  • 变换层次结构(旋转、平移、剪切、缩放、矩阵)
  • 效果
  • 着色器(Cg、GLSL、GLES)
  • 材料
  • 纹理
  • 相机
  • 剥皮
  • 动画片
  • 物理学(刚体、约束、布娃娃、碰撞、体积)
  • 实例化
  • 技术
  • 多重表示
  • 资产
  • 用户数据
于 2009-02-21T17:09:59.807 回答
5

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

之后,尽可能多地支持流行的格式(.X、.3DS、.OBJ、.B3D)……您的引擎越容易访问,就越有更多人愿意使用它!

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

于 2009-02-21T16:25:54.547 回答
2

我使用自己的二进制格式。我尝试使用现有格式,但总是遇到限制。有些可以解决,有些可以解决。

Collada 可能值得一看。我不认为它作为 3D 引擎可以读取的格式那么好。不过,它可以作为一般的数据交换格式。

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

于 2009-02-21T15:14:21.847 回答
2

+1 科拉达。您可能还需要一个自定义的本机二进制格式以实现真正的快速加载(通常只是顶点/索引缓冲区数据的二进制转储,加上材质和骨架数据,以及适当的碰撞数据)。

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

于 2009-10-05T11:12:25.523 回答
1

很好地支持 Collada,然后为其他格式提供良好的转换器(这可能是困难的部分)。这将为您提供最大的灵活性。看看C4引擎

于 2009-02-21T17:14:44.070 回答
0

Collada 很棒,但它更多地存在于 3D 应用程序方面。即它最好用于在应用程序之间传输 3D 数据,而不是从游戏引擎中加载 3D 数据。你有没有研究过Lua?它在游戏中被广泛使用,因为它是一种脚本语言,既快得离谱(非常适合游戏)又非常灵活(可用于表示引擎所需的任何数据)。

于 2009-06-18T23:43:39.290 回答