Unity中的灯光
一、引言
在Unity中,有两个地方可以设置灯光,分别是场景中的Light对象和菜单栏中 Window -> Render -> Lighting 中的灯光设置。
这两者往往会让人感到困惑,下面总结一下它们的区别和用法。
二、Light对象
- 位置:在场景视图中,您可以添加不同类型的Light对象,如点光源(Point Light)、聚光灯(Spot Light)、方向光(Directional Light)、和区域光(Rectangle Light)等。
- 功能:Light对象直接影响场景中的实时照明。您可以调整灯光的类型、颜色、强度、范围等参数,实时影响游戏对象的外观。
- 用法:Light对象通常用于实时照明场景中物体,使得物体在不同的角度和距离下具有不同的光影效果。
三、Lighting窗口中的设置
- 位置:在Window > Rendering > Lighting设置中,可以找到全局光照(Global Illumination)和环境光(Environment Lighting)等选项。
- 功能:Lighting窗口中的设置主要用于全局光照计算和烘焙光照。这里可以设置环境光、天空盒、全局光照模式(实时、烘焙、混合)以及烘焙设置等。
- 用法:Lighting窗口中的设置主要用于全局光照和环境光的配置。比如,您可以设置场景的环境光(Ambient Light),这会影响所有对象的基本光照;您也可以设置天空盒(Skybox),这会影响场景的背景和反射。
四、区别
实时灯光(Light对象):
- 实时影响:Light对象的设置是实时生效的,即时对场景中的对象产生光影效果。
- 性能消耗:实时灯光会消耗更多的计算资源,特别是在有大量动态灯光时,可能会影响游戏的性能。
环境光照和光照烘焙(Lighting窗口):
- 全局设置:Lighting窗口中的设置影响整个场景的光照,包括环境光、天空盒、全局光照和烘焙设置。
- 性能优化:光照烘焙(Bake Lighting)可以预计算光照信息,将其存储在光照贴图中,从而减少运行时的计算量,提高性能。
五、例子
- 室外场景:使用一个Directional Light模拟太阳光,同时在Lighting窗口中设置天空盒和环境光,以提供全局光照和环境反射。
- 室内场景:使用多个Point Light和Spot Light模拟室内的灯光,使用Lighting窗口中的光照烘焙功能预计算光照贴图,提高性能。