Unity默认烘培场景以后每张烘培贴图的大小是1024。但是有可能你的场景比较简单,用1024会比较浪费。如下图所示,这是我的一个场景的烘培贴图,右上角一大部分完全是没有用到,但是它却占着空间。
有时候可能你想去修改烘培贴图的大小,如下图所示以前我试过在Inspector视图中修改烘培贴图的大小,图虽然是小了但是它是整体缩小,后来在手机上面发现这这样直接修改烘培贴图的大小确实有问题,接缝方面处理的有问题。而且每次烘培完场景以后都需要这样缩一下。。(千万不要这样缩图)
我们需要美术在烘培场景的时候去设置烘培贴图的大小,可是Unity的烘培菜单根本没有设置烘培贴图的大小。。后来我想到了一个巧妙的办法,用脚本来烘培场景,顺便设置烘培贴图的大小。。代码很简单。
Clear()就是删除当前场景的烘培贴图。
Bake()就是直接烘培当前场景,我还可以在烘培场景之前加一些代码。。。一切都是脚本化操作。嘿嘿。。
maxAtlasHeight和maxAtlasWidth 就是每张烘培贴图的宽和高,一般我们每个场景用一张512的就差不多了。烘培贴图必须要2的幂次方,并且要正方形的。
1 2 3 4 5 6 7 8 9 10 |
[MenuItem("Test/Test")] static void Init() { LightmapEditorSettings.maxAtlasHeight = 512; LightmapEditorSettings.maxAtlasWidth = 512; Lightmapping.Clear(); Lightmapping.Bake(); } |
这样美术只用在Lightmapping窗口中设置好当前烘培场景的参数。。调用我们写的拓展菜单方法就可以了。这里我设置的烘培贴图的大小是512。
利用上面的方法我们把一张1024的贴图缩小到了512,效果没有什么变化但是空间缺缩小了4倍。。
IOS PVRTC压缩后512的贴图只有170.8KB,很给力吧。。
- 本文固定链接: https://www.xuanyusong.com/archives/2815
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
MOMO老师,为什么我烘焙完之后,贴图的size依旧是1024呐,讲道理,代码应该是您写的那样的,是不是我哪里设置需要注意的
(⊙o⊙)…,贴图分辨率改了,但是那个size依旧显示的是1024,刷新了也没用。。。
我刚才做了尝试,把代码复制过去,烘培出4张512*512的图,请问这是怎么回事啊
我刚刚试过真不错的
您好。在烘焙光照的贴图的过程,遇到一个问题想请教一下您,我用combinemesh方法合并网格之后,烘焙出来的光照贴图就不对了,这是咋回事儿?能怎么解决呢?多谢
换了烘培图以后 要给每一个prefab 的 render 设置烘培信息、、 不然肯定不对。。。
不太明白。。。但总的来说问题是,合并网格之后,如何使得烘焙光照贴图还有效?需要怎么设置还是说代码写?一般的mesh在导入设置的时候不是可以选择Generate lightmapping uv吗?合并产生mesh可以通过相似的办法实现吗
您好~我想问下 我在安卓真机上发现lightmap 丢失 这是什么情况请问有遇到么?我用的是5.0.2版本 代码都是以前工程的4.6版本 都没有问题~ 程序启动的我执行这句代码 LightmapSettings.lightmaps = lightmapDatas; lightmapDatas 这边存有2张光照贴图信息。在PC 上是没有问题 请问有什么好的方法么~
前辈,还是想问下关于lightmap的问题如果在unity烘焙的时候,会自动把场景所有模型的UV自动分到第二套UV里面。但是如果从外部软件手动分好UV导入引擎有什么办法?