可用的 3D 文件格式

在处理 3D 资产时,Godot 有一个非常灵活且可配置的导入器。

Godot 使用 场景 工作。这意味着用你最喜爱的 3D 软件制作的整个场景可以尽可能完整地被导入。

Godot 支持以下 3D 场景文件格式

  • glTF 2.0 (推荐使用)。Godot 完全支持文本(.gltf)和二进制( .glb )格式。

  • .blend (Blender)。这是通过调用 Blender 以透明方式导出到 glTF 来实现的(需要安装 Blender)。

  • DAE(COLLADA),一个受支持的比较老的格式。

  • OBJ(Wavefront)格式 + 它们的 MTL 材质文件。这也是完全支持的,但由于格式的限制支持相当有限(不支持轴心、骨架、动画、UV2、PBR 材质……)。

  • FBX, supported via the ufbx library. The previous import workflow used FBX2glTF integration. This requires installing an external program that links against the proprietary FBX SDK, so we recommend using the default ubfx method or other formats listed above (if suitable for your workflow).

将场景文件连同纹理和网格数据(如果是单独的)复制到项目仓库,然后当聚焦编辑器窗口时,Godot 将执行完全导入。

从 Blender 导出 glTF 2.0 文件(推荐)

从 Blender 中导出 glTF 文件的方法有三种:

  • 作为 glTF 二进制文件(.glb)。

  • 作为 glTF 文本文件,内嵌二进制数据(.gltf 文件)

  • 作为 glTF 文本文件,二进制数据和纹理独立(.gltf 文件 + .bin 文件 + 纹理)。

glTF 二进制文件(.glb)是三个选项中最小的。包含在 Blender 中设置的网格和纹理。当放入 Godot 中时,纹理将成为对象材质文件的一部分。

glTF 嵌入式文件(.gltf)的功能与二进制文件相同。Godot 中没有提供额外的功能,不应使用,因为文件比较大。

将 glTF 与纹理分开使用的原因有两个。一是将场景以基于文本的格式和二进制数据,描述在单独的二进制文件中。这对于版本控制很有用,如果要基于文本格式评审更改。二是你需要将纹理文件与材质文件分开。如果你不需要其中任何一个,glTF 二进制文件就可以了。

glTF 导入过程中,首先将 glTF 文件的数据加载到内存中的 GLTFState 类中,然后使用该数据生成 Godot 场景。在运行时导入文件时,可以直接将该场景添加到树中。导出过程则与此相反,Godot 场景被转换为 GLTFState 类,然后从中生成 glTF 文件。

解释 Godot 中 glTF 文件的运行时导入和导出过程的图表

在编辑器中导入 glTF 文件时,还有两个步骤。生成 Godot 场景后,ResourceImporterScene 类用于应用其他导入设置,包括你通过导入面板和高级导入设置对话框配置的设置。然后将其保存为 Godot 场景文件,这才是你运行/导出游戏时使用的文件。

解释 Godot 中 glTF 文件的编辑器导入过程的图表

警告

如果你的模型包含混合形状(也称为“形状键”(shape keys)和“变形目标”(morph targets)),则你的 glTF 导出设置的 仅导出变形骨骼 (Export Deformation Bones Only)需要在动画导出配置下配置为 启用

无论如何导出不变形的骨骼都会导致不正确的着色。

备注

3.2 之前版本的 Blender 导出的 glTF 文件不会包含放射光纹理。如果你的模型使用这种文字,并且你使用的是较旧版本的 Blender,则必须单独分开导入。

默认情况下,Blender 在材质上禁用背面剔除,导出材质时匹配其在 Blender 中的渲染方式。这意味着 Godot 中的材质会将其剔除模式设置为 Disabled。这会降低性能,因为背面将被渲染,即使它们不可见。要解决此问题,请在 Blender 的材质选项卡中启用 Backface Culling ,然后再次将场景导出为 glTF。

直接在 Godot 中导入 .blend 文件

备注

此功能需要 Blender 3.0 或更高版本。为了获得最佳结果,我们建议使用 Blender 3.5 或更高版本,因为它包含了对 glTF 导出器的许多修复。

强烈 建议使用从 Blender.org 下载的官方 Blender 版本,而不是 Linux 发行包或 Flatpak。这可以避免与打包相关的任何问题,例如可能导致不兼容或沙箱限制的不同库版本。

