首页 > 其他分享 >Unity 纹理优化及TextureProcessor工具

Unity 纹理优化及TextureProcessor工具

时间:2022-12-13 15:05:48浏览次数:77  
标签:Multiple 缩放 修正 点击 纹理 Unity 像素 TextureProcessor


更新日期:2020年11月18日。
Github源码:​​​[点我获取源码]​

索引

  • ​​纹理优化​​
  • ​​TextureProcessor工具​​
  • ​​使用​​
  • ​​Resizer纹理缩放器​​
  • ​​打开纹理缩放器​​
  • ​​检索目标文件夹​​
  • ​​修正不标准纹理​​
  • ​​全局纹理缩放修正​​
  • ​​Painter纹理绘画器​​
  • ​​打开纹理绘画器​​
  • ​​编辑目标纹理​​
  • ​​1.Fix Multiple Of 4 宽高修正​​
  • ​​2.Cut Blank Pixels 剪切边缘空白像素​​
  • ​​3.Grayscale 灰度化​​
  • ​​4.Brightness 亮度调节​​
  • ​​5.Saturation 饱和度调节​​
  • ​​6.Value 明暗度调节​​
  • ​​7.MirrorLR、MirrorTB 左右、上下镜像​​
  • ​​保存、另存​​

纹理优化

作为Unity所有优化方案中最重要、最简单的优化手段,纹理优化一直被我们放在了项目优化的第一步,而对于纹理优化,主要可以分为以下两个点:

  • 纹理的压缩格式
  • 纹理的尺寸大小

对于​​纹理的压缩格式​​,只要纹理资源满足条件(宽、高满足一定条件),Unity默认会使用当前平台的最佳压缩方案,除非你懂得每种压缩格式间的利弊,否则一般不用去强制设置。

然后就是​​纹理的尺寸大小​​了,众所周知纹理的尺寸越小,自然就能达到最佳优化效果,但在很多情况下,降低纹理尺寸这件事很可能是一种奢求,所以,我们只得尽可能的去制造能够使用最佳压缩方案的条件。

这个使用最佳压缩方案的条件,最基本的也是最简单的一条就是:

纹理的宽、高皆为4的倍数

注意:在某些特殊平台条件将更为苛刻。

我们来查看一个简单的例子,如下一张纹理,宽高为非4的倍数,所占内存大小为311KB:

Unity 纹理优化及TextureProcessor工具_编辑器工具


我们通过某些手段使得他的宽高改变为最相近的4的倍数(将高度266增大为268),此时所占内存大小为24.9KB,缩小了10倍多!(事实上通过名称中带的格式Crunched DXT1已然能够看出这张纹理使用了压缩格式,宽高为4的倍数使得他满足了压缩条件)

Unity 纹理优化及TextureProcessor工具_编辑器工具_02


可以看出只是稍微更改一点点纹理的尺寸,所得到的内存收缩程度是惊人的,当然,一般情况下项目中的尺寸不标准纹理也较少,比如贴图这类纹理一般都是2的次方正方形,这比4的倍数还要标准,这就不在我们的考虑范围之内了。

针对一些奇形怪状的Sprite纹理,有时候很难达到标准尺寸,况且美术不一定每次都记得4的倍数,所以这就是我们此行需要解决问题的目标。

TextureProcessor工具

​TextureProcessor​​可助你快速将不标准的纹理(宽高尺寸随意)修正为标准纹理(宽高尺寸皆为4的倍数),同时,名为纹理处理器,也即是说它同时也支持一些基本的纹理编辑功能,不用打开PS就能满足你的一些基本需求。

使用

Resizer纹理缩放器

打开纹理缩放器

点击菜单​​HT​​​ -> ​​Texture Processor​​​ -> ​​Texture Resizer​​打开纹理缩放器窗口:

Unity 纹理优化及TextureProcessor工具_图像优化_03

检索目标文件夹

