Unity-BattleStar丨2. Unity光照系统、光照探头、反射探头、Lighting Mode

一. Unity光照系统

烘焙(是全局光):对场景进行灯光烘焙将光照信息储存在Lightmap中,当场景运行时,Unity直接读取Lightmap中数据,只进行一次计算。

要烘焙的物体应标记为Lightmap Static。

 

Unity光照分为全局光照和局部光照

1.全局光照:简单的说就是考虑到环境中所有表面和光源相互作用的照射效果

2.局部光照:简单的说就是只考虑光源到模型表面的照射效果

 

全局光照,简称GI,分为”实时”和”预先计算好的(离线)”两种光照。

    1.实时光照(光、物体改变随时计算),首先Light的Inspector-Light-Mode属性应是Realtime或者Mixed。

        1.1当选择Realtime时,在Windows-Lighting-Settings-Lighting选项卡有Ambient Mode选项,其中包含Realtime和 Baked,他跟下面的Realtime Lighting和Mixed Lighting(包含烘焙和实时光照两种)有关。当选择Realtime时,下方的Realtime Lighting和Mixed Lighting都勾选,也只运行实时光照Realtime Lighting脚本,并不会进行烘焙。若选择Baked,则 应取消勾选Realtime Lighting,只选择Mixed Lighting(否则效果是Realtime Lighting和Mixed Lighting的叠加)。此时既进行实时光照,也进行烘焙。

        1.2当选择是Mixed时,代表既进行全局光照,又进行局部光照。我们应用场景是:让静态物体烘焙,动态物体进行局部光照。Lighting选项卡直接取消勾选Realtime Lighting,选择Mixed Lighting,Ambient Mode会自动选择Baked。

    2.预先计算好的光照(光、物体位置改变,影子不会改变)。Light的Inspector-Light-Mode属性是Baked,且Lighting的Ambient Mode选择Baked或者取消勾选Realtime Lighting,选择Mixed Lighting(不可取消Mixed Lighting,否则就无法烘焙了)。此光照不会根据光照改变而实时改变。

勾选Auto Generate会在改变影响光照的相关参数后自动渲染光照。

 

 

二. 光照探头Light Probe Group

Area Light区域光只在Bake模式下工作,运动的小球没有被标记为Lightmap Static,所以不受Bake(无论Bake还是Mixed中的Bake[仍受局部光照影响])的影响,无法显示区域光的颜色。所以需要添加光照探头。

光照探头的作用:收集附近的光照信息,对探头范围内的对象进行实时渲染。

未添加光照探头(下)

添加光照探头(下)

 

 

三. 反射探头

反射探头的Type应为Realtime,且Refresh Mode应为Every frame(每一帧),这样运行时就能实时看到反射的画面了。

位置1(下)

位置2(下)

 

unity里Mixed Lighting下面几个Lighting Mode的解释:
 

三种模式,主要区别在于烘焙出的光照图、阴影图内容,也就影响到动、静态物件在运行时的受光、投影效果,效果越好越丰富的,开销自然也越大。

1、substrative:效果最单纯,所有颜色和阴影都烘死在光照图上,运行时静态物件不参与阴影图渲染,结果是不管光源怎么变,静态物件的受光和阴影都不变。

2、shadowmask:比substrative好一点,静态物件的阴影不变,但是受光情况可以随光源变化而变

3、baked indirect:仅烘焙间接光照(也就是物体之间漫反射导致的表面明暗效果),其它东西(如阴影)全部在运行时计算,跟实时差不多了。

 

 

Unity-BattleStar光照系统小结效果图:

注意:反射探头Reflection Probe更改大小的方法是点击“Edit bounding volume”按钮,修改Scene场景出现的5个小点的位置。

 

赛隆网讨论社区:http://www.vr910.com/forum.php?mod=viewthread&tid=5957&fromuid=30507