将网格导出至 Unity
文档用途
说明如何将 Blender 中的网格导出给 Unity 使用.
写在前面
最适合给 Unity 使用的 3D 文件格式为 .fbx, 此文档也仅涉及此格式.
参考链接 How to Export Models from Blender to Unity.
导出内容
手选导出
在场景中选中想要导出的物体后, 在导出设置中,
确保 Batch Mode 为 Off, 并勾选 Selected Objects 选项.

集合导出
将 Batch Mode 选择为 Collection, 那么所有的场景的所有 Collection 都会被导出,
每个 Collection 都会被导出成一个 .fbx 文件.

Include
在 Include 板块中, 可以选择哪些数据被导出.
大多数情况下, 我们仅需要导出网格, 那么仅勾选 Mesh 就好了.
如何多选
按住 Shift 键使用鼠标左键点击.

Geometry
Tangent 是指三角面的切线.

网格中任意的三角面都有无数条切线 (位于该三角面所在的平面), 需要有个规则从中选一条.
网格拥有被展好的 uv, 任意三角面都会位于该 uv 中, 我们选择 u 方向的切线.
因此网格的 Tangent 提供了了所有三角面与 uv 的关系.
我们从 Blender 中导出 fbx 时, 需要勾选上图中的 Tangent Space.
并在 Unity 的模型导入设置中, 将 Tangents 设置为 Import, 如下图.

另外, 如果没有从 Blender 导出 Tangent Space 信息, 有办法补救:
在 Unity 的模型导入设置中, 将 Tangents 设置为 Calculate Mikktspace, 如下图.

Transform
Position
我们希望物体的位置在 Unity 场景的世界坐标原点, 即 (0, 0, 0) 坐标点.
为此只需要在导出前, 将 Blender 中物体的 Location 设置为 (0, 0, 0) 即可.
可以使用快捷键 Alt+G 将选中的物体移动到世界坐标的原点.
Blender 中物体回到原点后的效果如下图所示, 需要注意这是局部坐标.
我们需要确保物体的中心点的位置符合预期.
例如一个人物的合理的中心点位置很可能是两只脚之间.
中心点在 Blender 中的名字是 Origin, 在 Unity 中的名字是 Pivot.
在 Unity 中, 选中的物体在 Pivot 模式下, 可以看到中心点的位置.
下图中球体的中心点 没有 位于几何中心, 这通常 不符合 预期:

为了让物体中心的位置符合预期, 我们需要在 Blender 中设置好物体的中心点.
如下图所示, 选中物体后点击鼠标右键, 在 Set Origin 中可以对中心点做设置.

Rotation
知名 3D 软件的坐标系

我们希望物体的方向正确, 这意味着:
- 模型被拖入 Unity 场景时, Transform 中的
Rotation应当为 (0, 0, 0).
因此在导出之前, 应该通过Alt+R将旋转还原, 或通过Ctrl+A应用当前的旋转. - 当
Rotation为 (0, 0, 0) 时, 物体的方向是符合预期的.
为此在 Blender 的 fbx 导出设置中, 要选择合理的轴向 (详见下文).
左图中我们可以看到, 猴头模型的前方是 -Y, 上方是 Z.
因此在右图中, 我们需要将 Forward 选择为 -Y, 将 Up 选择为 Z;


在选择了正确的轴向后, 还需要确保 Use Space Transformation 没有 被勾选.
接下来, 必须在 Unity 中修改 fbx 导入设置, 勾选 Bake Axis Conversion 选项.
如下图所示, Unity 默认没有勾选, 但可以自定义一个默认的 preset 使其被自动勾选.

Scale
我们希望导入到 Unity 中的物体的 Scale 为 (1, 1, 1), 并且希望尺寸合理.
为此仅需要在 Blender 的 fbx 导出设置中, 将 Apply Scalings 设置为 FBX All.

同时在 Unity 的 fbx 导入设置中将 Convert Units 勾选.

经测试发现, Unity 导入设置中的 Convert Units 不管是否勾选, 尺寸都不会出问题.
因此重点在于确保 Blender 的导出设置正确 (即 FBX All).
注意事项
Triangulate
所有导入 Unity 的网格面都会被转换成三角面, 至于 Unity 转换三角面的细节我们不得而知.
因此最佳实践是: 从 Blender 导出之前就确保网格的所有面都是三角面.
通过 Triangulate 修改器可以实现这一目标.
通常在 Quad Method 选为 Beauty 时, 渲染效果最好.
一定要开启 keep Normals 选项, 尤其是对于硬表面类型的网格.

另外从 Blender 3.3 版本起, 多了一个导出选项:
勾选 Triangulate Faces 之后也可以将所有的面转换为三角面.

WARNING
若勾选了 Triangulate Faces, 则无法将 Blend Shape 导出.
Blend Shape
在 Blender 中的术语为 Shape Keys, 在 Unity 中被称为 Blend Shape.Shape Keys 会带来一些限制, 例如无法使用修改器, 使用这项技术时需要考虑好得失.

在 Unity 的导入设置中勾选 Import Blend Shape.

需要按照下图设置 Blend Shape Normals, 才能避免出现奇怪的画面.