纹理缩放器支持选定一个目标文件夹后,检索目标文件夹内的全部纹理资源,可以使用拖拽将一个文件夹拖动到​​Target Folder​​​后面的字段,然后点击后面的​​Search​​按钮:

Unity 纹理优化及TextureProcessor工具_图像优化_04

修正不标准纹理

在检索窗口中会列出目标文件夹内的全部纹理资源,其中​​红色​​​的带有​​感叹号​​​标记且有​​Raw​​​字样提示的即为不标准纹理(宽高尺寸非4的倍数),右上角有​​png​​​,​​jpg​​​,​​tga​​​的类型选择,取消勾选谁,则修正时将​​忽略​​​该格式的纹理资源,也可以在指定纹理资源上点击右键,在弹出的菜单中选择​​排除​​该纹理,则它将不会存在于处理列表中。

注意:纹理缩放器目前仅支持处理png,jpg,tga这三种格式的纹理。

此时点击右上角​​Resize To Multiple Of 4​​按钮,即可启动修正程序,所有处于列表中的Raw纹理都将被修正为宽高最接近的4的倍数,且完成后会弹出处理结果回馈界面:

Unity 纹理优化及TextureProcessor工具_Unity_05


在此界面中,我们可以看到:

  • 一共修正了多少个纹理资源;
  • 总共消耗时长;
  • 原始纹理的总大小(存储);
  • 原始纹理的总大小(运行时);
  • 修正后纹理的总大小(存储);
  • 修正后纹理的总大小(运行时);
  • 各个纹理的详细修正数据;

注意:红色字样为原始纹理数据,青色字样为修正后的纹理数据,绿色字样为此次修正带来的内存节约量。

点击右上角的按钮​​Export To File​​可以将修正数据导出到文件中,以便于后续查看内存收缩量时进行鲜明的对比。

全局纹理缩放修正

全局纹理缩放修正是脱离于纹理缩放器的单独功能,支持一键将所有纹理修正,但事实上并不推荐这个操作,因为纹理修正为4的倍数后,纹理的边缘会有1-3像素的内容为增加或减少的内容,某些要求视觉精确的纹理无法容忍这个操作,所以需慎用全局纹理缩放修正

注意:如果纹理带有透明通道,则修正它时新增的像素全部为透明像素,不会影响原图的视觉效果。

点击菜单​​HT​​​ -> ​​Texture Processor​​​ -> ​​Resize To Multiple Of 4 All​​​,在弹出的确认框上点击​​Yes​​后,将启动全局纹理缩放修正程序,他将会修正整个项目中所有不标准的纹理,这个操作可能会耗费不少的时间,且无法撤销,请再三确认后再点击​​Yes​​。

Painter纹理绘画器

打开纹理绘画器

点击菜单​​HT​​​ -> ​​Texture Processor​​​ -> ​​Texture Painter​​打开纹理绘画器窗口:

Unity 纹理优化及TextureProcessor工具_纹理优化_06

编辑目标纹理

纹理绘画器支持针对目标纹理进行常规编辑,比如尺寸修正、剪切空白像素、灰度化、亮度调节、饱和度调节、明暗度调节、镜像等。

使用鼠标拖拽任一纹理资源到编辑窗口中,此后便可进行纹理编辑:

Unity 纹理优化及TextureProcessor工具_图像优化_07

1.Fix Multiple Of 4 宽高修正

纹理绘画器也支持针对不标准纹理的修正,直接点击工具栏的​​Fix Multiple Of 4​​​按钮即可,修正后​​Fix Multiple Of 4​​​按钮将变灰,也即是​​Fix Multiple Of 4​​按钮为灰色不可点击时则证明纹理为标准纹理:

Unity 纹理优化及TextureProcessor工具_Unity_08

2.Cut Blank Pixels 剪切边缘空白像素

