4、资产导入与管理:导入FBX/OBJ模型、导入贴图与材质、使用Content Browser组织资产

好,咱们进入第四章。这一章聊的是资产导入,说白了就是怎么把你在Maya、Blender或者3ds Max里做好的东西,顺顺利利地搬进Unreal里。我见过太多项目,前期模型做得漂漂亮亮,结果一进引擎就各种崩、材质丢失、坐标轴乱飞。嗯,这章就是来治这个病的。

4.1 导入FBX/OBJ模型——别让坐标轴坑了你

我个人习惯,99%的情况都用FBX。OBJ虽然通用,但它不支持骨骼、动画、顶点颜色这些信息。你要是只导个静态石块,OBJ凑合能用;但凡涉及角色、道具、带UV动画的东西,老老实实用FBX。

注意: FBX导入时,Unreal默认使用“Z轴向上”。如果你在Maya里用的是Y轴向上(Maya默认就是Y轴向上),导入时一定要在FBX导入选项里把“Import Uniform Scale”和“Transform”下的“Force Front XAxis”之类的选项调对。否则模型会侧躺在地上,像个喝醉的巨人。

具体操作很简单:把FBX文件直接拖进Content Browser,或者点击Import按钮。弹出来的FBX Import Options窗口,我建议你重点关注这几个地方:

  • Mesh:勾上“Combine Meshes”吗?如果你希望引擎里是一个整体,就勾;如果你需要保留子物体层级(比如一个机械臂的各个关节),就别勾。我在项目中遇到过,把角色的身体、衣服、武器全合并成一个Mesh,结果后期想单独换武器材质,还得重新拆,麻烦得很。
  • Transform:确认“Import Translation”和“Import Rotation”都是0。除非你有特殊需求,否则别动。
  • Material:建议勾选“Create Material Instance”吗?我个人不勾。我习惯导入后手动建材质实例,这样更可控。引擎自动生成的材质往往命名混乱,后期找起来想哭。
小技巧: 如果你导入的是高模(比如几百万面),记得在导入选项里把“LOD Group”设为“HighDetail”。Unreal会自动帮你生成LOD,但默认的LOD策略可能太激进,导致远处看模型细节丢失。我曾经有个项目,远处看雕像像一坨泥巴,就是因为LOD Group没选对。

4.2 导入贴图与材质——贴图命名决定你的发际线

贴图导入,说白了就是拖进去。但这里有个大坑:贴图命名不规范,后期材质连起来像在破案

我建议你养成一套命名习惯。比如:

  • T_Wall_Stone_D — 漫反射贴图
  • T_Wall_Stone_N — 法线贴图
  • T_Wall_Stone_R — 粗糙度贴图
  • T_Wall_Stone_M — 金属度贴图

Unreal会自动识别后缀(_D, _N, _R, _M等),并在导入时帮你自动分组。你想想看,如果你随便命名成“texture1.png”、“texture2.png”,引擎根本不知道哪个是法线哪个是漫反射,你还得手动去设置Texture Group,浪费时间。

核心要点: 贴图导入后,记得在贴图属性里设置正确的“Texture Group”。比如法线贴图选“NormalMap”,漫反射选“World”。这会影响引擎的压缩方式和内存占用。我见过有人把所有贴图都设为“World”,结果法线贴图被压缩得全是锯齿,画面直接崩了。

材质方面,我建议你直接创建材质实例(Material Instance),而不是每次都改父材质。父材质(Master Material)里放好参数接口,子材质实例只调数值。这样你改一个父材质,所有实例自动更新。嗯,这招在大型项目里特别管用。

// 一个简单的父材质参数示例(在材质编辑器里):
// 参数名:BaseColor, Roughness, Metallic, Normal
// 类型:Vector3, Scalar, Scalar, Texture2D
// 然后材质实例里直接调这些参数即可

4.3 使用Content Browser组织资产——文件夹结构就是你的大脑皮层

Content Browser,说白了就是你的资产仓库。仓库乱不乱,直接决定你找东西快不快。我见过最夸张的项目,所有资产全扔在Content根目录下,几千个文件混在一起,找个材质得翻五分钟。嗯,那项目后来重构了。

我个人习惯的文件夹结构是这样的:

文件夹 用途
Meshes 存放所有静态网格体、骨骼网格体
Textures 存放所有贴图,按子类别分(如Environment, Characters, Props)
Materials 存放材质和材质实例,按功能分(如Master, Instance, Decal)
Animations 存放动画序列、混合空间、动画蓝图
Blueprints 存放蓝图脚本,按系统分(如Player, AI, UI)
Levels 存放关卡文件
Audio 存放音效、音乐、对话

你还可以在每个大类下再建子文件夹。比如Meshes/Characters/HeroMeshes/Characters/Enemy。这样找东西就像翻抽屉,一层一层下去,清晰得很。

避坑指南: 我曾经有个项目,团队里有人把贴图直接放在Meshes文件夹里,结果贴图和模型混在一起,后期想批量替换贴图根本找不到。后来我定了个规矩:每个资产类型必须进对应的文件夹,不允许跨类型混放。嗯,从那以后,团队找资产的速度快了一倍。

另外,Content Browser里有个好东西叫“Collections”。你可以把不同文件夹里的资产拖进同一个Collection里,比如“Level1_Props”、“Cutscene_Assets”。这样你不需要移动文件,就能快速访问一组相关资产。我个人习惯,每个过场动画关卡都建一个专属Collection,里面放该关卡用到的所有模型、材质、动画。找起来特别快。

4.4 总结一下

资产导入和管理,说白了就是三个字:规范、规范、规范。命名规范、文件夹规范、导入设置规范。你前期花10分钟把结构搭好,后期能省下10小时找资产的时间。我见过太多项目,前期图省事,后期重构到崩溃。

下一章,咱们聊聊材质系统。嗯,那才是真正让画面“活”起来的地方。