如何用 Blender 做 3D 建模:从第一个模型到常用快捷键与导出
Blender 免费,对硬件要求也不高,但第一周的时间主要花在熟悉以快捷键为核心的界面上,而不是做出好看的模型。本文用五分钟讲清界面分区,再走一遍第一个模型的完整流程,并说明快捷键与导出格式该怎么选。
Unity 是 Y 轴向上的左手坐标系,Blender 是 Z 轴向上的右手坐标系,中间那个文件必须同时活过这两端。两条导出路线、导入面板里真正该改的字段,以及第一次导入的修复对照表。
把模型从 Unity 挪到 Blender,不是一次格式转换,而是两个引擎之间的协商:单位、手性、材质归属,双方的理解都不一样。Unity 是 Y 轴向上、左手坐标系,Blender 是 Z 轴向上、右手坐标系,中间的 FBX 文件两种都能描述。第一次导入出的问题几乎都落在这四件事上:缩放差了 100 倍、整体转了 90 度、贴图没跟着走、骨骼留在了 Unity 里。
下面讲两条导出路线——Unity 官方发布的 FBX Exporter 包,以及通过 glTFast 走 glTF——再讲 Blender 导入面板里值得改的字段,并给出一张针对视口症状的修复对照表,最后说 Open3DAI 在这条管线里的位置。
Unity 不会保留导入模型的可用副本。拖进 Assets 的那个 .fbx、.obj 或 .blend 才是源文件,场景里看到的是 Unity 解析出来的网格,缓存在工程的 Library 目录中,那属于构建产物,不是可以交付的资产。如果模型来自 Asset Store 资源包、客户或生成工具,原始文件通常还在工程里,先把它找出来再考虑导出器。
| 导出选项 | 写进文件的内容 | 什么时候要改 |
|---|---|---|
| Format | ASCII 文本或紧凑二进制 | 发布用二进制,需要看 diff 时才用 ASCII |
| Convert Units | Unity 的米与 FBX 的厘米之间的换算 | 两端保持一致,只在单端切换就是 100 倍误差的来源 |
| Axis conversion | 文件声明的向上轴向 | 与读取端匹配,不要两端各修一次 |
| Embed media | 贴图打包进文件而非引用路径 | 文件要外发时打开,本地迭代时关掉 |
| Skinned mesh export | 骨架、权重、混合形状与动画片段 | 带骨骼的网格必须导出,缺骨架只会得到静态壳 |
Prefab 是最容易出问题的地方。Unity 的材质挂在 Renderer 上而不是网格上,一个网格被五个 Renderer 复用,导出文件里就成了五个子网格、顶点数据重复五份。LODGroup 只导出你选中的那一级,其余级别要单独导出再拼回去。脚本在运行时生成的网格只在游戏运行时存在,只有对象确实在场景里,导出器才看得见它。
资产没有骨骼或骨骼很简单,而材质很重要时,走 glTF。Unity 的 glTFast 包(com.unity.cloud.gltfast)从 5.x 起支持导出并提供 GameObjectExport 接口,编辑器菜单和构建脚本共用同一条代码路径。好处是材质保真:金属度—粗糙度与 Blender 的 Principled BSDF 几乎一一对应,GLB 又把贴图放进二进制块,不会留下指向已删除目录的引用。代价是 Shader Graph、HDRP、URP 的材质在 glTF 里没有对应表示,依赖自定义着色器的效果到 Blender 只剩一个普通表面。
| 对比项 | FBX Exporter 导出的 FBX | glTFast 导出的 glTF/GLB |
|---|---|---|
| 骨骼 | 完整骨架、权重、混合形状与动画 | 支持,但复杂绑定用 FBX 更稳 |
| 材质 | Phong 式描述,自定义着色器被拍平 | 金属度—粗糙度,最接近 Principled BSDF |
| 贴图 | 默认外部引用,可以嵌入 | 在 GLB 二进制块内,或放在文件旁边 |
| Blender 导入 | 导入器成熟,有轴向、缩放和骨骼选项 | 导入器简单;glTF 的定义就是米与 Y 轴向上 |
| 典型用途 | 任何要回到 Unity 的资产 | 静态道具、生成网格、查看器检查 |
| 导入字段 | 常见默认值 | 作用 | 什么时候要改 |
|---|---|---|---|
| Scale | 1.00 | 对所有导入长度做乘法 | 按厘米写的文件大了 100 倍时 |
| Forward / Up | -Z forward、Y up | 把 Y 轴向上的数据转到 Z 轴向上的世界 | 模型躺着或侧着进来时 |
| Apply Transform | 关闭 | 把根变换烘焙进顶点坐标 | 希望静态网格一开始就干净时 |
| Automatic Bone Orientation | 关闭 | 沿骨链重建骨骼滚转 | 带骨骼的网格导入后骨骼扭转异常时 |
FBX 里没有一个所有工具都遵守的单位字段,Unity 的导入设置里同时放着 Scale Factor 和 Convert Units 就是这个原因。表现是模型大 100 倍或小 100 倍,人的第一反应是在导入面板里改回来。这样能用,但对象上会留下未应用的缩放,之后修改器和骨架行为都会受影响。要么按正确尺寸导入,要么导入后立刻应用缩放。一个应当 1.8 米高的角色,看侧边栏的 Dimensions:显示 180 米,就说明文件是按厘米写的。
Unity 是 Y 轴向上、左手坐标系,Blender 是 Z 轴向上、右手坐标系。导入器默认的 -Z forward 与 Y up,正是把 Y 轴向上的文件立起来放进 Blender 的组合,所以模型躺着进来,说明轴向转了两次或一次都没转:导出端写的是 Z 轴向上的文件而导入端又转了一次,或者有人在一端手工改过这对参数。另外检查 Unity 层级里的负缩放:任何一级父物体上的 -1 都会镜像网格并翻转面朝向,形状看着是对的,直到打开背面剔除,表面直接消失。
| Blender 里的症状 | 最常见原因 | 处理办法 |
|---|---|---|
| 模型大 100 倍或小 100 倍 | 米与厘米在两端交错 | 把导入 Scale 设为 0.01 或 100,再应用缩放 |
| 模型躺着进来 | 轴向转了两次,或者一次都没转 | 以 -Z forward 与 Y up 重新导入 |
| 表面内外翻转 | Unity 层级里存在负缩放 | 重算法线朝外,移除被镜像的父物体 |
| 材质空白或显示洋红 | 贴图是引用而非嵌入,路径失效 | 导出时嵌入媒体,或手工重新链接图片 |
| 骨架动、网格不动 | 导出时缺少骨架 | 把骨架和网格一起导出 |
如今这条管线里的网格,越来越多是生成出来的而不是雕出来的。Open3DAI 支持文生 3D、图生 3D 和多视图输入,可以做 AI 贴图,导出 GLB、glTF、OBJ、STL、PLY、3MF,这些格式 Blender 和 Unity 都能直接读取,中间不必再转一次;同一个提示词可以交给可用的引擎各跑一遍,并排比较后再导出,周边的格式杂活由 48 个格式转换器、12 个浏览器工具和 REST API 承担。有两条限制要说清楚:生成的网格不保证封闭,也不保证可以直接打印;服务本身不做绑定、动画、重拓扑和 UV 展开,所以生成的角色仍然需要在 Blender 里手工搭骨架,之后才可能作为带蒙皮的 FBX 离开 Unity。FBX 也不在导出格式之列。
包名、引擎版本和导入默认值会随版本变化:FBX Exporter、glTFast 和 Blender 的导入面板近几年都改过名字或调整过布局,引擎可用性、积分价格和第三方条款同样会变。请对照自己安装的版本确认选项名称,并在把预算投入某条管线之前查一遍厂商页面。
不能。Unity 场景和 .unitypackage 都是 Unity 自己的序列化格式,Blender 没有对应的导入器。要么把需要的对象从场景里导出,要么解开 .unitypackage——它本身就是原始资产文件的压缩包——把里面的源 FBX 取出来。
Unity 的米和 FBX 的厘米约定没对上。把导入面板的 Scale 设为 0.01(反方向则是 100),并且马上应用缩放,不要让对象一直带着未应用的变换。
带骨骼、或者还要回 Unity 的资产用 FBX,它对骨架、权重和动画片段的承载最完整。静态道具或骨骼很简单的资产、而材质又重要时用 glTF,因为金属度—粗糙度与 Blender 的 Principled BSDF 对应得很近。
只有当模型存在于场景里、而不是 Assets 里的文件时才需要。如果原始的 .fbx 还在工程里,直接导入它更好。导出器是为场景对象、Prefab、LOD 层级和运行时生成的网格准备的。
导出时嵌入贴图,或把贴图复制到导出文件旁边,并且接受自定义着色器会被拍平成一个基础表面。导入后在 Blender 里检查材质槽,把变成占位材质的槽重新链接上。
可以,走 FBX 路线:把骨架和蒙皮网格一起选中,让骨架、权重和动画片段都被写出,导入后核对骨架修改器和骨骼朝向。约束、IK 目标和 Animation Rigging 组件在文件里没有对应物,需要在 Blender 里重建。
FBX 和 glTF 按顶点存属性,每一条 UV 接缝或硬边法线都会把一个顶点拆成多个。导入后用 Merge by Distance 把它们焊回去,再开始编辑网格。
FBX 不在它的导出格式里,导出列表是 GLB、glTF、OBJ、STL、PLY、3MF。它也不做绑定、动画、重拓扑和 UV 展开,所以需要骨架的生成网格要在 Blender 里配骨架,FBX 也在那里或 Unity 里写出。
用已知长度核对 Dimensions、应用旋转与缩放、合并接缝顶点、重算法线,以及确认材质槽里没有空槽。这五项能挡掉建模过程中后面才会冒出来的大部分意外。
Blender 的 FBX 导出器自带 Unity FBX 预设:缩放保持 1.0,应用变换,轴向交给预设处理。Unity 把一个单位当作一米,对象会以离开时的尺寸落地。
把同一份提示词或图片交给多个引擎,并排对比网格,然后导出 GLB、glTF、OBJ、STL、PLY 或 3MF。注册即赠免费积分,无需信用卡。
Blender 免费,对硬件要求也不高,但第一周的时间主要花在熟悉以快捷键为核心的界面上,而不是做出好看的模型。本文用五分钟讲清界面分区,再走一遍第一个模型的完整流程,并说明快捷键与导出格式该怎么选。
Daz Studio 能读的格式只有 OBJ、FBX、Collada 这几种。本文说明如何选择承载格式、一次把厘米比例做对,并修复最常遇到的三种故障:网格透明看不见、比例差 100 倍、贴图丢失导致表面发灰。
从编辑器里的 Surface Material Override 到运行时的 GDScript 替换,再到会让同款模型集体变色的共享资源问题,顺带把 PBR 取值与贴图导入设置讲清楚。