Unity3D 美术资源 制作规范

作者:雨辰 发布于:2014-5-23 16:15 Friday 分类:Unity3D

制作规范

一.模型制作

场景模型

1.       减少模型上的材质数量,将不同材质的mesh合并在一起,并不会有性能上的优化,Draw Call还是会把他们当做多个渲染批次,正确的方法是让一个物体,只有一张贴图,最多允许将一个物体上带alpha通道跟不带alpha的分成两个(比如树)

 

2.       静态物体创建时顶点少于500

 

3.  检查模型轴心是否正确,文件单位是否厘米,是否归于原点,需要平滑的模型是否Smooting Groups设定平滑值。

 

4.  同场景的模型可以尽量整合在一张贴图上,然后让模型共用,同场景贴图不会因为不在摄像机视锥范围内而不去加载。

 

5.  第一个场景发现场景直接被导出成完整的几个FBX文件,不利于进行Frustum Culling

角色模型

1.       角色所有的动画都应包含在一个FBX文件中,不能根据动画的不同单独存储。应全部动画在一个时间轴上导出,在Unity中切分动作。

2.       某些角色模型需使用Transparent/Texture_Z_NoCull材质才能显示正确,这是完全错误的。需要做三角面剔除。

3.       角色持枪不应直接替换模型,应增加不同持枪动作和挂节点。以达到切换效果。

 

 

