我正在编写一个游戏引擎,我想知道我应该使用什么3D模型格式/加载/导出? Obj看似普遍且容易,但它似乎也不可靠,因为那里的大多数模型都包含错误,并且它不会存储在其他格式附近的任何地方。
似乎有专门用于MD2 / 3/5等游戏的格式,但我不确定,如果我建模我会使用wings3d,而且我不知道除了纯粹加载我需要的内容以及格式支持之外还有哪些其他细节我必须实现,比如我需要实现IK吗?我可以使用脚本化的单件动画而不是反向运动学和骨骼绑定吗?
答案 0 :(得分:23)
Collada是一个基于XML的开放格式,适用于Khronos集团拥有的3d模型(OpenGL标准组织)
来自Collada.org常见问题解答:
COLLADA 1.4.x功能集包括:
答案 1 :(得分:5)
在担心您想要支持的3D格式之前,我认为您应该关注您计划在引擎中实现的功能。将这些作为要求写下来,并从列表中选择支持最多功能的格式......因为您要展示您的引擎(我假设您计划将引擎公开提供)。如果您的引擎具有特定功能(对于游戏引擎来说总是一件好事),您甚至可能想要推出自己的格式。
之后,支持尽可能多的流行格式(.X,.3DS,.OBJ,.B3D)......您的引擎越容易访问,人们就越想使用它! / p>
Collada是一种很好的通用格式,但是像Nils提到的那样,它不是最终部署的理想格式。
答案 2 :(得分:2)
我使用自己的二进制格式。我试图使用现有的格式,但总是遇到限制。有些可以解决,有些则可以使用showstoppers。
科拉达可能值得一看。我认为它不像3D引擎那样好。不过,它可以作为一般的数据交换格式。答案 3 :(得分:2)
+1 Collada。您可能还需要一个自定义本机二进制格式来实现快速加载(通常只是顶点/索引缓冲区数据的二进制转储,加上材料和骨架数据以及碰撞数据,如果合适的话)。
游戏行业的一个趋势是支持在引擎的开发者版本中加载像collada这样的格式,但也有一个工具链可以导出优化版本以供发布。开发人员版本可以动态更新网格,因此当艺术家保存更改时,文件会自动重新加载,允许他们(几乎)即时WYSIWYG查看他们的模型,但仍然提供完全优化的发布格式。
答案 4 :(得分:1)
支持Collada,然后向其他格式提供良好的转换器(这可能是困难的部分)。这将为您提供最大的灵活性。看看C4 engine
答案 5 :(得分:0)
Collada很棒,但它在3D应用程序方面的生活更多。即它最适合在应用程序之间传输3D数据,而不是从游戏引擎中加载3D数据。你看过Lua了吗?它在游戏中被广泛使用,因为它的脚本语言非常快速(非常适合游戏)而且非常灵活(可用于表示引擎所需的任何数据)。