3D 资源导入不是拖一个 GLB 进项目
Godot 对 glTF/GLB 支持很好,从 Blender 导出后拖进项目就能看到模型。但商业项目里,导入链路不能只靠拖文件。模型单位、轴向、材质、骨骼、动画、碰撞、LOD、命名、贴图压缩、导入预设都会影响运行时表现。一个角色在 Blender 里正确,不代表在 Godot 场景里就能稳定使用。
稳定的 3D 资产管线,要让美术知道怎么导出,让程序知道导入后得到什么,让 QA 能验证资源是否合格。glTF 是交换格式,不是项目规范本身。
flowchart TD
A[Blender 源文件] --> B[导出规范]
B --> C[GLB/glTF]
C --> D[Godot 导入预设]
D --> E[材质/贴图处理]
D --> F[骨骼/动画处理]
D --> G[碰撞/LOD 生成]
E --> H[运行时场景]
F --> H
G --> H
H --> I[自动验收场景]
单位和轴向先统一
3D 项目最怕单位混乱。一个角色 1.8 米,另一个导入后 18 米,碰撞和相机都会崩。团队要约定 Blender 单位、导出 scale、Godot 中的物理尺寸。不要靠导入后在 Godot 里手动缩放修正。
轴向也要统一。角色面向哪个方向,武器挂点朝哪里,动画根节点如何移动,都要规范。Godot 和 Blender 的坐标约定可以通过导出设置处理,但团队必须固定设置。每个美术自己调一次,运行时就会出现角色背对镜头、动画位移方向反了的问题。
可以做一个标准测试模型:带骨骼、动画、材质、挂点、碰撞。每次工具版本或导出设置变化,先导这个模型,确认结果稳定。
材质要考虑 Godot 渲染路径
Blender 里的材质节点很复杂,导入 Godot 后不一定完全一致。项目应规定可用材质特性:Base Color、Normal、Roughness、Metallic、Emission、Alpha。复杂程序化节点最好烘焙成贴图或在 Godot 里重建 Shader。
贴图命名和通道打包要统一。PBR 贴图可能把 Roughness、Metallic、AO 打包到不同通道,导入器和材质模板要知道规则。否则同一批资源有的发亮、有的发灰。
透明材质和双面材质要谨慎。Godot 中透明排序和性能会受影响。树叶、玻璃、特效可以用透明,角色主体尽量避免不必要透明。材质规范要兼顾视觉和运行成本。
碰撞体不要直接用高模
从模型自动生成碰撞很方便,但高模 Mesh 碰撞会非常贵,也可能导致角色卡住。静态场景可以用简化碰撞体,动态角色和道具更应该使用手工 Box、Capsule、Convex 简化体。
可以在 Blender 里用命名规则导出碰撞体,比如 COL_ 前缀表示碰撞,SOCKET_ 表示挂点。Godot 导入后工具脚本识别这些节点,生成运行时需要的 CollisionShape 和 Marker3D。这样美术能在源文件里维护碰撞和挂点。
碰撞体要有验收。模型视觉更新后,碰撞是否仍匹配?角色脚底是否在地面?武器挂点是否偏移?自动验收场景可以显示这些辅助形状。
动画和骨骼要控制命名
角色动画通常来自 Blender Action 或外部动作库。导入后动画名要稳定,循环标记、根运动、事件帧都要可追踪。不要让导出工具生成一堆 Armature|mixamo.com|Layer0 这种不可维护名称。
骨骼命名也影响挂点和重定向。如果多个角色共用动画,骨骼层级和命名要一致。Godot 的 Skeleton3D 可以承载动画,但重定向和状态机仍需要项目规则。
动画文件可以和模型分开。角色模型一个 GLB,动作若干 GLB 或动画库。这样更新动作不必重复提交大贴图。但分包也会增加依赖管理,资源服务要知道哪些动作属于哪个角色。
LOD 和导入预设
3D 移动端或大场景项目需要 LOD。LOD 可以在 DCC 工具里制作,也可以由工具生成。Godot 运行时如何切换 LOD,要和场景系统和画质档位配合。不要等到性能出问题再临时砍模型面数。
导入预设应版本化。贴图压缩、法线导入、动画采样、材质生成都属于工程设置。项目可以为角色、场景、道具定义不同导入预设,避免每个文件手动设置。
构建前扫描导入结果:面数、材质数、贴图大小、骨骼数、动画长度、碰撞体数量。超过预算直接报告。3D 资源成本如果不量化,很快会失控。
小结
Godot glTF 导入的关键,是把 Blender 到运行时的每一步变成规范和工具。统一单位轴向,限制材质特性,简化碰撞,稳定动画命名,管理 LOD 和导入预设,再用验收场景检查。拖进项目能看到模型只是开始,能稳定生产 3D 内容才是管线完成。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
我会给每个 GLB 生成一份资产报告:尺寸、面数、材质数、贴图大小、动画名、碰撞体和挂点。报告跟资源一起进评审,能让性能问题在美术提交时就被看见。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。