Unity3D-光照系统

2020-06-02 17:02:33 浏览数 (1)

1、什么是局部光照(Local illumination)

简单说:光在模型表面的照射效果。

2、什么是全局光照(Global illumination)也称GI

这个其实是三维软件中的称呼。其实光从太阳经到达地面是经过无数次的反射和折射。 全局光照里面又有Realtime GI(实时全局光照),默认情况下Unity的光源都是实时的,代表这些灯源会把光线照射到场景并每帧更新,

3、两者的异同?

全局光照参考的条件太复杂,而且占据大量的CPU资源! 局部光照只考虑模型表面的照射效果,所以更加灵活,简易。

3-1、Unity的光照系统

在Unity中提供了两种非实时的全局光照。 一种是预计算的GI(Precomputed Realtime GI) 另一种是烘焙的GI(Baked GI) 这两种都是可以执行Build指令或者勾选Auto自动烘焙,才能生效。注意:他们只会计算或烘焙勾选了Lightmap Static 的物体,如果想影响动态物体需要使用灯光探头。 预计算的GI与烘焙GI虽然都能实现GI效果,但是预计算允许对光源记性修改,而烘焙GI完成后在修改光源也不生效。

案例:模拟日夜循环

1、添加光照探头

Paste_Image.png

2、进行编译

3、修改灯光的角度,模拟日落系统

Paste_Image.png

4、预计算实时GI的间接光照实现

Paste_Image.png

1、首先关闭系统的实时渲染功能

Paste_Image.png

2、添加聚光灯

Paste_Image.png

3、进一步测试

我们将长方体设置为静态LightMap

设置周围的方块体也为LightMap

打开预计算的实时GI - Precomputed Realtime GI

选中Lighting里面的编译进行

设置完后

之前的图,没有设置静态LightMap

注:设置完LightMap static后的游戏物体不可以移动。

如果场景中有非静态物体也需要接收全局光照,则需要添加Light Probe Group,分布的密度和位置取决于对光照敏感程度的要求和光照变化的强度。

Paste_Image.png

Paste_Image.png

然后烘焙就可以使用了

关于灯光的类型

灯光类型

Baking:选项中

三种烘焙选择

Realtime:Unity默认选择Realtime,灯光会通过烘焙GI系统处理直接光源与间接光源。 Baked:只会被场景内的静态对象拿去GI计算,在Baked GI模式下不会照亮非静态物体 Mixed:场景内的静态对象会被烘焙GI拿去做计算,同时仍会继续运算即时光源到非静态对象上。

0 人点赞