跳到主要内容
设计与3D技术

Godot导入GLB的方法|拖拽放置的3分钟步骤与无法导入时的解决办法

Godot原生支持GLB,无需插件。把.glb复制到项目文件夹即可自动导入,再从FileSystem面板拖进场景就能放置。本文依据官方文档,讲解无法覆盖源文件的机制、碰撞体自动生成、导入后的3项检查以及常见问题的解决办法。

Figmee 编辑部发布日期: 2026-08-20更新日期: 2026-10-2417分钟阅读
GodotGLBglTF游戏开发3D模型
Godot导入GLB的方法|拖拽放置的3分钟步骤与无法导入时的解决办法

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分钟)

  1. 把.glb复制到项目文件夹(30秒)。在打开Godot编辑器的状态下,用操作系统的文件管理器把文件放进项目文件夹(res://下)。回到编辑器后,文件会自动出现在FileSystem面板中。
  2. 在FileSystem面板中选中文件(10秒)。选中后,Import面板会显示导入设置。
  3. 检查Import面板的设置(1分钟)。设置分为几个部分。
    • Root Type / Name:根节点的类型和名称
    • Meshes:切线生成、LOD、光照烘焙相关设置
    • Animation:帧率和轨道优化
    • Import Script:自动执行导入后处理的脚本
  4. 修改设置后点击Reimport(20秒)。点击之前,修改不会生效。
  5. 拖放到场景中(10秒)。从FileSystem面板拖到已打开场景的视图或节点树中。根据官方文档,这时根节点会被重命名为与文件名一致。
  6. 检查显示效果(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模型,节点名是自动决定的,直接导入不会带碰撞体。方法有两种。

  1. 在Blender中改名后再导出(推荐)。先用Blender打开GLB,把对象名改成Character-col之类,再重新导出为GLB。之后只要重新导入,就会带上碰撞体。
  2. 在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等后缀,就能自动创建碰撞体。一开始就理解这两点,即使一边替换模型一边推进开发,结构也不会崩坏。

相关指南

分享这篇文章

将孩子的画变成3D 模型

孩子的画作将变成独一无二的3D 模型。

前5次免费