二.3DMax文件导出(FBX                             

1.导出前注意检查模型相关信息(同上)

2. 导出时无动画的FBX场景文件,注意取消animation选项。

1-1

 

3. 摄像机和灯光选项,在动画导出时不需勾选cameralights(如图1-2

1-2

 

.导入unity的模型设置                             

1.导入的模型在Model下的Mesh  Compression改为Medium,压缩模型大小。如图2-1

2-1

2.勾选Generate Lightmap Uvs,不勾选无法用在lightmap烘焙自动展开的第二套UV,并将切线Tangents改为None。不应用Tangent。如图2-2

2-2

3.将不存在骨骼动画的模型文件Gig下的Animation Type关掉改为None。如图2-3,注意:在unity中对模型调动画,关掉Animation Type不对其造成影响。

2-3

4.       如果模型存在骨骼动画信息,在Rig设置下将Animation Type改为Legacy,然后将AnimationsAnim.Compression改为Keyframe Reduction and Compression,循环动画将Wrap Mode改为Loop

5.       人形角色设置为Generic模式,在Unity中切分动作。

 

注:场景动态物体要小于300面,对于顶点数在300以内的可移动物体,只要使用相同的材质,就会组成Batch。这叫做Dynamic Batching

 

静态物体不要附加Anination组件,虽然对结果影响不大,但会增加CPU开销。(关掉Animation Type,预设就不会自动生成animation组件)

 

 

 

四.unity贴图材质设置                                 

1.将贴图的Texture Type类型改为Advanced,其他设置如图3-1

3-1 图片上的选项

2如图3-2Max Size设定图片尺寸

3-2

 

3.   模型材质无alpha通道的贴图为默认的diffuse,带alpha通道的贴图材质shader改为:Transparent/Cutout/Diffuse,如图3-3。或者是Moble/Transparent/Vertex Color,如图3-4。两者区别为:Transparent/Cutout/Diffuse亮度有限,灯光,环境光会对其造成影响,lightmap烘焙有效果。Moble/Transparent/Vertex Color为顶点着色,不会受到灯光环境光影响。(注意:顶点着色的shader也不受环境雾影响,lightmap烘焙无效果。)根据需求选择合适材质。

3-3  更多应用于需要后配效果的主要应用于树冠,带alpha的树叶

3-4  更多应用于需要高亮,不受光的物体,主要用于如背景图(现在的天空盒)

注:地面上的模型贴图不要用带alpha通道的,阴影会无法投射。

 

4.场景水的制作,材质shader应用Water\Water_RefwithTexNormal为水面纹理图,现在使用的是yw_shibalipo_shui01这张贴图如图3-5,第二张贴图Reflection Texture 为反射贴图现在应用的是fb_yuqinggong_shizi。如图3-6

            

3-5  yw_shibalipo_shui01         3-6 fb_yuqinggong_shizi

两张贴图都不是用来做水的单意外有不错的效果

 

3-7:现在场景中水材质的参数

 

5.水中倒影的制作,考虑手机平台性能水的Shader并没有实施反射,水中的倒影是将需要被当成的倒影的物体在max里渲染成2D片放置于产生倒影的位置,给一个Water\Water_RefletionTexShader,其中Reflection Alpha为透明度,其他设置参数如下图;

3-8

6.相关shader的使用,需要用diffuseMaterial,使用Mobile/Diffuse,如果模型不需要lightmapping,或者在新的场景没有公用,推荐改为Mobile/VertexLit。(新)

注:1.如果在其他场景觉得这个效果不合适,记得要复制出新的材质球进行修改

2.如果无效果记得在摄像机上添加相关脚本(后面详说)

3.不让水穿帮,记得在下面都会有一个带有材质的面片Mesh

4.更多的推荐使用Moble/Transparent/Vertex Color,他的效率高于Transparent/Cutout/Diffuse(新)

 

. Scene的制作                                       

1.创建新场景可以通过快捷键Ctrl+N,或者是FileNew Scene                                 

 

2.terrain地形创建要在地形设定里根据需要修改地形大小(如64*6432*32),

4-1

 

注意:地形文件并不等同于scene文件,如果将一个scene文件复制修改,对地形的修改同样影响复制前的scene文件。

4.地形笔刷的贴图,控制在五种以内,(推荐越少越好)过多的笔刷贴图涉及到,shader  Compatibility多于四种将不支持GLES1.1  GLES2NacL虽然IOS设备暂时没有什么明显影响,但在之后开发版本中(例如Androidwindow phone,)会有显示错误,甚至跳出问题。

 

5.Render Setting里设置场景的雾效值跟天光亮度,如图4-2勾选Fog,场景产生雾效果,将Fog Mode改为Linear,其他设置如颜色值参考下图4-2

  

         4-2                   Ambient Light颜色值       Fog Color颜色值

 

注:Render Setting设定在提交程序Scene文件后在程序哪需要重新设置。

 

6.拼合场景:将需要的Object,拖入场景调整,创建空的GameObject快捷键Ctrl+Shift+N,将场景中相同类型的物体拖入空的GameObject下,并将GameObject重新命名如图4-3,为某场景所需要的树整合

4-3

 

7.场景摄像机裁切跟天空颜色根据场景不同分别设置,摄像机Far设定值3570

4-4 摄像机裁切位置

 

9.最后将场景所需要的所有场景物体跟地形文件Terrain整合在命名SceneGameObject之下,Main Camera不在场景文件之内。

 

11.将场景中需要lightmap烘焙的的物体,或者同屏复制较多的物体(同材质模型),勾选Static

独立的模型物体,没有重复的,但需要lightmap,烘焙完后去掉Static选项。

 

注:1.带有骨骼动画,Kanimation的不要勾选Static,勾选后无法播放动画。

2.并不是所有模型勾选Static都会有优化。

 

六.场景组织                                          

建议:

1.       场景资源按章节划分,场景文件名以代表的地点命名,不再是数字编号

2.       章节中多个场景的共享资源放在一个文件夹内,使用的不同资源放在各自的文件下,方便以后打包,进行资源的动态更新。

.场景烘焙Lightmap                                     

1.首先创建场景灯光在Create OtherDirectional Light,位置如图所示6-1,场景灯光通常使用平行光来模拟太阳光,根据场景需要还可以继续创建点光源。

6-1

 

2.windowlightmapping打开lightmapping烘焙面板.首先是Object面板,这个面板可以对场景文件(模型),灯光,系统Terrain分别设置.

Object面板                                             

1.首先是场景文件(模型),lightmap只对静态物体即勾选过Static的模型产生效果,所以只有再此面板勾选过Light Static的物体才会有效果。图6-2

 

2.Scale In Lightmap光照图比率它(只作用于可渲染网格)特别大的数值将分配给可渲染网格更大的分辨率。但太大会让图集数量变多,最终分辨率比例(光照图缩放)*(物体世界坐标空间所占面积)*全局分辨率烘培设置)如果设置为0物体将不被烘培。(但是它依旧对其他的物体有影响)推荐(0.001-1)默认1

 

3.Atlas为图集信息, -如果Lock Atlas(锁定图集)选项没有开启那么这些参数将自动更新(烘焙后)。如果Lock Atlas(锁定图集)选项开启,这些参数将不会自动编辑。但是你可以手动设置他们。(不推荐对他进行设置,默认即可)

 

选择网格物体出现的选项。图6-2

 

 

 

灯光选项,基本设定如颜色,强度都与灯光本身信息同步,修改Bounce Intensity值,物体的颜色互相影响,不推荐太大1-3即可.

Shadow Angle 阴影角度:(只影响平行光)增加这个值将会得到一个比较柔和的阴影-增加灯光阴影覆盖角度范围的计算。

  Shadow Samples 阴影采样如果你将阴影半径或者角度设置为大于0的值,增加阴影采样值能得到一个比较好的结果。高采样值将消除半影中中的噪点。

6-2选择灯光出现的面板

系统Terrain设置,默认即可不必对其进行修改

 

Bake                                                   

基本参数设置如图,将Mode改为Single LightmapsQuality改为HighSky Light Intensity范围最好在0-0.5之间0表示禁用Sky Light

 

Ambient Occlusion环境阻光,平时所说的AO,开启后物体相接的地方会有一个比较好的阴影,根据需要设置基础调整值请参考 图6-3

 

Resolution越大图集越多,现在场景设定为10-15

6-3 烘焙的基本设置

 

Maps面板                                              

这个面板为烘焙好的lightmap图,Array Size为烘焙好的阴影图数量,在自己本机上这个面板基本不用再做操作,但再将sence文件传给程序后,需要手动去添加lightmap图。

6-4 maps面板

 

Lightmap在烘焙完成后,会生成与sence文件同名的文件夹,文件夹里是lightmap计算的光子图,我们最后需要手动将图片放置于Res_MSSceneLightMap文件夹下。

6-5 lightmap文件位置

 

注:注意控制光子图大小最好是512*512,不要超过1024*1024

 

需要注意事项

注意:1.让一个mesh尽量用一张贴图,带alpha通道可以区分成两个。

 

2.地形文件并不等同于sencne文件,如果将一个scene文件复制修改,对地形的修改同样影响复制前的sencne文件。

 

3.场景动态物体要小于300面,对于顶点数在300以内的可移动物体,只要使用相同的材

质就会组成Batch。这叫做Dynamic Batching

 

4.地面上的模型贴图不要用带alpha通道的,阴影会无法投射。

 

5.如果在其他场景觉得这个效果不合适,记得要复制出新的材质球进行修改。

 

6.如果场景水无效果记得在摄像机上添加相关脚本GenWaterDepthMode

 

7.Render Setting设定在SVN提交程序Scene文件后在程序哪需要重新设置。

 

8.带有骨骼动画,Kanimation的都不要勾选Static,勾选后无法播放动画。

 

9.并不是所有模型勾选Static都会有优化。

 

10.注意图片尺寸,必要的可以在unity里调整。比如光子图.(不要大于1024*1024大小)

 

11.制作时尽可能减少带alpha通道的Texture,手机端图形显示方面对alpha的处理,性能相对吃紧。

 

12.像小石头跟小草这类型的小物体不要参与阻挡。

 

13.更多的推荐使用Moble/Transparent/Vertex Color,他的效率高于Transparent/Cutout/Diffuse(新)

 

14.Play状态下对场景进行修改,需要将文件做预设

15.更多的推荐使用Moble/Transparent/Vertex Color,他的效率高于Transparent/Cutout/Diffuse(新)

 

16.需要用diffuseMaterial,使用Mobile/Diffuse,如果模型不需要lightmapping,或者在新的场景没有公用,推荐改为Mobile/VertexLit。(新)

 

 

 

 

标签: Unity3D-优化性能 Unity3D-Editer

发表评论:

雨辰 joyimp|@2011-2018 京ICP备16030765号