剪切边缘空白像素只针对带透明通道的纹理(透明度为0时被认为是空白像素),剪切的边缘为上下左右四边,中间若有空白像素将忽略,类似于PS的剪切四周空白像素功能:

Unity 纹理优化及TextureProcessor工具_缩放_09

3.Grayscale 灰度化

灰度化会将整张纹理变化为对应的灰度图:

Unity 纹理优化及TextureProcessor工具_缩放_10

4.Brightness 亮度调节

亮度调节:

Unity 纹理优化及TextureProcessor工具_缩放_11

5.Saturation 饱和度调节

饱和度调节:

Unity 纹理优化及TextureProcessor工具_图像优化_12

6.Value 明暗度调节

明暗度调节:

Unity 纹理优化及TextureProcessor工具_编辑器工具_13

7.MirrorLR、MirrorTB 左右、上下镜像

左右、上下镜像:

Unity 纹理优化及TextureProcessor工具_编辑器工具_14

保存、另存

当编辑纹理完成后,点击右上角​​Save​​​按钮可以保存纹理并覆盖原图,这个操作无法撤销所以需慎重,点击右上角​​Save As...​​按钮可以另存纹理到其他文件,这将不对原图产生任何影响,这是推荐的保存方式。


标签:Multiple,缩放,修正,点击,纹理,Unity,像素,TextureProcessor
From: https://blog.51cto.com/u_15911199/5934139

相关文章

  • Unity插件 - MeshEditor(十一) 模型正弦扭曲特效
    更新日期:2020年4月23日。Github源码:​​​[点我获取源码]​​ 先上几张效果图:   OK,进入今天的正题吧,插一个正弦函数的话题进来: 首先,正弦函数曲线,如下:  在如上坐标系......
  • 【Unity】 HTFramework框架(三十九)UI的数据驱动模式,MVVM
    更新日期:2020年10月24日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​UI的数据驱动模式​​​​使用​​​​数据模型​​​​Bindabl......
  • Unity UGUI无限列表(Infinite List)
    更新日期:2020年10月16日。Github源码:​​​[点我获取源码]​​索引​​InfiniteList​​​​使用​​​​创建InfiniteListScrollRect​​​​InfiniteListScrollRect参数......
  • Unity - 粒子系统跟随路径移动
    对于最新版的粒子系统ParticleSystem,要让其跟随路径移动,无非就是借用其自身的API直接为每个粒子设置速度。看一下最终的效果图:编辑器为了能在场景中更方便的编辑路径,我们要......
  • 【Unity】 HTFramework框架(三十七)Inspector自定义序列化检视器
    更新日期:2020年8月21日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​Inspector自定义序列化检视器​​​​使用​​​​Dropdown下拉......
  • 【Unity】 HTFramework框架(三十六)AssetsMaster资源管理器,做资产的主人
    更新日期:2020年8月13日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​AssetsMaster​​​​使用AssetsMaster​​​​打开AssetsMaster......
  • Unity 多物体混合动画、值变动画控制器
    索引​​前言​​​​示例​​​​1、4个Cube的联动动画​​​​2、UGUIText文本动画​​​​3、UGUIImage图片动画​​​​4、物体消隐动画​​​​使用与解析​​​​1......
  • Unity实现在白板上绘画涂鸦
    前言有段时间没有更新博客了,不知道应该写些什么,太简单感觉没有记录的必要,太难自己都没能理解,不知道如何下手。回归初心,记录自己想记录的东西。需要实现一个白板绘画的功能,......
  • Unity 使用拖尾渲染器模拟简易的管道流体
    关于管道流体关于管道流体,最佳的解决方案肯定是UV动画无疑,在网上看过很多例子几乎都是这样的,毕竟用实时流体计算的话开销确实太大,用粒子系统的话又苦于难以表现出流体的粘稠......
  • Unity UGUI图文混排源码(三) -- 动态表情
    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章1.首先来一个好消息,在最新版本的图文混排中,终于......