首先推荐一篇文章,讲的非常不错
http://www.edy.es/dev/docs/unity-5-lighting-cookbook/
之前自己研究了下lightmap,不过并没有关注效果和细节,只是关注了使用流程。
今天找了一些美术资源测试了下Unity5中的lightmap,下面分享一下心得。
1、Unity中灯光烘焙的速度非常慢的,在Unity5中尤其慢(可能是因为效果和复杂度提升了,速度据说比Unity4慢几倍),所幸的是Unity5.3中优化了烘焙速度。
2、所有被烘焙的物体需要设置成静态的(勾上Static),否则不参与烘焙。
3、在Window–Lighting–Scene面板中,注意几个Intensity参数,他们会影响最终的烘焙效果。比如Ambient Intensity调大些环境光就会对场景造成影响,如果需要某些阴暗、蓝色、红色的场景,可以设置这里,一样的场景可以烘出不一样的效果。不过这里也有一个坑,如果不修改,这些Intensity参数默认都是1,这可能会造成某些场景曝光,看起来要比实际光照亮很多。
4、在Window–Lighting–Object面板中,如果选择好一个3D模型,会有一些参数设置,其中有一个Scale In Lightmap,通过调整这个值,可以控制该物体在Lightmap中所占的纹理大小。比如调整成0.1,则此物体的光照纹理就只有原来的十分之一,而调整成0,则此物体虽然可以产生阴影,但是不接收任何光照信息。
在预览(Preview–Baked Intensity)中可以看到物体所占纹理大小。
5、接收阴影的模型(如地面),不要缩放。否则阴影就显示异常了。比如我们一开始把地面缩放了100倍,阴影直接就不显示了(其实是拉伸早成显示错误了)。
6、Unity5.3之前的版本有Bug。使用General GI—Directional进行烘焙的话,阴影无法显示。这个是因为Directional只支持Opengles3.0以及SM3.0以上的显卡和设备。当不支持时没有Fallback到Non-Directional,就出问题了。一般来说这里选择Non-Directional就好了。
7、最终烘焙出来的效果,可能跟实时光照有一些初入。尤其是考虑到PBR的时候(Standard shader)。这个只能通过参数一步一步来调整。不过烘出一个效果可以接受的场景就好了,也没有必要追求一模一样。毕竟是完全不同的光照系统。