一、模型

①减面:对场景模型减面优化是最常见的优化操作。主要是去掉对模型造型没有影响的面,用尽可能少的面数表达清楚模型的结构和造型。比如:物件非关节点及物件背面、内部不会看见的面删掉。

②合并模型:合并同一小范围内的非交互类的静态小物件,同时合并小物件的贴图。这样可以减少DRAW CALL的数量。如,一组不同大小的小草,一组大小形状不同的石头,一个书架和上面放置的很多书籍等。把这些小物件合并成一个object,贴图也合成成一张贴图。高端手机平台上draw call一般控制在300左右。

③LOD:建筑和复杂的物件用LOD模型和远处剔除来减少同屏面数。地形的LOD系统也可以对地形的面数做很大的优化。

④模型的重复利用:相同的多个物件在unity内复制使用,复制的多个物体在引擎计算上算一个物体。但也不可复制太多个,太多会对内存带来很大压力。相同的物件太多,建议把几个合并成一组做为一个Object,多做几组,再进行复制。参考②。

⑤地形优化:如果是用unity自带的地形工具制作的地形,可以用T4M插件转化成T4M格式地形,设置一个顶点值转化后可以对地形优化很多。T4M也可以设置lod模型。

以我做过的一个测试为例:优化前,地形是1000*1000的。就是(1000-1)*(1000-1)=998001(面),将近100万面。转化顶点值设为100,转化后的面为19602,才近2万面。

二、材质贴图

①贴图大小:在移动设备上的贴图最大要控制在1024和512大小,可少量使用2048大小的贴图,以1024、512大小贴图为主。

②重复贴图的使用:大面积相同材质使用1-3种贴图交替重复覆盖,通过光影变化打破贴图的重复感。

③ 小物件的贴图合并,上文有讲,单个物体的贴图最好是一张,最多不易超过3张。相同贴图的材质球统一。

④ 少用透明贴图,能不用就不要用。透明贴图非常消耗GPU资源。

⑤支持Mipmap, Mipmap 会增加游戏包体的大小和占用一定量的内存,但在游戏中Mipmap的渲染可以减少显存带宽,降低渲染压力,随着相机的推远贴图会随之切换成低像素的体贴,从而节省资源开支。过的Mipmap使用会对内存造成很大压力,因此建议只对大物件设置Mipmap。

(unity会根据相机距离由近到远生成8张像素逐渐降低的贴图,这里只截取了5张,从左往右依次是原图至Mipmap生成的低像素贴图)

⑥小场景可以用PBR材质,用PBR材质就一定要用实时灯光才有效果。大场景避免使用PBR材质,大场景尽可能用烘焙光影来达到光照效果。烘焙的场景模型就不要用法线贴图了,贴了也没效果,还占空间资源。

⑦贴图压缩,对贴图进行PVRT(Ios)或是ETC(Android)格式的压缩可以减少大量内存消耗。

⑧建议场景的材质可以用substance材质系统转成.sbsar 格式材质。 Substance材质可以大大压缩贴图数据的大小但不损失贴图质量。

如下图所示:33.8MB的.tga格式贴图制作成.Sbsar格式材质之后只有3.8MB。

三、灯光

1、灯光的数量:室外开放式大场景建议只用一盏平行光。室内场景可适当多一点,室内环境可以用reflection probe来加强反射效果。

2、场景烘焙:大场景和比较复杂的室内场景要避免实时灯光的使用。利用UNITY的烘焙系统把光影烘焙成贴图来实现光影效果。烘培贴图本身是一个浩大的工程,大场景的烘培可以选择性的去烘焙。UNITY里自动分UV功能不好控制,所以一般在max\Maya里分好第2套UV,也可以直接在max\Maya里烘焙好lightmap导入到unity里。

UNITY提供了混合模式灯光,所以我们可以用混合灯光来实现LIGHTMAP与实时灯光结合。既:一个大场景中,大件如建筑、地形占据画面较大的物件烘焙lightmap,小物件繁多,占据画面的面积很小可以不用烘焙,把灯光设置为mixed模式。

