游戏中的3D文件格式

14
我正在学习使用XNABlender,并试图找到关于游戏开发中使用的各种3D文件格式的高质量、最新信息。
显然,许多游戏是使用多个自定义的3D文件格式进行开发的,但我有兴趣选择一个使用更常见支持的格式作为好的解决方案。
哪些是最受欢迎的格式,它们之间有何区别?
注意:理想情况下,它们应该支持动画,但我也对用于构建地图或静态对象的其他格式感兴趣。

超棒的问题。非常有帮助。只是这么说... :-) - Pablo Santa Cruz
9个回答

10
在XNA中,试图自己完成任何事情(特别是加载数据格式)的惩罚比使用现成支持的不完美要高得多,至少这就是文档所描述的,也是我从一个人那里听到的,他为了支持他需要的东西(运行时几何生成)而费尽心思地弯曲内容管道,我相信他知道自己在做什么。因此,我猜.X和.FBX几乎就是它们了。它们都支持骨骼动画,我认为还支持顶点变形。我不确定Blender能够将哪些功能导出到它们中,但如果你愿意,我可以查一下。
Blender 2.5将最终具有良好的Collada支持(当前版本没有骨架并且存在众多问题),Autodesk提供了一个很好的Collada<->FBX转换工具。
如果您在业余开发社区中寻找,您会发现Id软件数据格式非常受欢迎。一方面是MD2和MD3顶点变形角色动画格式,MD5骨骼动画格式,其需要显然已经被上述格式覆盖,另一方面是BSP文件格式,用于描述游戏关卡。
BSP的一个优点是有一个好的编辑器可用(GTKRadiant和衍生产品)。这是一种有效的格式,可以剔除隐藏的几何图形。然而,在XNA中构建自定义几何图形的运行时成本相当高,并且这些格式的限制相当适度,游戏关卡中最多只能有64k个顶点和64k个多边形,这是现在可以轻松处理的图形卡,不会出现任何性能下降。因此,您不会从直接支持它中获得任何好处。
我怀疑是否有任何功能强大、现代化、可用的格式和工具,可以进行筛选优化的关卡设计,其性能优势可以转化为XNA。
如果您还没有查看,以下是您可能想要查看的一些链接: 3D World Studio内容管道 Quake端口 所有未维护和过时,不知道是否经过优化。

7
已经提到的COLLADA和FBX是游戏业内已经实现了一定采用度的标准格式。虽然很少有游戏直接加载它们,但通常作为导出DCC应用程序中间格式,并进一步处理成更优化、通常是自定义和引擎特定的运行时格式。
业余开发者通常使用流行游戏的文件格式作为起点。 Quake 3模型和地图格式曾经相当流行。由于许多导出器和在D3DX框架中的加载支持,Microsoft的.X格式也在业余项目中相当受欢迎。

6
如果你正在使用XNA,那么最好的选择可能是FBX。我这么说的主要原因是它是单一的、非XNA特定的XNA本地支持的格式在内容创建管道中。

谢谢您的建议,不过我仍然对其他格式很感兴趣,特别是如果已经有其他人创建了开源的导入器/处理器。 - Michael La Voie
@The Lame Duck:如果你可以使用fbx格式获得最佳结果,为什么还想要其他的呢?正如Reed所提到的,XNA将原生支持它,如果Blender确实可以导出到该格式,那可能是你最好的选择。 - tomzx
@tomzx - 非常正确,fbx可能是最好的选择。我还很好奇它与.md3或.md5甚至COLLADA相比如何。它支持相同的功能吗? - Michael La Voie
1
FBX支持几乎所有主要功能 - 它被设计为处理与Collada相同的功能集(以及导出到Collada),以及其他附加功能。请参见:http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=8224926 - Reed Copsey
谢谢@Reed Copsey。那是一个很棒的链接,我会选择FBX。 - Michael La Voie
FBX的主要问题在于它是Autodesk专有的。此外,我还要补充一点,我从未遇到过使用它的游戏开发工作室。COLLADA很大、复杂,但它的优势在于它是一个开放标准。 - zebrabox

5

COLLADA自己解析起来真是一团糟。如果你要选择这条路,请使用某种解析库。 - Ricket

3

2

可能值得一看 glTF

还有一个正在进行的 glTF 2.0 版本,增加了基于物理的渲染支持。在 Khronos 网站上有草案。

Assimp 对其有“部分”支持。不确定缺少什么。

还有许多不同语言(C ++,WebGL / JS,Rust,Go)的加载器在 github 上。

还有一个 COLLADA 转 gltf 转换器。

它使用 JSON 文件作为清单,然后将数据加载到其他文件中,例如 .bin 用于二进制文件,各种图像和 glsl 用于着色器。当然也有 二进制扩展

当然,由于这是新技术(仍在开发中),支持会受到影响。上次我查看时,COLLADA 的支持也相当不稳定。

还有声明式3D
请参阅这篇涵盖两者的论文
这两种格式都有一定的网络焦点,但对于游戏也应该没问题。

0

PMD文件。它们用于MMD动画等等!只需在Deviantart.com上搜索“MMD模型”之类的东西即可。

PMD、PMX和OBJ。


0

我并不是专家(远非如此,只是玩弄了一下)。

我猜测3D Studio Max格式(.3ds)相当常用,RenderMan RIB文件也是如此。 我也喜欢AC3D文件格式(它是纯文本)。


0
多年来,DirectX文件格式(.x扩展名)一直非常流行,Blender包含了一个内置的导出器。

1
这种格式通常不被认为是一个好的格式,但是对于学习3D API来说,它已经足够胜任了。 - Skizz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接