Unity场景渲染中那些意想不到的细节(1)

在阅读到此时我们首先假设读者已经掌握了基本的灯光搭建,如果对此不是很自信的朋友,建议认真阅读Unity的官方手册:

https://docs.unity3d.com/Manual/LightingOverview.html

请注意不要使用某些第三方手册,而是使用官方提供给我们的原版手册,在确保自己已经掌握了手册中关于lighting的大部分知识以后,我们就可以开始本教程的学习了。

首先将Playersetting中的Color space设置为linear(注意有些手机是不支持的),然后将摄像机的render path设置为deferred(同样有些手机不支持)。搭建一个简单的场景并添加光照(中间的白色光球代表点光源,不计入光照计算):

Unity场景渲染中那些意想不到的细节(1)

这里没有任何烘焙,四面被照亮了,但是由于只有直接光照效果,阴影看起来非常假,而且两个自发光物体都看起来与周围格格不入,然后尝试一下烘焙,烘焙参数如下:

Unity场景渲染中那些意想不到的细节(1)

在烘焙结束后我们可以看到的效果是:

Unity场景渲染中那些意想不到的细节(1)

这里阴影和墙角的环境光遮蔽看起来要真实的许多了,而且两个自发光物体也影响到了周围,然而却总是感觉缺点什么,是的,在大自然中所有的不发光的物体都是将光反射到我们眼镜中的,显然在游戏里无法使用高消耗的光线追踪来显示反射,那么我们就需要使用一些操作来模拟反射,首先,Unity3D已经提供了Reflection Probe,我们还可以在github上下载到Post Processing v2 或者加QQ群146025605下载也可以,通过设置Reflection Probe与后处理的Screen Space Reflection可以提供一个看起来比较真实的光照场景,首先我们创建一个反射球,使六个面与墙面贴合并且设置为Box Projection,对于室内环境反射,我们需要选择Box Projection以达到四壁反射的效果:

Unity场景渲染中那些意想不到的细节(1)

反射的效果如下所示:

Unity场景渲染中那些意想不到的细节(1)

我们看到Reflection Probe正确的反射了墙壁与身后的天空色,然而,两个突出的自发光物体却没有被正确反射,这是因为Reflection Probe是使用6张贴图进行模拟的,无法表现立体效果,只能表现平面效果,所以我们这里需要加入Post Processing v2脚本,我们这里首先将摄像机设置为一个单独的层(这里暂且设置为31层并命名为camera),然后挂载脚本:

Unity场景渲染中那些意想不到的细节(1)

然后添加一个profile,并且打开profile的设置:

Unity场景渲染中那些意想不到的细节(1)

然后添加Screen space reflection effect,并且进行设置,设置非常简单,可以通过调整观看效果很轻松的看出设置的作用,这里就不赘述了:

Unity场景渲染中那些意想不到的细节(1)

最后出来的效果:

Unity场景渲染中那些意想不到的细节(1)

这下表现出来的效果就非常真实了,墙壁上的反射效果也体现出来了,通过使用诸如此类的简单操作,就可以大大提高场景的自然程度与真实程度,Unity3D作为一款业界领先的3A级引擎,在处理光照方面是可以做到游刃有余的。