一. 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个小点的位置。