首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二)
2014
06-23

Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二)

Unity默认烘培场景以后每张烘培贴图的大小是1024。但是有可能你的场景比较简单,用1024会比较浪费。如下图所示,这是我的一个场景的烘培贴图,右上角一大部分完全是没有用到,但是它却占着空间。 

Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二) - 雨松MOMO程序研究院 - 1

有时候可能你想去修改烘培贴图的大小,如下图所示以前我试过在Inspector视图中修改烘培贴图的大小,图虽然是小了但是它是整体缩小,后来在手机上面发现这这样直接修改烘培贴图的大小确实有问题,接缝方面处理的有问题。而且每次烘培完场景以后都需要这样缩一下。。(千万不要这样缩图)

Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二) - 雨松MOMO程序研究院 - 2

我们需要美术在烘培场景的时候去设置烘培贴图的大小,可是Unity的烘培菜单根本没有设置烘培贴图的大小。。后来我想到了一个巧妙的办法,用脚本来烘培场景,顺便设置烘培贴图的大小。。代码很简单。

Clear()就是删除当前场景的烘培贴图。

Bake()就是直接烘培当前场景,我还可以在烘培场景之前加一些代码。。。一切都是脚本化操作。嘿嘿。。

maxAtlasHeight和maxAtlasWidth 就是每张烘培贴图的宽和高,一般我们每个场景用一张512的就差不多了。烘培贴图必须要2的幂次方,并且要正方形的。

 这样美术只用在Lightmapping窗口中设置好当前烘培场景的参数。。调用我们写的拓展菜单方法就可以了。这里我设置的烘培贴图的大小是512。

利用上面的方法我们把一张1024的贴图缩小到了512,效果没有什么变化但是空间缺缩小了4倍。。

 

Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二) - 雨松MOMO程序研究院 - 3

IOS PVRTC压缩后512的贴图只有170.8KB,很给力吧。。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景(七十二)》有 55 条评论

  1. 屯屯屯烫烫烫 说:

    MOMO老师,为什么我烘焙完之后,贴图的size依旧是1024呐,讲道理,代码应该是您写的那样的,是不是我哪里设置需要注意的

  2. 梁晓龙 说:

    我刚才做了尝试,把代码复制过去,烘培出4张512*512的图,请问这是怎么回事啊

  3. 德国阳光蓄电池 说:

    我刚刚试过真不错的

  4. 封忆-NO_1 说:

    您好。在烘焙光照的贴图的过程,遇到一个问题想请教一下您,我用combinemesh方法合并网格之后,烘焙出来的光照贴图就不对了,这是咋回事儿?能怎么解决呢?多谢

    • 雨松MOMO 说:

      换了烘培图以后 要给每一个prefab 的 render 设置烘培信息、、 不然肯定不对。。。

      • 封忆-NO_1 说:

        不太明白。。。但总的来说问题是,合并网格之后,如何使得烘焙光照贴图还有效?需要怎么设置还是说代码写?一般的mesh在导入设置的时候不是可以选择Generate lightmapping uv吗?合并产生mesh可以通过相似的办法实现吗

  5. 马晖 说:

    您好~我想问下 我在安卓真机上发现lightmap 丢失 这是什么情况请问有遇到么?我用的是5.0.2版本 代码都是以前工程的4.6版本 都没有问题~ 程序启动的我执行这句代码 LightmapSettings.lightmaps = lightmapDatas; lightmapDatas 这边存有2张光照贴图信息。在PC 上是没有问题 请问有什么好的方法么~

  6. timchiu 说:

    前辈,还是想问下关于lightmap的问题如果在unity烘焙的时候,会自动把场景所有模型的UV自动分到第二套UV里面。但是如果从外部软件手动分好UV导入引擎有什么办法?

留下一个回复

你的email不会被公开。