从 Godot 4.0 开始,编辑器可以通过透明方式调用`Blender <https://www.blender.org/>`__ 的 glTF 导出功能来直接导入 .blend 文件。

这样可以使你更快地迭代 3D 场景。你可以将场景保存在 Blender 中,按 Alt + Tab 返回 Godot,然后立即查看更改。使用版本控制时也更有效,你不再需要将导出的 glTF 文件的副本提交到版本控制。

要使用 .blend 导入,必须在打开 Godot 编辑器之前安装 Blender(如果打开已包含 .blend 文件的项目)。如果你将 Blender 安装在默认位置,Godot 应该能够自动检测其路径。如果你不是这种情况,请在编辑器设置中配置包含 Blender 可执行文件的目录的路径( 文件系统 > 导入 > Blender > Blender 3 路径 )。

如果你希望将 .blend 文件保留在项目文件夹中,但不让 Godot 导入它们,请在高级项目设置中禁用 文件系统 > 导入 > Blender > 启用

.blend 导入过程会首先转换为 glTF,因此它仍然使用 Godot 的 glTF 导入代码。因此, .blend 导入过程与 glTF 导入过程相同,但在开始时会有一个额外的步骤。

解释 Godot 中 Blender 文件导入过程的图表

备注

请记住,在团队中工作时,在项目中使用 .blend 文件意味着要求 所有 团队成员都安装 Blender。虽然 Blender 是免费下载的,但这也依然可能会增加项目工作时的摩擦。 .blend 导入在 Android 和 Web 编辑器上也不可用,因为这些平台无法调用外部程序。

如果有以上问题,请考虑使用从 Blender 导出的 glTF 场景。

从 Blender 导出的 DAE 文件

Blender 也有内置的 COLLADA 支持,但它无法正常工作以满足游戏引擎的需求,因此不应按原样使用。但是,使用内置 Collada 支持导出的场景可能仍然适用于没有动画的简单场景。

对于复杂场景或包含动画的场景,Godot 提供了一个 Blender 插件,它可以正确导出 COLLADA 场景供 Godot 使用。

在 Godot 中导入 OBJ 文件

OBJ 是最简单的 3D 格式,Godot 应该能够成功导入大多数 OBJ 文件。不过 OBJ 格式的限制也很多:不支持蒙皮、动画、UV2、PBR 材质。

在 Godot 中使用 OBJ 网格的方法有两种:

  • 直接将它们加载到 MeshInstance3D 节点,或任何其他需要网格的属性(例如 GPUParticles3D)中。这是默认模式。

  • 在导入面板中将其导入模式更改为 场景 ,然后重新启动编辑器。这会允许使用与 glTF 或 Collada 场景相同的导入选项,例如在导入时展开 UV2(对于 使用光照贴图全局照明)。

备注

Blender 3.4 及更高版本可以导出 OBJ 文件中的 RGB 顶点颜色(这是 OBJ 格式的非标准扩展)。自 Godot 4.0 起,Godot 能够导入这些顶点颜色,但除非在材质上启用 Vertex Color > Use As Albedo ,否则它们不会显示在材质上。

OBJ 网格的顶点颜色在导入后会保留其原始颜色空间(sRGB/线性),但其亮度被限制为 1.0(这些颜色不能过亮)。

在 Godot 中导入 FBX 文件

By default any FBX file added to a Godot project in Godot 4.3 or later will use the ufbx import method. Any file that was was added to a project in a previous version, such as 4.2, will continue to be imported via the FBX2glTF method unless you go into that files import settings, and change the importer to ufbx.

如果你将 .fbx 文件保留在项目文件夹中,但不希望 Godot 导入它们,请在高级项目设置中禁用 文件系统 > 导入 > FBX > 启用

If you want to setup the FBX2glTF workflow, which is generally not recommend unless you have a specific reason to use it, you need to download the FBX2glTF executable, then specify the path to that executable in the editor settings under Filesystem > Import > FBX > FBX2glTFPath

The FBX2glTF import process converts to glTF first, so it still uses Godot’s glTF import code. Therefore, the FBX import process is the same as the glTF import process, but with an extra step at the beginning.

Diagram explaining the import process for FBX files in Godot  via FBX2glTF

参见

The full installation process for using FBX2glTF in Godot is described on the FBX import page of the Godot website.