您的位置:首页 > 移动开发 > Unity3D

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

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





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





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

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

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

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

1
2
3
4
5
6
7
8

[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,很给力吧。。

本文固定链接: http://www.xuanyusong.com/archives/2815
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: