本文转自 Unity Connect 博主 北京琳云信息科技有限责任公司
学习模型合理导入 Unity3D 引擎
相信在游戏中,模型相当于游戏必要的元素,例如游戏的一个人物角色,我们可以称它为一个模型,今天和小编一起学习一下,导入 Unity 3d 模型,我们应该注意哪些细节!当然我们知道常用的模型都可以通过 Maya/3D Max 等三维动画软件制作的。
官方学习文档: https://docs.unity3d.com/Manual/FBXImporter-Model.html
1、模型自身规范:
1.0 所有的模型在原点创建,没有具体的特定要求下,需要以物体对象中心为轴心;
1.1 模型面数:移动端( 300-1500 个多边形达到比较好的效果) PC 端( 1500-4000 比较适宜)正常的单个物体最好控制在 1000 面以下,所有的物体面数不超过 20000 个三角面;
1.2 模型大小:模型文件做到最大的优化,对于看不到的面,我们可以采用直接删除,合并断开的点,移除孤立的点;
1.3 模型命名:命名最好做到规范化,模型在给绑定之前必须做一次重置变换;
1.4 模型复制:如果物体可以复制的话,就尽量复制;例如一个 500 面的物体,烘培好之后复制出去 50 个,那么他所消耗资源基本和一个物体消耗的资源基本是一样;
1.5 模型单位:在建模型之前设定好单位,在 Unity3d 中用到的单位设置必须要一样,模型和模型之间的比例要正确,和程序导入的单位要一致,如果到程序中单位需要缩放也尽可能统一调整缩放比例,统一单位为米;
2、模型导入中的规范:
2.0 模型使用的材质,首先在 3d Max 和 Maya 中,不是所有的材质在 Unity3d 中都可以支持使用,只有 Standard (标准材质)和 Multi/Sub-Object (多维 /子物体材质)被 Unity3d 软件所支持。
2.1 模型贴图格式和尺寸:常用的图片格式是 .tga 和 .png (带透明通道) 、不带通道为 .jpg ,贴图的尺寸最好为 2 的 N 次方,最大的贴图尺寸不能超过 1024X1024,当然特定的要求,尺寸可以根据具体的需求而定。
2.2 模型贴图其他注意点:
2.2.0 贴图命名不要有中文字命名,并且不能有重名;
2.2.1 材质命名和物体名称最好保持一致,易于整理,材质球的父子层级的命名尽可能一致;
2.2.2 同种贴图可以使用同一个材质球;
2.2.3 带 Alpha 通道贴图图片格式最好为 tga 和 png 格式,在命名可以加 _al 加以区分;
2.2.4 模型需要通过通道处理时,在制作通道纹理,最好将透明部分改成模型的主色,这样渲染可以使有效边缘部分大颜色正确,通道纹理在程序渲染占用的资源同尺寸大普通纹理要多,通道命名也最好以 _al 结尾;
2.3 Unity 资源导入:
对于游戏中资源导入可以导入图片,网格等,Project 面板右键( Import New Asset )。
2.3.0 图片设置:
TextureType:贴图类型。
AlphafromGrayscal :使用灰度创建 Alpha,当需要 unity 为贴图创建一条 alpha 通道,使用它转换得到的灰度值来渲染透明度,可以开启它。
WrapMode:所谓的包裹模式,决定贴图会无限次平铺还是只绘制一次。Repeat 就是重复平铺。Clamp 会让贴图的边缘拉升并在改变大小时候填满任何缝隙。
FilterMode:所谓的图像过滤模式,在拉伸时候对贴图过滤,比如 [Point] 点过滤,在很近看贴图时候,可能感觉不均。Bilinear 它会时近看贴图显得模糊。Trilinear 它会在不同 mipmap 层次之间模糊。
AnisoLevel:设置各项异性过滤器的级别,同属的可以理解为当你从一个比较陡的角度来看,贴图现实的可以有多细腻,渲染的等级越高,越占内存。想要确定贴图页面会占用多大内存,可以长 X 宽,再乘以他的位深度 [bpp,每像素位数] ,如果贴图包含 mipmap,还需要扩大 1.33 倍。
2.3.1 网格设置:
网格就是那些 Maya,C4D,3DSMAX,C3D,LW 等软件导出的文件。比如导入一个 .fbx 文件。选中后,在 Inspector 面板中,我们能看到下面的属性:
ScaleFactor:缩放系数,使用这个属性在导入资源后设置其大小,调整资源在场景现实过大,或者过小的问题。
MeshCompression:网格压缩的比例( Off,Low,Medium,High )不可否认,压缩时可以节约内存的。
OptimizeMesh:为提高 GPU 性能记录网格顶点和索引。
GenerateColliders:是否在场景中让网格对象具有碰状体表现,通俗的说就是实心的,不可以穿体而过。
SwapUVs:交换 UV,当你导入一个网格对象时候,着色器可能会使用错误的 UV 通道,如果发现资源异常(比如带光照图时候),可以选中这个复选框。
Generate Lightmap UVs:为 UV2 生成光照贴图。
Normals&Tangents:该项设置计算法线切线
Normals:计算法线,import 表示使用导入的网格法线,Calculate 表示从新计算网格法线。
Tangents:计算切线,import 表示使用导入的网格切线,Calculate 表示从新计算切线。
Smoothing angle:法线平滑角度,告诉引擎在角度值为多少时候把一个边缘视为硬边缘。
Split Tangents:是否分离切线,如果模型在场景渲染后现实 UV 缝隙,要开启它。
Materials:
Import Materials:是否导入材质,默认选中。
Material Naming:材质名字生成模式。
Material Search:材质搜索方案。
3、模型在制作软件中具体设置:
3.0 贴图烘培设置:在进行 Completemap 烘培方式,贴图通道和物体 UV 坐标通道必须为 1 通道。
3.1 lightingMap 烘培设置时,和 completemap 设置有些不同,贴图通道和物体 UV 坐标必须为 3 通道,烘培时灯光的阴影方式为 adv.raytraced 高级光线跟踪阴影,背景色要改白色,可以避免黑边的情况,主要物件的贴图 UV 必须手动展开;
3.2 模型绑定及动画
3.2.0 骨骼必须为 IK、CAT、BIP 三类,Unity 不认虚拟动画,单个物体骨骼数量不超过 60 个;
3.2.1 动画帧率、帧数的控制,一般情况下每秒 10 帧,一个动画尽量控制 1 秒内完成;
3.3 模型导出
3.3.0 将烘培材质改为标准材质球,通道为 1,自发光 100% ;
3.3.1 合并顶点,删除多余的材质球(不重要贴图缩小);
3.3.2 物体名称、材质球名、贴图名保持一致;
3.3.3 按要求导出的 .fbx (检查是否要按组导出,导出 fbx 后,再重新导入 3D Max / Maya 中动画是否正确)
.....
上面虽然没有图片的展示,但是属于实践中的文字总结,希望能帮助到小伙伴们。
原文链接: https://connect.unity.com/p/unity3d-shi-yong-ji-qiao-kuai-su-xue-hui-mo-xing-he-li-dao-ru-unity3d-yin-qing?app=true 欢迎大家戳上方原文链接,下载 Unity 官方技术社区 app,在线技术答疑,发现更多干货~