Unity3D - 灯光类型(Light Types)

在场景中使用灯光之前,我们已经介绍了一些工程设置了。你的设置应该适合你的目标平台,一般来说Baked Gl 和 Gamma Color Space更适合移动设备,Precomputed Realtime Gl 和 Linear Color Space 更适合PC设备或者游戏机。

接下来介绍一下游戏中可以使用的照明工具。

定向光源(Directional Lights)

“定向光”对于创建场景中的阳光等效果非常有用。它在许多方面像和太阳一样,定向光被认为是很遥远的光源,它们位于无限远的地方。

从方向光发射出的光线彼此平行,不像其他类型的光线那样发散。因此,定向光投射的阴影看起来是一样的,不管它们相对于光源的位置如何。这对我们很有用,特别是在室外场景照明时。

这里写图片描述

由于定向光没有源位置,所以它们可以放置在场景的任何地方,也不会改变光线的作用与效果。但是,旋转定向光对视觉效果影响很大。

对于具有明显位置的其他光源类型,例如聚光灯(Spotlights),人物越靠近光源,人物阴影就会变化。但是在室内时,这可能是个问题。定向光在这种情况下是很有利的,因为不管是否接近光源,但是阴影保持一致。

定向光不会因距离而减弱。定向光影响场景中的所有表面(surfaces)(除非物体被剔除(culled))时,这时使用Deferred Renderring pht时会导致一些性能成本。请记住,当使用这种渲染技术时,光的性能成本是基于照明的像素数量。

默认情况下,每一个新场景都包含一个定向光(Directional Light)。它与照明面板(Lighting>Scene>Skybox)中环境照明的天空相关联。

旋转默认的定向光(或是太阳)会导致天空盒子(Skybox)更新。随着光线向一侧倾斜,平行于地面,可以实现日落效果。另外,定向光向上会导致天空变黑,就好像是夜晚。随着光向上倾斜,会有白天的效果。

点光源 (Point Lights)

在3D空间中的点光源会向所有方向发射光线。这些可用于创建像灯泡,武器发光或爆炸的效果,它们的光线会从物体中辐射出来。

在Unity中的点光源(Point Lights)的强度是以光的中心按照二次方衰减,直到光的极限范围处衰减为零,这个光的范围(Rangle)是由Inspector中的“Range”属性定义的。光的强度与距离源的距离的平方成反比。这被称为“反平方律”,类似于现实世界中的光的行为。

这里写图片描述

点光源向各个方向发光。球形小物件代表光的“范围”。当光达到范围的极限时,直射光将“衰减”为零,但是,反射和间接光可以继续散发。

使用点光源的阴影代价很昂贵,因此必须谨慎使用。点光源会导致阴影在6个面上被渲染6次,这在一些比较慢的设备上是不可以被接受的性能消耗。

需要注意的是,目前点光源不支持间接反射光线的阴影。这代表由点光源(Point Light)发出的光会继续通过物体反弹到另一边,直到超出范围。点光源必须被小心的放置,以防止出现光线泄漏。当使用Baked Gl时,就没有这个问题。

聚光灯(Spotlights)

聚光灯在前方投射出一个光锥。锥体的宽度由光的“Spot Angle”参数定义。光会从光源的位置开始衰减,直到为零。聚光灯锥体边缘的光线也会减弱。增加“Spot Angle”的角度会增加锥体的宽度,并增加半阴影的大小。

聚光灯非常有用。它们可以当作路灯,壁灯,或手电筒。由于聚光灯对影响的范围可以精确控制,聚光灯(Spotlights)对于创建舞台灯光效果非常有用。

随着距离的增加光会衰弱。光线也会朝向锥体的边缘渐变。这称为光的半影,它也会随着锥角的增加而增加。

区域光源(Area Lights)

在Unity3D中区域光源被定义为一个向一侧所有方向发光的矩形。目前区域光源只有在Baked Gl时可用,它所有的光照都会均匀的照射到物体表面。对于区域光源的范围没有办法手动控制,但是当离开光源时,光的强度将以距离倒数的平方衰减

这里写图片描述

区域光源发出带有柔和阴影的散射光。

在想要创建柔和的灯光效果的情况下,区域灯是很有用的。

因为需要创建柔和的效果,所以区域光源很耗费计算量,并会增加烘焙时间。但是这很有用,这可以为场景照明的增强现实性,所以这种额外的预先计算是合理的。请注意,这仅仅会影响烘焙(Baked)的时间,并不会影响游戏运行效率。