很多朋友美术朋友在面试中经常会被问到一类问题,就是怎么优化你的美术资源。
当我们不熟练使用unity,以级不懂得unity的潜规则时,美术能做到的仅仅是:
1优化模型面数、或者用次世代的方式制作法线贴图等。
2优化动画文件,导出时祛除骨骼只导出点信息.
3unity中运用灯光烘焙。
但是这些,在一个APP游戏上线并且转为小程序游戏的时候,这些都是远远不够的。并且已经起不了决定性的作用了。
字节跳动现在推出了新技术,可以直接用unity转小程序,并且兼容粒子特效、动作混合融,等unity自带的功能,这个技术很强大,但是同时却给我们的限制就是首包15MB。
那么,如果你是个普通的美术,你光靠你之前的知识做不到优化首包。但是有些东西技术又没法给你处理。这个时候怎么办呢?
那就跟我一起向着技美迈步吧,熟练了解各种市面上的插件,了解unity对文件的压缩规则。你就能做到。

下面上干货。

优化美术资源,应分为三个维度

维度1:图片压缩插件时代,现在市面上的很多插件都能把你的图片包体压缩10-100倍,(tinyPNG,快图压缩等)
维度2:了解unity的潜规则

A:描边shader会增加模型面数(Tris)
B:unity自带了一些压缩方式,熟练使用这些压缩方式(压缩方式不等于你插件压缩的图片,比如你一个图片125K,但是到了unity中由于你设置压缩参数的设置失误,会导致你打包出来的包体2MB,同一图片扩大了10倍)
C:unity自带的压缩,对方形图片,也就是128、256、1024等这样的位数压缩处理才会生效,并且效果极佳(稍后详细解释)

维度3:用unity自带渲染工具将所有可见元素3转2化并且删除原预制模型灯光烘焙图等(这里的3转2不是模型层面上的、也不是传统的unity烘焙灯光。而是所有可见层面上的,这种方法甚至比你的灯光烘焙,模型削面等更优,基本一个工程能把所有场景人物等减少三分之二的耗损)

如果你按照我的三个维度去做,你会发现,你工程里的FBX,灯光图,prefab预制体。所有的一切都不再存在,最后打包出来的只有一张图,或者一个图集。并且跟你原来的3D效果完全一样。

现在我对上述三个维度,细致整理一下怎么操作。以级举例说明,方便理解。

维度1详解:

以tinyPNG为例,这张图片原大小3.01

压缩后的大小


并且图片无损耗。这个软件有网页批量付费版,也有破解版本,还有PS插件版本。
若在此之上还想继续压缩,可以试试“图好快”工具,可以设置输出大小,并且不管你是否有透贴通道,都可以保留。

维度2详解:

在讲解之前,先插入一个知识点。经过我们三四款游戏的实际测试,高端手机排除(苹果8以上)。以低端机为例(6S,华为老款等),要在出包前,保证游戏运行时这两个地方的数据。Batches:不超过100
Tris不超过70K。那么你的游戏在低端机下就不会发生卡顿,掉帧等问题。
其中batches美术理解为你场景中出现的图片个数(美术可以这么理解,程序就是占cpu,gpu等这些)
其中Tris代表场景面数(美术可以这么理解,程序就是占cpu,gpu等这些)
这两个数据不仅对手机性能有影响,对最后的包体大小也是有影响的。美术人员无法参与打包,但是可以用这两个数值甄别自己的scence中哪些东西需要优化。

A。为什么说一些shader会增加三角面的计算,从而影响模型面数增大。
上图中我们看到了脚下的小猪与人物都用了卡通描边shaer。

当我把这个shader取消掉描边数值的时候三角面的计算会下降到47.相当于减少了一万模型面

因此当你的模型面数本来就不高,但是到unity中变高了,不妨来看看自己的shader的计算方式吧。
如果你不是程序也不爬,后面我会写一个用插件在unity里制作shader的教程,并且这个插件能自动把你的配置生成C#脚本,这种脚本程序可以直接使用。
(其实模型削面,烘焙灯光这些,现在可以忽略,因为到第三步整体3转2后,模型不存在了,灯光,灯光图等都不存在了)

