FBX保存了模型和纹理,没有贴图,贴图作为静态资源单独存在
FBX的使用
演示:
- 选择*.fbx文件,直接拖到层级窗口
- 观察节点图标
- 选中节点,观察Inspector中的操作按钮
select
可以focus资源路径
贴图路径
- 有的模型需要贴图文件
- 贴图文件路径是约定好的
- 与fbx相同目录,或者同级Texture目录
材质替换
重映射
演示:
- 选中*.fbx资源文件
- 在Inspector中切到Materials属性
- Use Embedded Materials
- On Demand Remap:映射新的材质
- 点 Apply 应用设置
或使用外部材质
- 选中fbx文件
- Location: Use External Materials(使用外部材质)
- 点 Apply 应用,则将内嵌材质解压缩到Materials目录
- 直接修改Materials目录下的材质文件
答疑
核心问题解答
1. “Use Embedded Materials” 和 “Use External Materials” 的根本区别是什么?
-
Use Embedded Materials (使用嵌入式材质):
- 本质:材质数据被“锁”在FBX文件内部。Unity在运行时从FBX文件中读取这些材质信息。
- 优点:资源管理简单,所有东西都打包在一个FBX里,便于移动和分享。
- 缺点:无法直接修改。您看到的是材质的“只读”副本。任何修改(如
On Demand Remap
)都只是在这个FBX实例的层级进行映射,并不会改变FBX源文件。
-
Use External Materials (使用外部材质):
- 本质:将FBX内部“嵌入”的材质提取出来,生成独立的Unity材质文件(.mat),并保存在您项目的
Materials
文件夹(或其他指定位置)中。 - 优点:可以自由编辑。您可以像编辑任何普通Unity材质一样,修改它的着色器、贴图、颜色等所有属性。
- 缺点:会生成额外的材质文件,需要单独管理。
- 本质:将FBX内部“嵌入”的材质提取出来,生成独立的Unity材质文件(.mat),并保存在您项目的
2. 为什么可以“重映射”(On Demand Remap)?它的映射信息保存在哪里?
- 为什么可以:因为Unity在导入FBX时,会为每个MeshRenderer组件创建一个对材质的引用(Reference)。
On Demand Remap
功能就是允许您重新指定这个引用,让它指向另一个不同的材质球,而不是FBX内嵌的那个。 - 保存在哪里:这个重映射的关联信息并不会保存回FBX文件(FBX文件始终保持原样)。而是保存在您Unity项目的一个“元文件” 中。每个资源文件(如
YourModel.fbx
)都会有一个对应的、由Unity自动生成的YourModel.fbx.meta
文件。这个.meta文件记录了该资源在Unity项目中的导入设置和材质重映射关系。
3. 这个操作会修改原始的FBX文件吗?
绝对不会。
无论是 On Demand Remap
还是 Use External Materials
后点击 Apply
,Unity都不会以任何方式修改您原始的FBX源文件。所有的修改和映射关系都只保存在您Unity项目的内部(即上面提到的 .meta
文件和提取出来的材质文件)。这是一个非常重要的特性,保证了您的原始美术资源永远不会被引擎污染。
4. 解压后,是不是整个物体都使用解压后的资源?
是的,完全正确。
当您选择 Use External Materials
并点击 Apply
后,Unity会执行以下操作:
- 为FBX中每一个内嵌材质,在您的项目目录(通常是
Materials
文件夹)中创建一个对应的外部材质文件。 - 然后,自动将FBX模型中的所有MeshRenderer组件对材质的引用,从之前的内嵌材质,全部切换为指向新创建的外部材质文件。
- 从此,该模型在场景中渲染时,将100%使用这些外部材质。您对外部材质做的任何修改都会立刻生效。
总结与类比
您可以这样理解:
把FBX文件想象成一个礼品盒。
- 嵌入式材质:礼品盒里自带了一个不可修改的玩具(材质)。
- 重映射(On Demand Remap):您给这个礼品盒里的玩具贴了个标签,告诉别人“请把这里面的玩具看成是我指定的另一个玩具”。但盒子里的原玩具没动,只是贴了个标签。
- 外部材质(Use External Materials):您直接把礼品盒里的玩具拿出来,摆在外面(提取到Materials文件夹),然后可以随意改装它。并且以后大家都只看这个摆在外面的改装后的玩具。