关于模型及贴图的细节及优化
(移动开发)
1.对于静态物体,控制网格数,一般在500以下,不要添加动画组件。
2.题图尽量不要超过1024,不同的模型,可以的话,尽量用一个贴图上,一个材质球,一个网格。贴图的拼合有助于提高渲染效率。
3.对于动态物体,比如主角,敌人,尽量把面片控制在300-2000之间。
4.对于贴图格式,如果需要Alpha通道的,可以用png,或则tga格式,如果没有的话,可以采用jpg方便压缩。Mipmap可以提高效率。
5.UV尽量画在0~1之间,这样可以不用导入的时候在UV转换。
6.远处的背景可以采用一个面解决。
7.结合网格,结合贴图,结合材质球,共享动画
8.每个角色尽量使用一个Skinned Mesh Renderer,这是因为当角色仅有一个 Skinned Mesh Renderer 时, Unity 会 使用可见性裁剪和包围体更新的方法来优化角色的运动,而这种优化只有在角色仅含有一个 Skinned Mesh Renderer 时才会启动。角色的面数一般不要超过1500,骨骼数量少于30就好,角色Material数量一般1~2个为最佳。
9.删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。如Box底面、贴着墙壁物体的背面等。
10.模型在max导入的时候,对于单位设置,设置系统单位
11.保持模型面与面之间的距离推荐最小间距为当前场景最大尺度的二千分之一。例如:在制作室内场景时,物体的面与面之间距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm。如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。在建模初期一定要注意检查共面、漏面和反面的情况,这些造成了场景中模型闪烁的原因。
12.可以复制的物体尽量复制。如果一个1000个面的物体,烘焙好之后复制出去100个,那么他所消耗的资源,基本上和一个物体所消耗的资源一样多。
13.建模时最好采用Editable Poly面片建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用Editable Mesh 在最终烘焙时可能会出现三角面的情况。如图所示。
14.静态物体的动画,比如喷水池,可以采用纹理动画,而不是用脚本控制。
15.建筑模型为了增加真实感,可以同时添加一个反射材质图。
16.下雨的地方地面可以用在材质球添加法线贴图序列帧图播放
17.手机平台上,模型的顶点限制在100000个以内为佳,PC平台上,模型顶点数量控制在几百万个以内为佳。
18.减少模型UV接缝和硬边的数量
19.合并使用相同材质球的多个模型,如果使用的不是同一个材质球,合并无意义,这样可以减少Draw Calls的数量。通常在手机平台上控制在数百内为佳(200一下),PC控制几千内为佳(3000一下),当然硬件提升则另说。
20.尽可能减少模型骨骼数量
21.避免使用IK动画
22. 尽可能压缩贴图,如果不能则尽可能设置贴图为16位,而不是32位
23尽可能为贴图使用MipMaps功能,除非贴图从事1:1渲染显示,比如UI或2D游戏
24.如果合适,首选Mobile或Unlit的Shader
25.不需要工作的模型隐藏,减少CPU消耗
26.雾会对性能造成较大影响
27.尽可能减少像素光、阴影、反射的使用,这些功能导致模型被渲染多次,加重CPU的负担
28.尽可能的使用LightMap
29.在手机平台,带有透明效果的Shader会对性能造成较大影响。