Blender 到 Godot 4 导出检查清单:glTF 设置、动画与导入提示(2026)
最后更新:2026 年 9 月。

从 Blender 导出 GLB 时启用 +Y Up、应用变换、勾选 Apply Modifiers、将 Materials 设为 Export 并关闭 Compression,然后把文件放入 Godot 项目文件夹,Godot 4 就会自动为你生成场景、材质、一个 Skeleton3D 和一个 AnimationPlayer。直接导入 .blend 也能完成同样的工作,因为它会在后台调用 Blender;这在单台机器上很方便,但对团队来说可能是个问题。几乎所有“它在 Godot 里看起来不对”的反馈都可归结为以下五个原因之一:未应用变换、角色建模时朝向错误、动作从未存入 NLA、文件使用了 Draco 压缩,或者纹理根本没有随文件离开 Blender。
快速解答
- **格式:**使用 glTF 2.0,并导出为单个
.glb文件。Godot 文档将其标为“(推荐)”,而且这种二进制形式“包含在 Blender 中设置好的网格和纹理”。 - **坐标轴与缩放:**保持导出器的
+Y Up开启,让角色在 Blender 中朝向-Y,保持 1 个 Blender 单位等于 1 米,并在导出前执行Object > Apply > All Transforms(Ctrl-A)。 - **压缩:**保持
Data > Compression关闭。Godot 无法打开经过 Draco 压缩的 glTF。 - **动画:**每个需要导出的动作都必须是当前活动动作,或已存入 NLA 轨道。在动作名称中加入不带连字符的
loop或cycle,Godot 就会设置循环标志。 - **碰撞与物理:**在 Blender 对象名称末尾添加
-col、-convcol、-colonly或-rigid,Godot 就会在导入时创建对应物理体。 - **纹理丢失:**导出 GLB,而不是 glTF Separate;将
Materials设为Export,并在 Principled BSDF 上使用图像纹理,而不是程序化节点。 - 完全不想打开导出对话框:Cinevva Rig 插件提供了 Godot 预设,只需单击一次即可应用这些设置。它的导出功能免费,可在你的机器上离线运行,并支持 Windows、macOS 和 Linux 上的 Blender 4.2 及更高版本。绑定功能为付费部分,首发价一次性 $29。
快速参考
以下是对 Godot 4 有影响的 Blender glTF 导出器设置,信息来自 Blender 手册和 Godot 导入文档。其他设置均可保持默认值。
导出器设置(File > Export > glTF 2.0) | Godot 所需值 | 原因 |
|---|---|---|
Format | glTF Binary (.glb) | 单个文件,内含纹理。Godot:“glTF 二进制文件(.glb)体积更小” |
Include > Selected Objects | 开启 | 避免将摄像机、灯光和参考网格带入场景 |
Transform > +Y Up | 开启(默认) | glTF 和 Godot 使用 Y 轴向上,Blender 使用 Z 轴向上。导出器会完成转换 |
Data > Mesh > Apply Modifiers | 开启 | 烘焙 Triangulate、Mirror、Subdivision。Godot 建议在 Blender 中进行三角化,以获得“更一致的结果” |
Data > Mesh > Normals、UVs | 开启 | Godot 需要 UV 来显示纹理,需要法线来进行着色 |
Data > Mesh > Tangents | 使用法线贴图时开启 | 否则 Godot 的 Ensure Tangents 会在导入时生成切线 |
Data > Material > Materials | Export | Placeholder 和 No Export 会留下一个灰色模型 |
Data > Material > Images | 默认(PNG/JPEG) | glTF“要求图像采用 PNG 或 JPEG 格式” |
Data > Armature > Export Deformation Bones only | 开启 | 模型含有形态键时,这是 Godot 的必需设置,同时会排除控制骨骼 |
Data > Skinning > Bone influences | 4 | Godot 的兼容蒙皮模式为“4 Influences” |
Data > Compression | 关闭 | Godot:“不支持必需扩展 ‘KHR_draco_mesh_compression’” |
Animation > Animation mode | Actions | 每个已存入 NLA 的动作都会成为一个 Godot 动画 |
Animation > Reset pose bones between actions | 开启 | “当某些动画没有为部分骨骼设置关键帧时需要启用” |
Animation > Optimize Animation Size | 开启 | “当所有关键帧都相同时移除重复关键帧” |
进入 Godot 的两条路径:直接导入 .blend 或导出 GLB
Godot 4 支持“glTF 2.0(推荐)”、.blend、Collada、OBJ 和 FBX。.blend 路径“通过调用 Blender,以透明方式导出为 glTF(需要安装 Blender)”,因此两条路径最终都会进入同一个导入器。
直接导入 .blend
可用格式页面明确列出了相关要求。它“需要 Blender 3.0 或更高版本”,并推荐使用 3.5 或更高版本,“因为其中包含许多对 glTF 导出器的修复”;还必须使用“从 blender.org 下载的 Blender 官方版本,而不是 Linux 发行版软件包或 Flatpak”。你“必须在打开 Godot 编辑器之前安装 Blender”。如果 Blender 位于默认位置,Godot 会自动找到它。否则,请设置 Editor Settings > Filesystem > Import > Blender > Blender Path。这样做的好处是迭代更快:“你可以在 Blender 中保存场景,切换回 Godot,然后立即看到更改”,而且无需提交导出副本。
随后,“导入”面板会显示一个 Blender 专用区域:Nodes > Visible(All、Visible Only 或 Renderable)、Modifiers、Meshes > Skins(4 Influences (Compatible) 或 All Influences,“Godot 中最多支持 8 个”)、Materials > Unpack Enabled——它会把原始图像写入 Godot 文件系统,并且“应保持勾选”——以及 Animation > Group Tracks,用于将已存入 NLA 的动作保持为独立动画。取消勾选最后一项后,“所有当前分配的动作都会合并为一个 glTF 动画”。
应避免使用它的情况:文档直言,“在项目中使用 .blend 文件会要求所有团队成员都安装 Blender”,而且这种导入方式“也无法用于 Android 和 Web 编辑器,因为这些平台无法调用外部程序”。全新克隆的项目在安装 Blender 前不会导入任何内容,因此构建机器也需要安装 Blender,而且你只能使用 Godot 在面板中公开的导出器选项。如果不希望 Godot 处理项目中的 .blend 文件,请在高级“项目设置”中关闭 Filesystem > Import > Blender > Enabled。
导出 GLB
Blender 的导出器提供三种形式。glTF Binary (.glb) 是“单个 .glb 文件,其中会将所有网格数据、图像纹理和相关信息打包到一个二进制文件中”。glTF Separate 会写出一个 .gltf、一个 .bin 和若干独立图像文件,手册警告说,“共享这种格式时,必须将所有这些独立文件作为一组一起共享”。glTF Embedded 会把所有内容以 Base64 编码进 JSON,手册称其为“所有可用形式中效率最低的一种”。Godot 文档给出了选择 Separate 的两个理由:需要基于文本的场景以便查看版本控制差异,或者需要将纹理文件与材质分开。“如果两者都不需要,使用 glTF 二进制文件即可。”请选择 GLB。
为什么不使用 FBX、Collada 或旧版 ESCN 导出器
Godot 4 中的 FBX 分为两个时代。4.3 之前使用的是 FBX2glTF 导入器,文档指出,它“需要安装一个链接到专有 FBX SDK 的外部程序”,因此 Godot 无法随附该程序,你也必须自行设置 Filesystem > Import > FBX > FBX2glTFPath。自 Godot 4.3(2024 年 8 月)起,内置的 ufbx 库可以直接读取 FBX,“不再需要下载外部 FBX2glTF 转换器”。所以 FBX 现在能用了,但它比 glTF 多了一道转换步骤,而且同一篇文章还警告,除非将 Apply Scalings 设置为 FBX Units Scale,否则 Blender 的 FBX 导出器默认会以 100 倍缩放写出对象。如果你必须使用 FBX,可以选择第三方插件 Better FBX Importer & Exporter(在 Superhive 上销量超过 12,600 份,单席位 $25,支持 Blender 3.6 至 5.1);它之所以存在,是因为用作者的话说,Blender 原生 FBX 在处理其他软件包生成的文件时“经常失败”。但对于 Godot,你完全不需要这些。
Collada 更逊一筹:Blender 的内置导出器“无法正常满足游戏引擎的需求,不应直接使用”,尽管简单的静态场景或许可以正常导入。OBJ“不支持蒙皮、动画、UV2 或 PBR 材质”。而为 Godot 3 写出 .escn 文件的 Godot Blender Exporter,其自己的文档页面也说明,它“在 Godot 4.x 中不再维护或受支持”。如果某篇教程要求你安装它,那篇教程针对的是 Godot 3。
坐标轴、米制单位与应用变换
有三套约定需要保持一致,其中两套已经相同。glTF 2.0 规范指出,“glTF 将 +Y 定义为上方、+Z 定义为前方、-X 定义为右方”,“glTF 资产的正面朝向 +Z”,并且“所有线性距离均以米为单位”。Godot 的模型导出注意事项页面说明,Godot“使用右手坐标系,以 Y 轴为上方,并以 -Z 轴作为摄像机的前进方向”,因此具有朝向的资产应面向 +Z;同时,“Godot 的所有 3D 内容都使用公制,1 单位等于 1 米”。Blender 是其中的异类,它以 Z 轴为上方,而导出器的 Transform > +Y Up 选项(“按照 glTF 约定,以 +Y 为上方进行导出”)会完成坐标转换。请保持启用。关闭它,是让模型侧躺下来最快的方法。
前方朝向则需要在建模时处理。Godot 文档将其换算为:“在 Blender 中,这意味着对资产而言,+Y 是后方,-Y 是前方。”让角色朝向 Blender 的 -Y 轴建模(默认正视图,即小键盘 1,会看向角色的正面),导入 Godot 后它就会朝向 +Z,这也符合启用 use_model_front 的 look_at 以及 Vector3.MODEL_* 常量的预期。朝向 +Y 建模的角色,在第一次接入移动代码时就会倒着走。
缩放比看起来简单。导出器没有单位选项:一个 Blender 单位会变成一 glTF 米。Blender 在 Properties > Scene > Units 中的 Unit Scale“只会影响用户界面中显示的数值,不会影响内部行为”,因此,即使厘米制场景的 Unit Scale 设置为 0.01,导出时仍会写出原始数值。保留默认公制设置,将人物做成约 1.8 单位高,Godot 就会与你的尺寸一致。如果下载的模型大了 100 倍,请在对象模式中缩放并应用变换,或者使用导入面板中的 Apply Root Scale;它“会直接应用于网格和动画,同时将根节点的缩放保持为默认值 (1, 1, 1)”。
每次都要应用变换。Object > Apply > All Transforms(Ctrl-A)会将旋转和缩放烘焙进顶点,Blender 手册也指出:“建议在绑定骨骼和制作动画之前应用变换。”Godot 出于“避免编辑器中 3D 选择出现问题”的考虑也提出了同样的要求,其重定向文档还点明了具体故障:“从 Blender 导出、但未执行 ‘Apply Transform’ 的 glTF”会为骨架添加节点变换,之后只能由导入选项 Apply Node Transform 撤销。还要确保“导出前已将骨架重置为 T 姿势或默认静止姿势”。在动作中途导出的网格,会把该姿势烘焙进蒙皮。
按照对话框中的顺序配置导出设置
选择 File > Export > glTF 2.0 (.glb/.gltf),将 Format 设为 glTF Binary,并启用 Include > Selected Objects。摄像机和 Punctual Lights 保持关闭,因为 Godot 建议“导入场景后,在 Godot 编辑器中设计场景光照”。上表列出了完整设置。以下四项设置值得解释其原因。
Data > Mesh > Apply Modifiers。Godot“可以在导入时对网格进行三角化,但结果可能无法预测或不正确,尤其是包含 N 边形时”,其解决方案是“为对象添加 Triangulate 修改器,并确保导出对话框中已勾选 Apply Modifiers”。如果有任何材质使用法线贴图,请启用 Tangents;否则,Godot 的 Ensure Tangents 导入选项会在导入时使用 Mikktspace 生成切线。
Data > Armature > Export Deformation Bones only。Godot 文档中有一则警告:如果模型带有混合形状(形态键),此项“必须配置为 Enabled”,因为“仍然导出非变形骨骼会导致错误的着色”。它还会移除控制绑定中携带的辅助骨骼。保持启用 Use Rest Position Armature,让静止姿势而非当前帧成为关节的静止状态。
关闭 Data > Compression。Draco 选项会写入 KHR_draco_mesh_compression 扩展,而 Godot 导入器会拒绝该扩展,并报错 GLTF: Can't import file, required extension 'KHR_draco_mesh_compression' is not supported(问题 #73738)。Godot 会在导入时以自己的方式压缩网格,因此你不会损失什么。
启用 Animation > Reset pose bones between actions。手册指出,当“某些动画中的部分骨骼没有关键帧”时,该选项是必需的;否则,在待机动画中没有关键帧的骨骼会继承行走动画最后留下的姿势。当动作从第 1 帧开始时,Set all glTF Animation starting at 0“对于循环动画可能很有用”。
在 Godot 端,导入面板的默认设置基本正确。Root Type 应继承自 Node3D,否则你会“失去直接在 3D 编辑器中定位节点的能力”。Animation > FPS 会将曲线烘焙为点,而且“通常没有必要设置到 30 FPS 以上”。glTF > Embedded Texture Handling 决定如何处理 GLB 内的图像:Extract Textures 会将它们提取为图像文件,文档称这样可以获得“更小的文件大小,并更灵活地控制导入选项”;两个 Embed 选项则会将图像保留在场景内部。
导入提示:Godot 从对象名称中读取的后缀
这是 Godot 最古老也最好用的技巧。glTF 节点名称就是 Blender 对象名称,而名称后缀页面列出了导入器会处理的后缀。将一面墙命名为 Wall-col,导入时就会生成网格,并附带一个静态碰撞子节点。无需在 Godot 中手动点击设置,而且每次重新导入后都能保留。
其中两个提示的作用比卡片上能写下的更多。-colonly“会在导入时移除网格,并改为创建 StaticBody3D 碰撞”,这正是将手工制作的低多边形碰撞网格与可见网格一同交付的方法:为它建模,将其命名为 Room_collision-colonly,最终只有物理碰撞会保留下来。而 -noimp 会移除任意类型的“节点和动画”,因此参考几何体和临时动作可以继续留在 .blend 中,而不会进入游戏。 动画提示规则比较特殊。“源 3D 文件中,名称以 loop 或 cycle 标记开头或结尾的动画片段,将作为启用了循环标志的 Godot 动画导入。与上面介绍的其他后缀不同,这里不要求使用连字符。”Walk_loop、loop_walk 和 WalkCycle 都符合规则。
如果你不想改名称,高级导入设置对话框(双击文件,或点击“导入”面板中的 Advanced…)可以对每个节点完成同样的设置:Skip Import、Generate > Physics,其中包括 Body Type(Static、Dynamic、Area)和 Shape Type(静态关卡几何体使用 Trimesh,动态物体使用基本体或 Decompose Convex),以及 Generate > NavMesh 和 Generate > Occluder。如果同一个模型会频繁重新导入,或者要在多个项目之间共享,使用名称更有优势,因为这些设置会随文件一起传递。
动画:动作、NLA 轨道与循环
Blender 导出器默认的 Actions 模式有一条规则,绝大多数动画缺失问题都是由它引起的。手册中写道:“如果一个动作是某个对象的活动动作,或已存放到一条 NLA 轨道中(例如使用动作编辑器中的 Stash 或 Push Down 按钮),它就会被导出。未以这两种方式之一与对象关联的动作不会被导出。如果有多个动作需要导出,请确保将它们全部存放到 NLA 轨道中!”在摄影表中打开动作编辑器,逐个选择要导出的动作,然后按 Stash(或 Push Down)。每个动作最终都会位于独立的 NLA 轨道上,并成为一个以该动作命名的 Godot 动画。你可以重命名 NLA 轨道来覆盖这个名称。还有一项版本差异需要注意:“在 Blender 4.4 之前,轨道会根据名称合并。随着 Blender 4.4 引入分槽动作,这一默认行为也发生了变化。现在,轨道会根据其使用的动作合并,而不是根据名称合并。”
只有三类动画能够顺利导出:“对象变换(位置、旋转、缩放)”、“姿势骨骼”和“形态键值”。动画材质、灯光、修改器和物理效果都不会导出,因此需要将它们烘焙,或在 Godot 中重新制作。
是否循环由 Godot 决定,而不是由文件决定。glTF 规范“只定义动画关键帧的存储方式,因此不定义任何运行时行为,例如播放顺序、自动开始和循环”。所以 Godot 会读取名称:“在 Blender 中,需要使用 NLA 编辑器,并以 loop 或 cycle 作为动作名称的前缀或后缀。”如果忘了设置,可以在 AnimationPlayer 面板中选择该动画,然后设置其 Loop Mode。Animation 类提供 None(“动画将停止播放”)、Linear(“在不改变播放方向的情况下重复播放”)和 Ping-Pong(“到达两端时,在正向播放与反向播放之间交替重复”)。
Godot 会把所有内容放入导入根节点下的一个 AnimationPlayer,其中通过 AnimationLibrary 保存各个动画片段。要让多个角色共享同一套动画,请在“文件系统”面板中选择 GLB,并将其导入模式改为 Animation Library。这样“无需复制动画数据,就能让多个角色使用同一套动画”。再配合下面介绍的重定向选项,即可让这些动画片段适配并不完全相同的骨架。
材质与纹理
Blender 导出器只支持一种着色器。手册中写道:“导出器支持金属度/粗糙度 PBR(核心 glTF)和无光照(KHR_materials_unlit)材质。它会根据 Blender 材质中能够识别的节点构建 glTF 材质。”基础颜色来自 Principled BSDF 的 Base Color 输入,可以是颜色样本,也可以是连接到该输入的图像纹理。金属度和粗糙度可以来自滑块,也可以来自同一张图像,其中“金属度值编码在蓝色(B)通道中,粗糙度值编码在绿色(G)通道中”;使用 Separate RGB 节点拆分通道,并将图像纹理的 Color Space 设置为 Non-Color。法线贴图需要经过设为 Tangent Space 的 Normal Map 节点,并同样使用 Non-Color。自发光连接到 Emission 输入。除此之外的任何内容,例如噪声纹理、颜色渐变、两个着色器的混合,在 glTF 中都不存在;Godot 文档也补充说明,“Blender 程序化材质可能无法正常工作”。请先将程序化效果烘焙为图像。
在 Godot 端,这些内容会导入为 StandardMaterial3D,其文档描述了相同的通道打包方式:“遮蔽、粗糙度和金属度不再分别使用独立的设置和纹理,而是使用一张 ORM 纹理。”法线贴图必须为“OpenGL 风格”(+Y 朝上),这正是 glTF 和 Blender 的 Normal Map 节点生成的格式,因此无需翻转。色彩空间遵循你在 Blender 中设置的规则:基础颜色图像保持为 sRGB,数据贴图使用 Non-Color。如果设置反了,粗糙度贴图甚至在进入 Godot 之前就会受到伽马变换影响。
“纹理缺失”通常只有几种原因。你导出了分离式 glTF,却只移动了 .gltf,把 .bin 和图像文件留在了原处。你使用 .blend 导入,并将 Materials > Export Materials 设置为 Named Placeholder 或 Placeholder;文档说明,在这种情况下“必须手动重新分配纹理”。导出器中的 Data > Material > Materials 仍设为 Placeholder。图像纹理节点指向的文件连 Blender 本身都找不到(视口中显示为洋红色),所以没有任何内容可供打包。或者,该材质是程序化材质。使用 GLB、Export 和图像纹理即可解决以上五种问题。
还有两个容易让人意外的问题。背面剔除:“默认情况下,Blender 材质禁用背面剔除,并会导出材质以匹配其在 Blender 中的渲染效果。这意味着 Godot 中材质的剔除模式会设置为 Disabled”,因此所有背面都会被渲染。对于任何封闭表面,请在 Blender 材质的“设置”面板中勾选 Backface Culling。其次是透明度:导出器会根据连接到 Alpha 插槽的内容选择 Opaque、Mask 或 Blend,Godot 则将其映射到自身的 Transparency 模式。对于树叶和格栅,请使用 Math 节点对 Alpha 值取整,使其导出为 Mask;Godot 渲染这种模式的开销远低于 Alpha 混合。
如果想在 Godot 中编辑材质,又不希望下次重新导入时丢失修改,请在“高级导入设置”对话框中使用 Actions… > Extract Materials。Godot“在重新导入源 3D 场景时,不会覆盖对已提取材质所做的更改”,但如果在 Blender 中重命名材质,链接就会失效。
骨架:Skeleton3D、骨骼名称与重定向
骨架会导入为 Skeleton3D,它“提供用于管理骨骼层级结构的接口,包括姿势、静止姿势和动画”;蒙皮网格则作为指向该骨架的 MeshInstance3D 子节点。Godot 的重定向文档解释了 Blender 绑定中的问题:“从 Blender 输出的 glTF 模型,其骨骼会使用‘编辑骨骼方向’作为骨骼静止旋转。”因此,即使两个 Blender 角色具有相同的骨骼名称,它们的静止姿势仍可能不同,而在其中一个角色上制作的动画可能会让另一个角色发生扭曲。
解决方案已经内置于导入器中。在“高级导入设置”中选择 Skeleton3D 节点,右侧面板会显示一个 Retarget 部分,其中只有一个 bone_map 属性。创建一个 BoneMap,为其指定 SkeletonProfileHumanoid 配置,“设置 SkeletonProfile 后将自动执行映射”。该配置是 Godot 的标准人形骨架,包含分为四组的 56 根骨骼(Body、Face、LeftHand、RightHand),并且是只读的。骨骼名称包括 Hips、Spine、Chest、UpperChest、Neck、Head、LeftUpperArm、LeftLowerArm、LeftHand、LeftUpperLeg、LeftLowerLeg、LeftFoot。其参考姿势为面向 +Z 的 T 字姿势。自动映射“使用骨骼名称进行模式匹配。因此,我们建议为骨骼使用常见的英文名称。”请将骨骼命名为 upper_arm.L 或 LeftUpperArm,而不是 Bone.014,并检查映射中是否出现洋红色按钮;这表示“存在缺失、重复或父子关系错误的映射”。
接下来是 Rest Fixer 选项。Overwrite Axis 会重写每根骨骼的静止姿势,使其与配置一致;文档称其为“在 Godot 4 中共享动画时最重要的选项”,同时警告说,如果“外部设置的原始骨骼静止姿势非常重要”,它“可能产生糟糕的结果”。Fix Silhouette 会将模型调整为配置的 T 字姿势;它“对 T 字姿势模型无需启用,但对 A 字姿势模型应当启用”。Apply Node Transform 用于修复坐标轴章节中提到的未应用变换问题。Normalize Position Tracks 会根据胯部高度缩放根运动,使高矮不同的角色能够共享同一段行走动画而不会出现脚部滑动。在 Remove Tracks 下,文档建议对共享的 AnimationLibrary 启用 Except Bone Transform、Unimportant Positions 和 Unmapped Bones;如果场景中的配饰也带有动画,则应保持禁用。
给 Blender 用户的一条绑定建议:无论骨架来自 Rigify、Auto-Rig Pro 还是其他自动绑定工具,都应启用 Export Deformation Bones only 导出,让控制骨骼保留在 Blender 中;以静止姿势导出,并保留 Mixamo 风格绑定使用的英文骨骼名称(Hips、Spine、LeftArm),因为自动映射器正是根据这些名称进行模式匹配。
症状、原因与修复方法
下面是更长的列表,其中也包括卡片里放不下的问题。
| Godot 中的症状 | 原因 | 解决方法 |
|---|---|---|
| 模型侧躺或旋转了 90 度 | 未应用旋转,或关闭了 +Y Up | Object > Apply > All Transforms,保持开启 +Y Up |
角色倒着走,look_at 朝向相反方向 | 在 Blender 中建模时朝向 +Y | 让模型朝向 -Y(Blender 前视图)。Godot:“资产的正面是 -Y” |
| 大或小了 100 倍 | 按厘米尺度建模,修改了 Unit Scale | 1 Blender 单位 = 1 米,缩放并应用,或在“导入”面板中使用 Apply Root Scale |
required extension 'KHR_draco_mesh_compression' is not supported | 开启了 Data > Compression | 将其关闭并重新导出,或使用 gltf-transform 解压现有文件 |
| 缺少某个动画 | 动作未激活或暂存、名称中含有 -noimp,或关闭了 Animation > Import | 在 Action Editor 中暂存动作,检查名称并勾选 Import |
| 动画播放一次后停止 | 没有 loop/cycle 标记 | 将动作重命名为 Walk_loop,或在 Godot 动画上设置 Loop Mode |
| 待机姿势继承了行走动画中的某条肢体姿势 | 未设关键帧的骨骼状态在动作之间延续 | 勾选 Reset pose bones between actions |
| 模型呈灰色,没有纹理 | 移动分离式 glTF 时没有附带图像、材质设为 Placeholder 或 Named Placeholder、使用了程序化节点,或源图像缺失 | 使用 GLB、Materials: Export,并在 Principled BSDF 上使用图像纹理 |
| 内侧面可见,或性能下降 | Blender 默认关闭背面剔除,因此 Godot 的剔除模式为 Disabled | 在 Blender 材质设置中勾选 Backface Culling |
| 形态键的着色不正确 | 导出了非变形骨骼 | Data > Armature > Export Deformation Bones only |
| 骨架出现多余变换,动画发生偏移 | 导出骨架前没有应用变换 | 在 Blender 中使用 Ctrl-A,或在导入时使用 Rest Fixer > Apply Node Transform |
| 共享动画导致肢体扭曲 | 骨骼静置姿势与配置文件不同 | 使用 SkeletonProfileHumanoid 的 BoneMap、Overwrite Axis,A 姿势使用 Fix Silhouette |
| 共享行走动画时脚部滑动 | 胯部高度不同 | Normalize Position Tracks |
| 表面呈棱面或法线贴图异常 | 未应用修改器,或没有切线 | 导出时开启 Apply Modifiers、Tangents,或导入时开启 Ensure Tangents |
| 关卡几何体没有碰撞 | 没有提示标记,也未生成物理对象 | 使用 -col 后缀,或通过 Generate > Physics 选择 Trimesh |
.blend 完全无法导入 | 未安装 Blender 或找不到 Blender | 从 blender.org 安装,在 Filesystem > Import > Blender > Blender Path 中设置路径,然后重启编辑器 |
检查清单
每次导出前从上到下执行一遍。大多数步骤只需按一个快捷键。
- 在 Blender 中,只选择应当随文件发布的所有内容,不要多选其他内容。删除或隐藏参考网格,或者在其名称中加入
-noimp。 - 让角色和道具朝向
-Y。按小键盘 1 时应该能看到角色的正面。 - 检查
Properties > Scene > Units是否采用公制且Unit Scale为 1.0,同时角色高度是否约为 1.8 单位。 - 对每个网格和骨架执行
Object > Apply > All Transforms(Ctrl-A)。 - 将骨架置于静置姿势。Godot:“导出前,请确保骨架已重置为 T 姿势或默认静置姿势”。
- 如果模型中有 n 边形,请添加 Triangulate 修改器。确认每种材质都使用带图像纹理的 Principled BSDF,数据贴图设为
Non-Color,并为封闭表面勾选Backface Culling。 - 打开 Action Editor,对希望在 Godot 中使用的每个动作执行
Stash。循环动作的名称中应包含loop或cycle。 - 使用导入提示重命名对象:关卡几何体使用
-col,道具使用-convcol,会掉落的物体使用-rigid。 - 选择
File > Export > glTF 2.0。Format:glTF Binary。开启Include > Selected Objects。开启+Y Up。开启Apply Modifiers。Materials:Export。开启Export Deformation Bones only。关闭Compression。Animation mode:Actions,并开启Reset pose bones between actions。 - 将
.glb放入 Godot 项目文件夹,然后点击返回编辑器。Godot 会在窗口重新获得焦点时执行导入。 - 在“导入”面板中,将
Root Type设为一种Node3D类型,将Animation > FPS设为 Blender 的帧率;如果希望为每张图像单独设置压缩选项,请将glTF > Embedded Texture Handling设为Extract Textures。 - 打开“高级导入设置”。检查动画列表,为缺少循环设置的动画设置循环模式;如果要共享动画,请在
Skeleton3D上添加BoneMap;如果要在 Godot 中编辑材质,请使用Extract Materials。 - 实例化场景,按下播放,然后弯曲一侧手肘。如果这里看起来正确,构建后的版本也会正确显示。
一键方案:Cinevva Rig 中的 Godot 预设
第 9 到第 11 步是人们一天中第三次导出时最容易出错的部分,因为某个复选框可能悄悄发生变化。Cinevva Rig 插件将这些步骤整合进一个预设。在写入任何内容之前,它会执行文件大小分析,将预估文件拆分为几何体、纹理、动画和形态键几部分,因此在 Godot 加载文件之前,你就能看出一个 80 MB 的导出文件究竟是受 4K 纹理影响,还是受未采样动画影响。Godot 预设随后会导出 GLB,启用 +Y Up,不使用 Draco(因为 Godot 4 可以直接、可靠地导入普通 glTF),将纹理限制为 2048 px,并开启动画大小优化。与普通的 Blender GLB 导出相比,其预设在四个真实模型上生成的文件分别缩小了 68%、89%、92% 和 98%,其中大部分收益来自纹理尺寸限制,而不是网格处理技巧。
Blender 用户需要了解的重点是:导出功能和 260 个 CC0 动画片段无需密钥、账户或网络连接即可在你自己的电脑上使用。售价 $29 的首发版密钥解锁的是绑定功能;一次性下载约 2.4 GB 的引擎后,该功能同样在本地离线运行,并且不限制绑定次数。它支持 Windows、macOS 和 Linux 上的 Blender 4.2 及更新版本,以标准扩展的形式安装;当前版本为 0.4.0,发布于 2026 年 9 月 5 日。如果你更愿意保留自己的工作流,上面的检查清单就是该预设实际执行的全部内容,而 GLB 查看器可以在你将结果交给 Godot 之前显示其场景图、骨架和动画列表。
常见问题
如何将 Blender 文件导入 Godot 4?
有两种方式。将 .blend 保存到 Godot 项目文件夹中,Godot 会调用 Blender 的 glTF 导出器来导入它;这要求安装 Blender 3.0 或更高版本(建议使用 3.5+),并确保可在 Editor Settings > Filesystem > Import > Blender > Blender Path 中找到 Blender。你也可以通过 File > Export > glTF 2.0 导出 .glb,然后将其放入项目。GLB 无需队友安装 Blender,并且适用于所有编辑器平台。
从 Blender 导入 Godot 应该使用 glTF 还是 FBX?
使用 glTF,并采用单个 .glb 文件。Godot 文档将 glTF 2.0 列为推荐格式,.blend 导入的底层实际上也使用 glTF。自 Godot 4.3 起,FBX 可通过内置的 ufbx 导入器工作;在此之前则需要外部 FBX2glTF 程序,但它会增加一道转换步骤,而且 Blender 的 FBX 导出器默认会应用 100 倍缩放。只有下游工具明确要求时才使用 FBX。
为什么我的 Blender 模型在 Godot 中尺寸不正确?
Godot 将 1 单位视为 1 米,glTF 也是如此;无论场景的 Unit Scale 如何,Blender 导出器都会将 1 Blender 单位写为 1 米,因为该设置只会改变界面显示的单位。按厘米数值构建的模型导入后会大 100 倍。将人形模型缩放至约 1.8 单位,使用 Ctrl-A 应用缩放并重新导出,或者在 Godot 的“导入”面板中使用 Apply Root Scale。
如何将 Blender 动画导入 Godot 4 并让它们循环?
在 Action Editor 中将每个动作暂存到一条 NLA 轨道,因为导出器只会写入已激活或已暂存的动作。导出时将 Animation mode 设为 Actions,每个动作就会成为导入后 AnimationPlayer 中的一段动画。若要循环,请在动作名称开头或结尾加入 loop 或 cycle(例如 Walk_loop),Godot 会在导入时设置循环标志;也可以之后将动画的 Loop Mode 设为 Linear。
Godot 导入中的 -col 和 -rigid 是什么意思?
它们是 Godot 从节点名称中读取的导入提示。-col 会添加一个子 StaticBody3D,并创建与网格匹配的三角网格碰撞形状;-convcol 改用凸形状;-colonly 会丢弃网格,只保留碰撞;-rigid 则会将网格导入为 RigidBody3D。在 Blender 中将它们添加到对象名称后,每次重新导入都能保留物理设置。
为什么从 Blender 导入 Godot 后纹理会缺失?
通常有五种原因:你导出了分离式 glTF,却只复制了 .gltf;导出器的 Materials 选项设为 Placeholder;.blend 导入的 Export Materials 设为 Named Placeholder;材质使用了 glTF 无法存储的程序化节点;或者 Image Texture 节点指向了 Blender 找不到的文件。请使用 Materials: Export 导出 GLB,并将图像纹理连接到 Principled BSDF。
Godot 4 会为 Blender 骨架使用 Skeleton3D 吗?
可以。Blender 骨架会导入为一个 Skeleton3D 节点,蒙皮网格会成为其 MeshInstance3D 子节点,而动作会成为 AnimationPlayer 上的动画。若要在角色之间共享动画,请在高级导入设置中为 Skeleton3D 指定使用 SkeletonProfileHumanoid 配置的 BoneMap,并启用 Overwrite Axis,因为即使骨骼名称一致,不同 Blender 绑定中的骨骼静止姿态也会有所不同。
相关内容
- Blender 到 Unity 导出检查清单:同一问题的 FBX 解决方案,包括 100 倍缩放和 Humanoid Avatar 映射
- Blender 到 Unreal 导出检查清单:厘米单位、Z 轴向上、骨骼轴,以及重定向到 UE5 Mannequin
- Godot 与 Unity:哪个更适合制作网页游戏(2026):如果你仍在选择游戏引擎
- 如何为网页优化 GLB 文件:纹理上限、量化,以及何时值得使用 Draco 或 Meshopt
- GLB 查看器与 glTF 检查器:在导入 Godot 之前,检查导出文件的场景图、材质、骨架和动画
- Cinevva Blender 绑定工具:在 Blender 的同一面板中为 Godot 完成绑定、动画制作和导出