B讲解一下unity自带的压缩方式,上面我们已经用压缩软件压缩过图片文件大小了,但是这并不是最终打包的大小,还要调整unity中的参数。以下图为例子。

上图中这张car2的贴图已经压缩到了400K,但是当我们拖入到unity中时。
如上图,我们会看到我们压缩过得文件,到unity里输出大小变成0.7MB,整整大了一倍,这是为什么呢?
因为unity自己会对图片进行处理。并且输出打包有自己的压缩规则。如下如图

上图中红色箭头代表压缩到PC,还是安卓,或者ios,不同的平台有不同的参数
蓝色箭头为我们对图片压缩的处理选项
max size 代表你的像素大小,有些人图片导入进来不清晰了,就是这里参数设置的比原图片低。
这里数值越小,图片压缩越小,但是会变得模糊。
comperssion为纹理渲染品质,这里调整会对压缩大小产生影响
use这行要勾选。勾选后可以调整压缩数值

上图为我们调整好之后,图片的最终输出打包大小189.5K,比原来的700K是不是小了好几倍呢?
特别注意这里的压缩还有一个潜规则
那就是unity的压缩方式必须是2的次幂。也就是说你必须把图片都变成128128、256256、1024*1024等这类的方形图。
如果出现非正方形比例,比如下图这样的压缩反而不会生效,图片最后会变得很大。所以一定要到PS里补齐图片,哪怕是透贴也可以。

维度3详解:

在以前,我们美术常用的优化资源的方法,就是给模型进行削面、并且给所有场景灯,烘焙在模型贴图上。或者在unity中烘焙光子图。灯光探针等。这种方法的弊端是仍有模型存在于场景中,并且打包时这个场景里的模型依然引用了贴图,并且多了很多烘焙好的灯光贴图。而这些,哪怕运用了插件压缩,都是不能避免的占资源,占包体,如下图

可以看到上图中我们用老方法,删除了模型多余面数,并且烘焙了场景灯。这样会生成很多灯光文件,减少的只是三角面,依然引用贴图文件,预制体,材质球,sahder。并且还+了灯光图。这样虽然能少三角面,但是对包体却很不友好。
那么我们怎么办呢?
unity自带了一个插件GenericFrameRecorder(2019有内至下载,早期版本需要网上自行下载安装包)
使用方法参照我的unity24
这个插件能直接把你的摄像机所照射到物体,输出视频,或者是png图片。并且还可以输出动态帧。如果你是个有动作的,你就输出动态帧
如果你是静态场景,那么好,他就能生成一个扣好通道的png。
这样你再执行我们的第一第二维度操作。那么你的场景是不是就变成一张,或者两张图片插出的场景了呢。类似我们VR开发中的全景场景天空盒子。下面看图
此场景是一个3D场景,做完削面跟场景灯光烘焙之后,极限是两万多三角面。
那么我们经过第三维度的方法优化一下,看看会有什么不同(见下图)

我们可以看到上图
优化后效果还是原来的效果,但是所有3D都变成了2D图片,并且只有一张图片,现在我们再重复维度一。维度二的操作我们会发现什么?是否两万面都消失了呢?


如上图,这个场景里所有的模型,以级资源都变成了这样一张或者几张图片,并且是UI图片。此图片不需要shader。是不是避免了描边shader所占的性能,那么是不是也就没有材质球了。
最根本的是如下图,现在的项目文件夹内,只有一张图,没有prefabs文件,也不需要FBX等模型文件。所有的三维相关的一切占包体资源的东西都变成了一张图。

