-
Notifications
You must be signed in to change notification settings - Fork 4
Description
3D场景是由各种模型组合而成的,这些模型通常使用3D建模软件进行制作。模型制作完成后,需要导入到引擎中使用。
一个模型中包含Mesh网格信息和材质信息。网格信息定义了模型的大小、形状,材质决定了模型的外观是什么颜色、有什么图案。Mesh信息可以类比成一个人的高矮胖瘦的形状轮廓,贴图材质就是ta身上穿的衣服。
一、模型文件格式
在Unity中,我们通常使用fbx格式的模型。
Unity支持两种不同类型的模型文件:
• 交换格式:比如fbx、obj格式。大多数的3D建模软件都能导出这种通用的格式。
• 原生格式:比如3ds Max对应的.max文件。如果使用这种格式的文件,必须在电脑上安装对应的建模软件才能导入使用。Unity在导入过程中会调用建模软件将模型转换为fbx格式。
两种类型各有优缺点
1.交换格式
Unity支持.fbx,.dae(Collada),.3ds,.dxf,.obj和.skp格式的文件。
优点:
• 可以按需导入模型的部分或全部
• 导出的文件通常比建模软件原生格式文件小。
• 建模软件都可以导出这些交换格式,所以即使Unity不直接支持你的建模软件,你也可以将模型用交换格式导入Unity中使用。
• 导出后,你可以将导出的3D文件(.fbx,.obj)重新导入3D建模软件,确保所有信息都已正确导出。
缺点:
• 修改源文件后,需要重新导出交换格式文件,然后导入Unity
• 由于源文件和交换格式文件是分开的,你需要管理版本的一致性
2.原生格式
Unity可以使用以下3D建模软件的原生格式:

实际上,Unity在导入这些原生格式时,会调用对应的建模软件将原生格式文件转换为.fbx文件。
优点:
• 如果原始模型更改,Unity会自动重新导入该文件,无需管理两个版本
缺点:
• 所有使用该工程的电脑上都要安装对应的3D建模软件并且保证版本一致。如果版本不一致可能会导致错误或意外行为。
• 原生格式文件可能因包含不必要的数据而变得臃肿。
• 大文件导入会很慢,因为在将模型导入到Unity中时,后台会运行对应的3D建模软件来转换成fbx文件。
• 在导入过程中,Unity将原生文件转换为.fbx格式。这使得难以验证.fbx数据的正确性并定位问题。
注意:除非在计算机上安装了相应的3D建模软件,否则保存为.ma,.mb,.max,.c4d或.blend文件的资源无法导入。这意味着在Unity项目中工作的每个人都必须安装相同版本的软件。
二、贴图导入
模型的贴图有两种方式导入到Unity中:
• 导出fbx时选中Embed Media,将贴图嵌入到fbx文件中。这时将fbx文件导入unity后,贴图也会随之导入,但是这种方式会大幅增加fbx文件的大小,不方便工程管理(不推荐)
• 贴图单独导入(推荐)
1.贴图搜索规则
导入模型时,模型文件的材质信息中会包含所需贴图的贴图文件名信息,Unity按照如下规则搜索匹配贴图:
1、搜索与模型文件同级的Textures目录
2、搜索模型文件的所有父目录中的Textures目录(依次向上级目录直至根目录)
3、搜索整个工程中的所有贴图(如果工程中有同名的贴图,可能会导致搜索匹配错误)

如上图所示,导入MainCastle模型时,会优先查找1位置的Textures文件夹,如果没有找到对应贴图,继续查找2、3处的Textures文件夹,如果还没找到就搜索整个工程的所有贴图。
三、模型导入最佳实践
1、在3D建模软件中将模型导出为fbx格式,fbx导出时不要选择内嵌贴图(导出时不要勾选Embed Media)
2、在Unity工程中创建好合适的目录结构,先将模型所需的所有贴图导入到Textures文件夹中
3、再导入fbx模型文件
使用这种方式,模型导入时搜索贴图的速度最快,可以减少导入的时间。另外不容易出现模型无法找到贴图的情况。一定要先导入贴图,再导入模型。