四、其他

①摄像机上少用镜头效果,有选择性的使用。

②特殊的Shader慎用。

③美术资源的优化可以从最早设定场景的时候就开始考虑。如ARPG游戏的关卡根据情况能用管道式的场景就避免设定成全开放式的室外场景。

(这是仙剑奇侠传5的场景和地图,根据剧情需要着重制作路径两边的场景,其他地方利用障碍遮挡,使玩家不能过去,就可以概括简化交代一下。)

④在陆地上玩为主的游戏就避免设计飞到空中的设计。在近空俯视场景非常耗资源。

⑤开放式大场景中从设计上就要避免有过多的可破坏性物件,场景中可交互的点要清晰,避免大而全的设计,要注意取舍。

(这也是仙剑奇侠传的一个小镇场景,可交互的点很清晰,其他建筑NPC交互就可简化制作或者不做交互。)

我做过的一个场景优化测试的数据如下:

优化前:

1、这个场景使用UNITY自带地形,上面有大量的植被草地,30多栋废弃建筑,地上和建筑上有繁多的植被野草、废纸、酒瓶、石块等,横竖大小10条街道左右,街上有大量路灯、路牌、油桶等细节。

2、场景本身用了LOD系统。

3、总体面数在200多万。小物件在15000多个。

在PC上跑起来帧数只有40多帧,在835芯片手机上画面严重卡顿,跳帧严重。

优化方案:

1、把地形用T4M插件转化成T4M格式,大规模减少远处树木植被。优化下来提高了5帧左右。

2、街道上的小物件删减和合并,原场景中界面上小物件过多,路灯过密,做了适当删减,对小范围内的小物件模型进行模型和贴图的合并。大概提高7帧左右

3、透明贴图的减少,原场景是废墟,所以建筑上用了大量的透明题图做藤蔓,对渲染消耗太大,进行适度删减,大概删掉一半,提高10帧左右。

4、对建筑,街道和大地形、大物件进行了lightmap烘焙。小物件用灯花的混合模式实时照明。大概提高30帧左右

5、减少原场景中的镜头特效。原场景中镜头特效用了7个,关掉了Antialiasing As Post Effect、Vignetting、SSAO三个镜头效果,这三个特效对画面影响较小,大概提高了10帧左右。

最终优化后面数为70多万面。FPS为100帧左右。

总结:

美术场景资源的优化主要从模型、贴图、灯光、特效等方面去着手,对应的是提高CPU、GPU、内存等硬件的使用效率。优化的细节还有很多,比如场景特效可尽量用动画去实现,避免过多的粒子特效,场景的碰撞体单独用建模去做不要用unity默认的碰撞体等等。一个游戏的后期优化是多方面的,包括场景、角色、动作、特效、音效、动画、AI及程序运算等等,场景上能多优化一点,就可以给其他资源让出一点空间。

转载于:http://gad.qq.com/article/detail/32886

