导入 3D 模型:缩放、旋转和丢失的贴图
为什么导入的模型很小、躺着、或者一片惨白?
这不是文件坏了,而是三个程序各说各话。缩放要用 Model 标签里的 Convert Units 来修,而不是改 Transform;−90 度的旋转用 Bake Axis Conversion,或者导出前在 Blender 里 apply 一次旋转;颜色则是把贴图拷进来再按 Extract Materials 就回来了。粉色是缺 shader,不是缺贴图。
一个导进来小了一百倍、脸朝下趴着、还是一片惨白的模型,并不是文件坏了。那是三个不同的程序在「一米是多少」「哪边是上」「贴图在哪」这三件事上各执一词 —— 而每一处分歧,都该在 importer 里一次性修好,而不是去缩放场景里的物体。
太小,或者太大
Unity 以米为单位。Blender 也是米,但导出 FBX 时默认用 0.01 的缩放,于是两米高的角色到了这边只有两厘米。3ds Max 用厘米工作,同一个角色送过来就大了一百倍。
- 1
在 Project 窗口里选中模型。此时 Inspector 里显示的是 importer,不是物体 —— 标签写着 Model、Rig、Animation、Materials。
- 2
在 Model 标签里勾上 Convert Units。Unity 会读取文件自己声明的单位并做换算,这比你手动敲一个数字正确的概率高得多。
- 3
如果还是不对,Blender 文件进来太小就把 Scale Factor 设成 100,Max 文件进来太大就设成 0.01,然后按 Apply。
脸朝下趴着
Blender 以 Z 为上,Unity 以 Y 为上。本该由导出器在输出时把模型转过来,它没做的话,你拿到的就是一个绕 X 轴转了 −90 度的角色。
最好的修法在 Blender 里:导出之前先对物体 apply 旋转和缩放(Ctrl+A),并在 FBX 导出面板里把 Forward 设为 −Z、Up 设为 Y。
没法重新导出就在 Unity 里修:在 Model 标签勾上 Bake Axis Conversion。Unity 会把旋转烘进 mesh,而不是留在 Transform 上。
该避开的偏方:建一个转了 90 度的空父物体,把模型塞进去。在有东西去读 transform.forward 之前它都好使 —— 一旦读了,角色就开始横着走。
白色、灰色,或者粉色
FBX 并不带贴图。它带的是材质的名字,以及指向导出那台机器上曾经存在的图片文件的路径。Unity 把名字导进来,找不到图片,于是给你默认的白色材质。
- 1
自己把贴图文件拷进工程,放在模型旁边的一个文件夹里。
- 2
选中模型,打开 Materials 标签,把 Material Creation Mode 设成 Standard,然后按 。现在你有了可以编辑的真正的材质 asset。
- 3
把每张贴图拖进对应的槽:颜色进 Base Map,法线进 Normal Map。如果一张法线贴图没有被标记成法线,Unity 会问要不要修正 —— 选是。
关于 .blend 文件
Unity 可以直接导入 .blend,但它只是在后台启动 Blender 来做转换,所以项目里每个人都得装上版本兼容的 Blender。改成导出 FBX 并提交那个文件:导入结果一样,而且工程在一台从没装过 Blender 的机器上也能打开。