- 灯光类型
- 点光源
- 聚光灯
- 平行光
- 区域光
- 自发光材质
- 环境光
灯光类型
本节详细介绍 Unity 中创建灯光的多种不同方法。
点光源
点光源位于空间中的某个点,均匀地向所有方向发射光。光击中表面的方向是一条从灯光对象中心到接触点的直线。强度随着与灯光的距离而衰减,在指定范围衰减为 0。光的强度与目标对象到光源的距离的平方成反比。这被称为『平方反比定律』,类似于光在真实世界中的行为。
点光源可以用于模拟场景中的灯具或其他本地光源。可以使火花或爆炸以逼真的方式照亮周围的环境。
点光源在场景中的效果
聚光灯
聚光灯类似于点光源,具有特定的位置和方位,并且逐渐衰减。不过,聚光灯被限制在一定的角度范围内,产生锥形的照明区域。椎体的中心指向灯光对象的前方(Z 轴)。光的强度沿着聚光灯椎体的边缘衰减。扩大角度会增加椎体的宽度,并增加渐变的幅度(即加剧衰减),被称为『半影锥』。
聚光灯通常用于人造光源,例如手电筒、汽车前灯和探照灯。通过用脚本或动画控制聚光灯的方向,一个移动的聚光灯将照亮场景的小块区域,产生戏剧性的照明效果。
聚光灯在场景中的效果
平行光
平行光用于在场景中对于创建类似阳光的效果。在许多方面与太阳相似,可以把平行光认为是位于无限遥远距离的光源。平行光没有具体的来源,因此平行光对象可以放置在场景中的任意位置。场景中的所有对象都被照亮,就好像光总是来自相同的方向。因为无法定义从目标对象到灯光对象的距离,所以光的强度不会衰减。
平行光代表了游戏世界之外巨大而遥远的光源。在拟真场景中,它可以用来模拟太阳或月亮。在抽象的游戏世界中,它可以为对象添加逼真的阴影,而不需要精确指定光来自哪里。
平行光在场景中的效果
每个新建的 Unity 场景默认包含一个平行光。在 Unity 5 中,平行光与天空系统相关联,定义在光照面板的环境光照部分(Lighting>Scene>Skybox)。通过删除默认的平行光并新建一个平行光,或者为 Sun 参数(Lighting>Scene>Sun)简单地指定一个不同的游戏对象,你可以改变这种默认行为。旋转默认的平行光(或 Sun)将更新『天空盒』。调整平行光的角度,使之与地面平行,可以实现日落效果。将平行光指向上方,会使天空变黑,就像是在夜间一样。倾斜平行光,天空将类似于白天。如果天空盒被选择为环境光源,环境光照将按照平行光的颜色改变。
区域光
区域光由空间中的一个矩形定义。沿着它的表面,均匀地向所有方向发射光,但是只从矩形的一面发射。无法手动控制区域光的范围,不过,随着光线远离光源,强度将按照距离的平方衰减。因为光照计算需要大量的处理器资源,因此区域光在运行时是不可用的,只能烘培到光照贴图中。
区域光同时从多个不同方向照亮物体,产生的阴影往往比其他类型的灯光更加柔和细腻。可以用它创建逼真的路灯或玩家附近的一排灯。小型区域光可以模拟更小的光源(例如室内照明),但是具有比点光源更真实的效果。
沿着区域光的表面发射光,产生具有柔和阴影的漫射光。
自发光材质
自发光材质像区域光一样沿着它的表面发射光。用于组成场景中的弹射光,并且可以在游戏过程中修改相关的属性,例如颜色和强度。尽管预计算实时 GI 不支持区域光,不过,使用自发光材质仍然可以实时渲染出类似的柔和光照效果。
Emission
是标准着色器的一个属性,允许场景中的静态对象发射光。Emission
默认被设置为 0。这意味着使用了该材质着色器的对象不会发射光。
自发光材质没有范围值,但是发射的光将以距离的平方衰减。发射的光只会被标记为『静态』或『静态光照贴图』的对象接收。类似地,如果自发光材质被应用到非静态对象或运动对象(例如角色)上,将不会影响环境光照。
在场景中,Emission
大于 0 的材质将明亮地发光,即使它并不影响环境光照。在检视视图中,为标准着色器的 Global Illumination
属性选择 None
,也可以产生这样的效果。像这样的自发光材质可以用于创建诸如霓虹灯或其他可见光源等效果。
自发光材质只会直接影响场景中的静态对象。如果需要使运动的或非静态的对象(例如角色)也接收来自自发光材质的光,必须使用光照探针。
环境光
环境光是指存在于整个场景中的光,不来自于任何特定光源对象。它是场景整体外观和亮度的重要贡献者。
环境光在许多情况下是有用的,不过这取决于你选择的艺术风格。举个例子,明亮的、卡通风格的渲染可能不需要黑暗的阴影,或者光照可能被手绘成纹理。如果需要在不调整单个灯光的情况下增加场景的整体亮度,可以直接调整环境光。
环境光的设置可以在 光照视图 中找到。