Unity场景美术资源优化相关推荐

  1. Unity场景美术资源优化,可以从这几方面着手

    概述: 在游戏制作中,绝大部分游戏的场景美术资源都会占用设备相当大的储存和计算量,而且游戏运行起来还有其他如角色.动画.特效.UI.贸易和战斗交互及AI.寻路等程序系统的调用和运行.对场景美术资源进行 ...

  2. Unity项目美术资源优化篇

    本着尽量不独立造车轮的态度,嘿嘿.笔者也是在一直在学习借鉴别人的经验,在没有明确的个人设计方案之前,不如先按照别人的来.个人认为在程序学习中摸着石头过河没有照葫芦画瓢理解的快些,在明白之后再加入自己的 ...

  3. 次世代手游美术资源优化干货分享

    次世代,是日本流传过来的叫法,意思是下一个时代,未来的时代,常说的次世代科技,即指还未广泛应用的现金技术.后来这个名次变成了一个人们的习惯,将次世代变成一个名词,用来代表某类具备特定属性的游戏类型. ...

  4. unity技美27——优化项目内美术3D,2D等资源,详解unity打包体的潜规则与案例

    很多朋友美术朋友在面试中经常会被问到一类问题,就是怎么优化你的美术资源. 当我们不熟练使用unity,以级不懂得unity的潜规则时,美术能做到的仅仅是: 1优化模型面数.或者用次世代的方式制作法线贴 ...

  5. Unity 游戏性能优化(4)资源优化

    资源优化 1. 音频 1.1 音频导入设置 1.2 加载音频设置 1.3 压缩格式和质量 1.4 音频性能增强 2. 图片纹理 2.1 纹理压缩格式 2.2 纹理性能增强 2.2.1 减小纹理文件大小 ...

  6. unity 性能优化之GPU和资源优化

    Shader相关优化 众所周知,我们在unity里编写Shader使用的HLSL/CG都是高级语言,这是为了可以书写一套Shader兼容多个平台,在unity打包的时候,它会编译成对应平台可以运行的指 ...

  7. 【Unity性能优化】静态资源优化——Audio优化

    文章目录 写在前面 1. 前言 2. 使用Asset Checker进行资源检测 3. Audio优化 3.1 启用Force to Mono 3.2 压缩格式与采样率 3.3 音乐加载类型 3.4 ...

  8. unity优化—资源优化

    这节主要讲unity资源优化,先学习一个概念吧:资源管道,原始文件通过内容管道变成了一个可被Unity高效使用的中间文件 ,这不是Unity里面的一个概念,但Unity的工作行为和它很类似:Unity ...

  9. unity场景素材_[游戏素材]游戏场景环境天气变化Unity游戏素材资源

    分享最新的CG教程与素材资讯! 人人素材RRCG-专业的CG艺术交流网站 点击上方蓝字关注人人素材 本游戏资料是游戏场景环境天气变化Unity游戏素材资源,大小:143 MB ,格式:unitypac ...

最新文章

  1. Ubuntu使用过程中遇到的问题总结
  2. python爬取小说内容_使用python爬取小说全部内容
  3. java mvc模式_Java MVC模式
  4. Your CPU supports instructions that this TensorFlow binary was not compiled to use AVX AVX2
  5. struts2+hibernate+spring配置管理(一)-配置文件2
  6. Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述
  7. 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
  8. 分页offset格式_MySQL中limit分页查询性能问题分析
  9. 三.Mybatis 多对一与一对多
  10. [Swift]LeetCode831. 隐藏个人信息 | Masking Personal Information
  11. 循环数组实现队列的四种方式
  12. Ubuntu下查看cuda版本的两种方法
  13. Docker概述(一)(标贝科技)
  14. 对于von Mises distribution(冯·米塞斯分布)的一点心得
  15. 经纬度转高斯坐标 java_经纬度坐标与高斯坐标的转换代码
  16. 字符图片分割研究小结(搬运、整理、分类、汇总)(自用,持续更新中)
  17. Android获取自定义格式时区
  18. 最好的Vue组件库之Vuetify的入坑指南(持续更新中)
  19. golang 格式化占位符相关
  20. Unity导出模型为Obj文件

热门文章

  1. 【计算机网络】物理层(完整版)
  2. python 小工具 读写文件 处理文件 re
  3. 【容器运行时】一文理解 OCI、runc、containerd、docker、shim进程、cri、kubelet 之间的关系
  4. 【中国图像图形学报投稿经历】
  5. Kali网络渗透实验四
  6. 2014互联网公司招聘应届生薪资大起底
  7. java 将千分位转为数字_java让数字显示千分位 mark
  8. Hbuilder与夜神模拟器连接
  9. 【计算机游戏开发】二维游戏场景绘制
  10. 欧式几何与非欧式几何