Unity教程之-Unity光照贴图Lightmapping

 

一直没有光照贴图的深入了解,只知道它与灯光比起可以降低drawCall,偶然看到一本外文书上有详细的资料,这里学习并分享一下,下面开始!

一:简要说明一下Unity光照贴图的概念

翻译会有各种偏差,这是外文原文的概念讲解,大概意思是:
下面,我们烘焙一些地图的阴影。因为地图比较大,大概的光照贴图烘焙可以使用光照贴图的内存空间换渲染的时间,节省性能(以空间换时间)。烘焙阴影只能烘焙静态物体,动态的不能烘焙,动态的物体可以通过灯光烘焙,但是达不到全局的配合效果而且还要计算灯光反弹。
如果你用的Unity专业版,你可以有最好的两种阴影,一种是烘焙阴影到地形上,另一种是动态阴影的双光照贴图系统。光照贴图系统会创建两张题图,一张包含所有的阴影的远阴影,和一张包含间接灯光阴影的近阴影。在指定范围内的阴影距离,近阴影贴图使用,阴影距离实时计算,超出制定距离的,则使用远阴影贴图。

Unity光照贴图Lightmapping
Unity光照贴图Lightmapping

二:创建基本场景

首先创建基本的场景地形图,场景中一个地图,一个平行光,还有一个摄像机
如图所示:

Unity光照贴图Lightmapping
Unity光照贴图Lightmapping

在平行光阴性类型为soft类型,此时可以看到图中的阴影,阴影的方向跟平行光的旋转角度有关,垂直向下为正午的阴影,跟太阳光类似

三:烘焙地形阴影

选中地形
在windows下拉菜单中选中Lighting(这个unity5.2版本的选项,4.x版本的是Lightmapping)

Unity光照贴图Lightmapping
Unity光照贴图Lightmapping

光照贴图的界面如图:

Unity光照贴图LightmappingUnity光照贴图Lightmapping

默认勾选静态光照贴图,因为只有静态的对象,才能进行光照贴图烘焙。
勾掉自动的话,可以自己设置,然后build即可,下面是烘焙前后的图片对比

Unity光照贴图Lightmapping
Unity光照贴图Lightmapping
烘焙后会产生这样的文件:

这是5.2版本产生的,4.x版本以前产生的是exr文件贴图,如果一个场景动态加载地图,要烘焙多个地图,放到指定的文件夹中,加载地图的时候脚本设置贴图即可

四:烘焙灯光的光照贴图

选中平行光,打开烘焙面板,灯光的Baking设为Bake,具体的其它参数可以根据需求调整,然后build,渲染前后图片对比,第二张图吧灯光删掉,场景依然可见,这里的天空盒子是没有渲染的

Unity光照贴图LightmappingUnity光照贴图Lightmapping
Unity光照贴图Lightmapping