🎨 美术资源出图规范与速查表
本文档旨在统一美术资源的输出格式,确保导入 Unity 后无需二次调整即可直接使用。⚡ 速查表 (Cheat Sheet)
| 资源类型 | 命名前缀 | 格式 | 关键设置 | 备注 |
|---|---|---|---|---|
| 模型 (Static) | SM_ | .fbx | Scale=1, Y-Up, Z-Forward | 轴心点在底部中心 |
| 模型 (Skinned) | SK_ | .fbx | Bake Animation=On | 包含骨骼,轴心点在脚底 |
| 贴图 (Albedo) | T_ | .tga / .png | sRGB=On | 必须是 2 的幂次方 (POT) |
| 贴图 (Normal) | T_ … _N | .tga / .png | sRGB=Off | 必须标记为 Normal Map |
| 贴图 (Mask) | T_ … _M | .tga / .png | sRGB=Off | R=Metal, G=Occ, B=Smooth |
| UI 图标 | UI_Icon_ | .png | Alpha Is Transparency=On | 必须留 1px 透明边缘 |
| UI 背景 | UI_Bg_ | .png | 9-Slice 预留 | 检查压缩格式 (ASTC/ETC2) |
1. 命名规范 (Naming Conventions)
严禁使用中文、空格或特殊字符。使用 PascalCase (大驼峰) 或 Snake_Case (下划线)。1.1 模型 (Meshes)
- 静态网格:
SM_[Name]_[Variant](e.g.,SM_Tree_Birch_01) - 骨骼网格:
SK_[Name](e.g.,SK_Hero_Vampire)
1.2 贴图 (Textures)
- 基础色:
T_[Name]_D(Diffuse/Albedo) - 法线:
T_[Name]_N(Normal) - 混合遮罩:
T_[Name]_M(Mask - R:Metallic, G:Occlusion, B:Smoothness) - 自发光:
T_[Name]_E(Emissive)
1.3 材质 (Materials)
M_[Name](e.g.,M_Tree_Bark)- 如果是实例材质:
MI_[Name](Material Instance)
2. 模型出图规则 (Model Rules)
2.1 软件导出设置 (Software Export Settings)
为了避免“人为失误”,强烈建议使用脚本一键导出。A. Blender (推荐使用 Python 脚本)
Blender 的坐标系坑最大 (Z-Up),必须强制转换。-
手动设置:
Apply Scalings: FBX All (关键!否则 Scale 会变成 100)Forward: -Z ForwardUp: Y UpApply Unit: CheckedBake Animation: 仅对骨骼模型勾选
-
自动化脚本 (Save as
export_unity_fbx.py):
C. 进阶:Blender “万能洗澡” 流程 (Universal Cleaner)
Q: 我能随便拖一个 FBX 进 Blender,然后用上面的脚本导出就完美了吗? A: 不完全是。 脚本能保证格式 (Scale/Axis) 正确,但无法自动修复内容 (Pivot/Hierarchy)。 如果你的目标是清洗外部杂乱资源,请在运行导出脚本前,手动执行以下“洗澡”步骤:-
清理层级 (Clear Hierarchy):
- 很多外部 FBX 有多层空物体 (Empty Nodes)。
- 操作: 选中模型 ->
Alt+P->Clear and Keep Transformation(解除父子关系)。
-
重置轴心 (Reset Pivot):
- 操作: 选中模型 ->
Right Click->Set Origin->Origin to Geometry(或者手动移到底部)。 - 注意: 确保模型位于世界坐标 (0,0,0)。
- 操作: 选中模型 ->
-
检查 UV:
- 外部模型的 UV 往往是乱的。进入
UV Editing快速看一眼。
- 外部模型的 UV 往往是乱的。进入
💡 脚本增强: 上面的 Python 脚本包含 transform_apply,这会自动修复大部分缩放和旋转问题,但不会修复轴心点位置。
D. 3ds Max
Max 的单位设置最容易乱。- System Unit Setup: 必须设为 Meters (1 Unit = 1.0 Meters)。不要只改 Display Unit!
- FBX Export:
Up Axis: Y-UpScale Factor: Automatic (确保显示为 1.0)Embed Media: Uncheck (不要把贴图包进 FBX,Unity 无法复用)
- 单位: 1 Unit = 1 Meter.
- 门高: 2.5m
- 角色高: 1.7m ~ 1.8m
2.2 轴心点 (Pivot)
- 地面物体 (树、石头、建筑): 底部中心 (Bottom Center) (0, 0, 0)。
- 悬挂物体 (吊灯): 顶部中心 (Top Center)。
- 手持物体 (剑、枪): 握把中心 (Handle Center)。
2.3 UV 与顶点色
- UV1: 必须在 0-1 范围内。
- UV2: 如果需要烘焙光照贴图,必须展开 UV2,且 UV Island 之间保留至少 2px 间隙。
- 顶点色:
- R: 用于混合材质 (如树干混合苔藓)。
- G: 用于风动权重 (0=静止, 1=随风摆动)。
3. 贴图出图规则 (Texture Rules)
3.1 尺寸 (Dimensions)
- 必须是 POT (Power of Two): 256, 512, 1024, 2048, 4096.
- 非正方形允许: 512x1024 是合法的,但 500x500 是非法的。
- 例外 (UI Sprites):
- 如果 UI 图片会被打入 Sprite Atlas (图集),则单张图片不需要是 POT。
- Unity 会自动将它们打包成一张大的 POT 图集。
- 注意: 如果是
UITexture(不打图集的大图,如背景),则必须是 POT。
- 移动端建议:
- 角色: 1024 ~ 2048
- 场景物件: 512 ~ 1024
- 特效: 256 ~ 512
3.2 颜色空间 (Color Space)
- sRGB (Color Data): 勾选 sRGB。
- Albedo (Diffuse), Emissive.
- Linear (Math Data): 取消勾选 sRGB。
- Normal Map, Metallic, Roughness, Ambient Occlusion.
4. UI 图标工作流:1px 边缘法则
4.1 为什么要留 1px 空白?
在游戏引擎中,UI 图标通常会被打包成图集 (Atlas)。当图标进行缩放或旋转时,采样器会读取相邻像素 (Bilinear Filtering)。- 如果没有边缘: 采样器会读取到隔壁图标的像素,导致图标边缘出现奇怪的杂色线条 (Bleeding)。
- 如果有 1px 透明边缘: 采样器读取到透明像素,完美过渡。
4.2 Photoshop 快速导出动作 (Action)
不要手动去缩放画布!使用 PS 动作自动化:- Trim:
Image->Trim->Transparent Pixels(切掉多余空白)。 - Canvas Size: 勾选
Relative,Width =2px, Height =2px(上下左右各加 1px)。 - Export:
Save for Web-> PNG-24 (带透明通道)。
脚本化方案: 也可以使用 Python (Pillow 库) 批量处理文件夹下的所有 PNG。