那么现在我们打包,朋友们去试试吧,你惊喜的发现游戏包体的惊人改变。

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

  1. 详解Unity中的粒子系统Particle System (三)

    前言 上一篇我们详细讲解了有关主模块的全部内容,已经对粒子系统的基本运作有了足够的了解,本篇就来讲一下被粒子系统默认启用的Emission.Shape.Renderer模块又在粒子系统中扮演着怎么样的 ...

  2. 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一:CS反向连接上线 - 拿下Win2008 一. 使用转发代理上线创建监听器 二. 上传后 ...

  3. 《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  4. unity 手机端和编辑器下播放带有透明通道的视频详解

    unity 手机端和编辑器下播放带有透明通道的视频详解 在项目开发中,可能会涉及到视频的播放,普通的视频播放如果大家不会的请自行百度,今天主要讲解带有透明通道的视频的播放问题,尤其是在手机端的处理,下 ...

  5. 详解Unity中Time类的用法与深入探究

    前言 在游戏世界中,时间无疑是最为重要的参数,它是游戏世界能否正常运转的关键.一旦它出错,轻则卡顿,重则游戏世界崩坏.在使用Unity引擎创造的世界中,Time类无疑是必须要掌握的一个类,它是控制时间 ...

  6. 《Unity 3D 游戏开发技术详解与典型案例》——1.3节第一个Unity 3D程序

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.3节第一个Unity 3D程序,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  7. vue设置html自动跳转路由器,vue2.0项目实现路由跳转的方法详解

    一.安装 1.安装路由vue-router: npm install vue-router vue项目的依赖文件node_modules存在vue-router依赖,说明安装成功 2.vue项目引入v ...

  8. 2010 27寸 imac 升级固态_2017 款 iMac,27 寸升级换 SSD 固态硬盘拆机详解

    想要 iMac玩游戏?怎么能带动?如何解决卡顿问题?别急,给您带来2017 款 iMac,27 寸升级换 SSD 固态硬盘拆机详解,拆机并不复杂,动手能力差的同学看了这篇文章会觉得原来我也可以,那让我 ...

  9. 详解Unity中的粒子系统Particle System (十二 | 终)

    前言 终于来到了最后一篇,粒子系统宣告终结!这十来篇博客删删改改写了半个多月,真是离谱.今天该讲案例与粒子系统的应用,那么我们就进入正题吧! 目录 前言 本系列提要 一.如何做出效果 二.案例演示 1 ...

最新文章

  1. win32之hPrevInstance
  2. 文件字节输入流 java
  3. js实现文章显示部分内容
  4. flex----其他交互设计
  5. Spring源码解析(五)——自定义标签解析
  6. 造福身心障碍者 Skype及PowerPoint新增实时字幕功能
  7. 使用阿里云配置加速器,下载Docker镜像
  8. 原生js获取屏幕高度
  9. cc域名转入可以吗?其特点是什么?
  10. 什么是会员标签?会员标签有什么作用呢?
  11. WPF textbox禁用输入法
  12. 大学计算机实验教程制作电子小报,word中电子小报怎么做?word电子小报的图文教程...
  13. 使用免费证书安装 ipa 到真机
  14. 怎么用网线连接开发板
  15. 01Cadence Allegro做PCB拼版
  16. Vue中props属性
  17. 【七天入门Go语言】 GC垃圾回收三色标记 | 第七天
  18. 产业园区面临“同质化”发展困境,该如何构建“差异化路径”?
  19. 职场关注:挣百万年薪的15种能力
  20. 【SSM-报销单】6.报销单-修改报销单

热门文章

  1. CTFHub笔记之WEB文件上传:无验证、前端验证、文件头检查
  2. PIL库的Image.open打开webp文件报错
  3. 复旦微的FMQL10S400ZYNQ芯片的多核操作
  4. 4296. 【NOIP2015模拟11.2】有趣的有趣的家庭菜园
  5. U盘“请将磁盘插入U盘”,主控显示“chipYC2019”处理
  6. HTML5吃豆豆游戏开发实战(二)主角移动和动画循环设置
  7. 计算机计算与计算思维必掌握知识,计算思维与计算机基础教学探究
  8. printf(fmt, ##__VA_ARGS__)
  9. Rails启动项一些参数的调整
  10. Power Platform实战技术分享