目录
一. 简介
在 Unity 中,光源(Lights)对于场景的照明和视觉效果起着关键作用。主要有以下几种类型的光源:
-
Directional Light(平行光):
- 类似于太阳光,光线从无限远处射向场景,所有光线都是平行的。
- 可以模拟远距离的光源,如太阳,对整个场景产生均匀的照明。
-
Point Light(点光源):
- 从一个点向各个方向发射光线,强度随着距离的增加而衰减。
- 常用于模拟灯泡、蜡烛等光源。
-
Spot Light(聚光灯):
- 具有锥形的照射范围,有明确的方向和照射角度。
- 类似于手电筒或舞台上的聚光灯。
-
Area Light(区域光):
- 仅在烘焙光照时起作用,常用于模拟发光的表面,如灯箱。
光源的属性包括:
- 颜色(Color):决定光源发出的光的颜色。
- 强度(Intensity):控制光的明亮程度。
- 范围(Range):对于点光源和聚光灯,决定光线能够传播的距离。
- 角度(Angle):仅适用于聚光灯,控制其照射的锥形角度。
二. 灯光详解
创建灯光.
Directional Light(平行光):
-
颜色(Color):
- 这是一个
Color
类型的属性,可以通过选择或输入 RGB 值来定义光的颜色。 - 例如,白色(255, 255, 255)表示全光谱的光,会产生正常的照明效果;红色(255, 0, 0)会给场景带来红色的色调。
- 颜色的选择对场景的氛围和情感表达有很大影响。
- 这是一个
-
强度(Intensity):
- 以浮点数表示,通常取值范围在 0 到某个较大的值之间。
- 强度为 0 时,平行光没有照明效果;值越大,光线越强烈,场景中的物体越亮。
- 较高的强度可能导致过曝,使场景看起来不真实;较低的强度则可能营造出昏暗或神秘的氛围。
-
阴影(Shadows):
- 开启/关闭:决定平行光是否产生阴影。
- 阴影类型:
- 硬阴影(Hard Shadows):阴影边缘清晰,适合营造强烈对比和清晰的光影效果。
- 软阴影(Soft Shadows):阴影边缘有过渡,看起来更自然,但计算成本相对较高。
- 阴影分辨率:影响阴影的清晰度和质量。
- 阴影距离:控制阴影能够显示的最大距离,超出此距离的物体不会产生阴影。
Point Light(点光源):
在 Unity 中,点光源(Point Light)是从一个点向各个方向均匀发射光线的光源类型。
特点:
- 光线从一个点向周围空间发散,强度随距离增加而衰减。
- 可以模拟现实中的灯泡、蜡烛等光源。
属性:
- 颜色(Color):决定光源发出光线的颜色,与平行光相同,通过设置 RGB 值来定义。
- 强度(Intensity):控制光线的明亮程度,数值越大,光源越亮。
- 范围(Range):定义光线能够照射到的最大距离。超过这个距离,光源的影响将逐渐减弱至零。
- 衰减(Attenuation):描述光强随距离衰减的方式。通常有线性衰减、平方衰减等模式。
应用场景:
- 室内照明:如房间中的吊灯、台灯。
- 特效:如爆炸时的光芒。
举例来说,在一个黑暗的洞穴场景中,点光源可以设置为暖黄色,强度适中,范围较小,模拟洞穴中的火把,为局部区域提供照明。在一个科幻游戏的能量核心场景中,点光源可以是强烈的蓝色,范围较大,表现出强大的能量辐射效果。
Spot Light(聚光灯):
在 Unity 中,聚光灯(Spot Light)是一种具有特定照射方向和范围的光源。
特点:
- 具有明确的照射方向,形成一个锥形的光照区域。
- 光线在锥形区域内较为集中,强度较大,超出锥形范围则迅速减弱。
属性:
- 颜色(Color):决定光线的颜色,同其他光源类型,通过 RGB 值设定。
- 强度(Intensity):控制光源的明亮程度,数值越高,光照越强。
- 范围(Range):指从光源位置到光照强度衰减为零的距离。
- 角度(Angle):决定锥形光照区域的开口大小。角度越小,光线越集中;角度越大,照射范围越广。
- 衰减(Attenuation):描述光强在距离上的衰减方式,常见的有线性和平方衰减。
应用场景:
- 舞台照明:模拟舞台上的聚光灯效果。
- 手电筒:在游戏中作为角色手持的照明工具。
- 局部突出:用于突出场景中的特定物体或区域。
例如,在一个恐怖游戏的走廊场景中,聚光灯可以设置为冷白色,强度较高,角度较小,营造出紧张和神秘的氛围,当角色经过特定区域时触发。在一个汽车展示场景中,聚光灯可以是金黄色,角度适中,范围较大,突出展示车辆的细节。
Area Light(区域光):
在 Unity 中,区域光(Area Light)是一种特殊类型的光源。
特点:
- 它模拟的是一个具有一定面积的发光表面,而不是一个点或方向。
- 提供相对柔和和均匀的光照效果。
属性:
- 颜色(Color):和其他光源一样,用于定义光的颜色。
- 强度(Intensity):控制光源的明亮程度。
- 尺寸(Size):决定区域光的长和宽,影响光照的范围和分布。
重要说明:
区域光仅在光照烘焙(Light Baking)时起作用,实时渲染中一般不支持。这意味着它主要用于预先计算光照信息,以提高渲染效率和获得更真实的静态光照效果。
应用场景:
- 室内环境中的天花板灯、大型灯箱。
- 模拟窗户投射进来的大面积光线。
例如,在一个室内家居场景的烘焙中,设置一个较大尺寸的区域光作为天花板的吊灯,可以为房间提供均匀而自然的光照。
三. Reflection Probe(反射探测器)
它的主要作用是为场景中的物体提供准确的反射效果。通过设置反射探测器,可以捕捉周围环境的信息,并将其应用到与之关联的物体上,从而增强场景的真实感和视觉效果。
例如,在一个室内场景中,如果没有反射探测器,物体的表面可能会显得过于平淡和不真实。但添加了反射探测器后,金属、玻璃等材质的反射效果会更加逼真,能够准确地反映出周围的环境和物体。
在实际应用中,反射探测器有不同的类型,如实时(Realtime)、烘焙(Baked)和自定义(Custom)等。实时反射探测器能够实时捕捉环境变化,但对性能有一定要求;烘焙反射探测器则是在构建场景时提前计算好反射效果,性能开销较小,但不能实时反映环境变化。
使用反射探测器时,还需要注意其位置、大小和精度等参数的设置,以获得最佳的反射效果。比如,在一个较大的开放空间中,可能需要放置多个反射探测器来覆盖整个区域,确保各个位置的物体都能得到准确的反射。
使用
在 Unity 中使用 Reflection Probe
(反射探测器),可以按照以下步骤进行:
创建反射探测器
- 在场景中,通过菜单
GameObject -> Light -> Reflection Probe
来创建一个反射探测器。设置反射探测器类型
- 实时(Realtime):适用于需要实时反映环境变化的场景,但对性能有一定影响。
- 烘焙(Baked):在构建场景时提前计算反射效果,性能开销较小,但不能实时更新。
- 自定义(Custom):可以根据具体需求进行更精细的设置。
调整反射探测器的位置和大小
- 确保反射探测器能够覆盖需要反射效果的区域。可以通过拖动和缩放来调整其位置和大小。
配置反射探测器的参数
- 例如,调整分辨率、清晰度、反射强度等参数,以获得理想的反射效果。
反射探测器的优点:
增强真实感
- 能够为场景中的物体提供逼真的反射效果,使物体看起来更加自然和真实。例如在一个有镜面材质的室内场景中,反射探测器可以准确地呈现出周围环境在镜面上的反射,增强整体的真实感。
优化性能
- 相比全局计算反射,通过合理设置反射探测器可以针对性地为特定区域提供反射效果,从而减少不必要的计算,优化性能。比如在一个大型开放世界游戏中,只在关键区域设置高精度的反射探测器,而在其他区域使用较低精度或不设置,节省资源。
灵活控制
- 可以根据不同的需求选择实时、烘焙或自定义等类型,灵活适应各种场景和性能要求。
改善材质表现
- 帮助提升金属、玻璃等材质的视觉效果,使其更具质感和光泽。
反射探测器的缺点:
性能开销
- 实时反射探测器可能会带来较大的性能开销,尤其是在场景中有多个实时反射探测器或者场景复杂度较高的情况下。
烘焙时间
- 对于烘焙类型的反射探测器,烘焙过程可能需要较长时间,特别是在大型复杂场景中。
覆盖范围限制
- 可能无法完全覆盖整个场景,导致某些区域的反射效果不够准确或缺失。
可能产生不连续的反射
- 当多个反射探测器的覆盖区域有重叠或间隙时,可能会出现反射效果的不连续或不一致。
设置复杂性
- 正确配置反射探测器的参数以获得理想效果需要一定的经验和技巧,对于初学者可能具有一定的难度。