Godot 原生支持glTF 2.0,无需任何额外插件即可读取GLB文件。操作只有“把.glb复制到项目文件夹”这一步,之后Godot会自动导入,再从FileSystem面板拖进场景即可放置。而且,官方文档在支持的3D格式列表中明确把glTF 2.0标注为“推荐(recommended)”(来源:Godot Docs - Available 3D formats,截至2026年7月)。
本文依据官方文档的说明,讲解把GLB导入Godot、直到能在游戏中使用的完整流程。版本以截至2026年7月的稳定版(Godot Engine 4.7系列)文档为准。
通过本文可以了解
※目前的Figmee是一项服务,可以根据上传的画作或插画,生成并下载手办风格图像和3D模型数据(GLB / 3MF)。实物3D打印品的销售正在筹备中(Coming Soon)。
Godot支持的3D格式
官方文档列出的3D场景支持格式如下。
| 格式 | 定位 | 补充 |
|---|---|---|
| glTF 2.0 | 推荐 | 同时支持文本格式.gltf和二进制格式.glb |
| .blend | 支持 | 可直接使用Blender文件 |
| DAE(COLLADA) | 支持 | 历史悠久的交换格式 |
| OBJ(Wavefront) | 支持 | 以形状为主的简单格式 |
| FBX | 支持 | 广泛使用的行业标准格式 |
关于.glb,文档的说明是“glTF二进制文件(.glb)是体积更小的选择,包含网格和纹理设置”。由于连纹理都装在一个文件里,在文件夹之间移动也不会出现引用丢失。这一特性在传递文件时是很大的优势。关于GLB格式本身,可参阅GLB文件是什么?。
Unity默认不支持glTF,需要添加官方包;而Godot从一开始就支持——这是两款引擎最直观的区别(Unity的步骤请参阅如何在Unity中导入GLB)。
为什么推荐glTF 2.0
理由可以归纳为3点。
1. 引用不会丢失。 .glb把网格和纹理打包在一个文件里。纹理单独存放的格式,一旦改动文件夹结构,图片链接就会断开,模型变成一片白色;GLB则不会发生这种情况。
2. 以实时显示为前提设计。 glTF是Khronos Group制定的格式,用于在运行时快速读取和显示,与游戏引擎的用途本来就一致。
3. 用途广泛。 同一个GLB可以直接用于网页浏览器显示、其他引擎、3D查看器等其他用途。一旦转换成引擎专用格式,这种通用性就会丧失。
在Godot中导入GLB的步骤(约3分钟)
- 把
.glb复制到项目文件夹(30秒)。在打开Godot编辑器的状态下,用操作系统的文件管理器把文件放进项目文件夹(res://下)。回到编辑器后,文件会自动出现在FileSystem面板中。 - 在FileSystem面板中选中文件(10秒)。选中后,Import面板会显示导入设置。
- 检查Import面板的设置(1分钟)。设置分为几个部分。
- Root Type / Name:根节点的类型和名称
- Meshes:切线生成、LOD、光照烘焙相关设置
- Animation:帧率和轨道优化
- Import Script:自动执行导入后处理的脚本
- 修改设置后点击
Reimport(20秒)。点击之前,修改不会生效。 - 拖放到场景中(10秒)。从FileSystem面板拖到已打开场景的视图或节点树中。根据官方文档,这时根节点会被重命名为与文件名一致。
- 检查显示效果(1分钟)。如果一片漆黑,可能是场景中没有灯光,或没有设置环境(WorldEnvironment)。
想更细致地调整时,可以打开Advanced Import Settings(高级导入设置)对话框。在FileSystem面板中双击3D场景,或点击Import面板的Advanced… 按钮即可打开(来源:Godot Docs - Import configuration,截至2026年7月)。需要按单个网格或材质覆盖设置时就用这里。
需要记住的机制:无法覆盖源文件
在Godot中处理3D数据时,有一个机制最好先弄明白。官方文档是这样写的:“Godot只能保存为自身的场景格式(.tscn / .scn),无法覆盖保存原始的3D场景文件。”
导入的GLB在Godot内部被当作PackedScene(包含网格、材质、骨架、动画的Godot原生格式场景)处理。也就是说,在Godot中做的修改不会写回原来的.glb。
在实际工作中,这意味着两点。
- 原始数据始终作为“源文件”单独管理。 保留Blender工程或生成得到的GLB。
- Godot端的细化工作,在继承导入场景的另一个场景中进行。 这样即使替换原始数据并重新导入,细化的内容也不会丢失。
AI生成的3D模型,重新生成就能得到不同的变体。以“会替换模型”为前提搭建结构,之后就不容易返工。关于整体的编辑路线,已整理在AI生成3D模型编辑方法全览中。
在游戏中使用:用节点名后缀生成碰撞体
Godot有一个很方便的机制:根据原始数据中节点名所带的后缀,在导入时改变节点类型。后缀可以用-、$、_中的任意一个分隔,且不区分大小写(来源:Godot Docs - Node type customization,截至2026年7月)。
| 后缀 | 导入时的行为 |
|---|---|
-col | 以子节点形式生成三角网格的静态碰撞体 |
-convcol | 生成ConvexPolygonShape3D而不是三角网格 |
-colonly | 移除网格,只保留StaticBody3D的碰撞体 |
-convcolonly | 与-colonly相同,但使用凸分解 |
-rigid | 把网格导入为RigidBody3D |
-navmesh | 转换为导航网格 |
-occ / -occonly | 生成遮挡体(Occluder3D)/把网格转换为遮挡体 |
-noimp | 无论类型,导入时移除节点和动画 |
-vcol | 启用顶点颜色标志 |
-alpha | 应用透明(TRANSPARENCY_ALPHA)模式 |
-loop / -cycle | 设置动画的循环标志 |
这里有个陷阱:后缀必须加在“原始数据的节点名”上。 AI生成的3D模型,节点名是自动决定的,直接导入不会带碰撞体。方法有两种。
- 在Blender中改名后再导出(推荐)。先用Blender打开GLB,把对象名改成
Character-col之类,再重新导出为GLB。之后只要重新导入,就会带上碰撞体。 - 在Godot端手动添加。 在放置好的场景中自行添加StaticBody3D和CollisionShape3D。如果只有1个模型,这样有时更快。
三角网格的碰撞体忠实于形状,但处理开销较大。会动的角色用简单形状(胶囊、盒子、凸形),只有静止的背景物体才用三角网格,这是在性能上比较好把控的分配方式。
导入后需要检查的3点
1. 缩放
有时一放置就发现模型大得离谱或小得离谱。这是原始数据的尺寸造成的,并不是错误。把它和现有物体或预想的角色身高放在一起,相对地调整即可。
2. 材质的观感
glTF的材质基于物理(PBR),质感由金属度(metallic)和表面粗糙度(roughness)决定。在卡通风格的游戏中,这种明暗可能与画风不协调。这时就在Godot端替换材质。颜色与质感的原理可参阅纹理是什么?。
3. 面数
AI生成的模型或精细制作的模型,按实时显示的标准来看面数可能偏多。以同时显示多少个为基准,必要时在导出前减少面数(什么是多边形数?)。Import面板的Meshes部分也有LOD设置,也可以交给它按距离自动简化。
GLB无法导入或显示异常时的解决办法
| 症状 | 可能的原因 | 解决办法 |
|---|---|---|
| FileSystem面板中不出现文件 | 编辑器没有检测到文件夹的变化 | 让编辑器重新获得一次焦点。重新打开项目 |
| 改了设置却没生效 | 没有点击Reimport | 在Import面板中执行Reimport |
| 一片漆黑什么都看不到 | 场景中没有灯光或环境 | 添加灯光(DirectionalLight3D等)或WorldEnvironment |
| 会穿过去、站不到地面上 | 没有生成碰撞体 | 在原始数据中加上-col再导出,或手动添加 |
| 运行卡顿 | 面数、三角网格碰撞体 | 使用LOD。把碰撞体换成简单形状 |
| 编辑了源文件也没变化 | 编辑的是另一份副本 | 替换res://下的实际文件并重新导入 |
| 无法改变姿势 | 没有骨骼 | 需要另外进行名为绑定的工序 |
最后一项是使用AI生成3D模型时一定会碰到的问题。由一张画生成的模型是不含骨骼的静态网格,直接使用无法让它走动或改变姿势。 如果是展示、背景、小道具、旋转展示之类的用途,无需额外工序就能使用;但如果想作为角色动起来,请在计划中预留单独的绑定工序(什么是绑定?)。
常见问题
在Godot中读取GLB需要插件吗?
不需要。Godot原生支持glTF 2.0,官方文档也把它列为推荐格式。.glb(二进制)和.gltf(文本)都支持。使用.gltf时,请把附带的图片文件等一起放好。.glb装在一个文件里,省去了这个麻烦。
怎样给导入的模型加碰撞体?
在原始数据的节点名上加上-col(以子节点生成三角网格碰撞体)或-colonly(删除网格只保留碰撞体)等后缀再导出,导入时就会自动生成。如果无法改名,就在Godot端手动添加StaticBody3D和CollisionShape3D。
在Godot中编辑的内容能写回原来的GLB吗?
不能。Godot的机制是只能保存为自身的场景格式(.tscn / .scn)。稳妥的做法是另外保管原始数据,Godot端的细化工作在继承的场景中进行。如果想改变形状本身,就在Blender等外部软件中编辑后重新导出,再重新导入Godot。
想试用AI生成的3D模型,Unity和Godot哪个更省事?
单看“到读取为止的步骤数”,是Godot。由于原生支持glTF 2.0,只要放入文件就能一路走到显示。Unity需要多添加一个官方包,但添加之后的易用性并没有差别。如果已经有项目在其中一款引擎上运行,配合那款引擎才是合理的选择。两者都可以免费开始,先实际导入1个模型,亲眼确认显示效果和性能负载就足够了。
只想使用导入模型的一部分时怎么办?
打开Advanced Import Settings对话框,就能逐个查看网格和材质并覆盖设置。不需要的节点,在原始数据的名称上加上-noimp再导出,导入时就会被移除。放置后再删除不需要的节点也可以,但每次替换模型都要重复同样的操作,如果会反复进行,在原始数据端处理好会更省事。
总结
把GLB导入Godot,只需① 把.glb放进项目文件夹 → ② 在Import面板中检查设置并点击Reimport → ③ 从FileSystem面板拖进场景这3步即可完成。glTF 2.0既是原生支持又是推荐格式,无需额外插件。
需要把握的有两点。一是无法覆盖保存原始3D文件的机制:原始数据作为源文件管理,细化工作在继承场景中进行。二是通过节点名后缀自动生成:在原始数据端加上-col等后缀,就能自动创建碰撞体。一开始就理解这两点,即使一边替换模型一边推进开发,结构也不会崩坏。




