目录
一. 简介
在 Unity 中,“烘焙”(Baking)是一种用于优化场景性能和提高视觉效果的重要技术
烘焙主要用于处理光照、阴影和反射等方面的效果计算。通过预先计算这些效果并将其存储为纹理或数据,在游戏运行时可以直接使用预计算的结果,而无需实时进行复杂的计算,从而显著提高性能。
例如,在光照烘焙中,Unity 会计算场景中静态物体的光照信息,包括直接光、间接光、阴影等,并将这些信息存储为光照贴图(Lightmap)。在运行时,这些静态物体直接使用烘焙好的光照贴图来显示光照效果,大大减少了实时计算光照所需的资源。
对于反射烘焙,Unity 可以计算反射探测器覆盖区域的反射信息,并将其存储为立方体贴图(Cubemap)或其他反射数据,在运行时直接应用到相关物体上。
烘焙的优点包括:
性能提升
- 避免了实时计算复杂光照和反射效果带来的性能消耗,使游戏在低端设备上也能流畅运行。
更真实的效果
- 可以获得更准确和细腻的光照和反射效果,提升场景的视觉质量。
减少动态计算的不确定性
- 预计算的结果具有确定性,不会出现实时计算中可能出现的闪烁或不稳定的情况。
然而,烘焙也有一些局限性:
缺乏实时动态变化
- 一旦烘焙完成,对于静态物体,光照和反射效果就固定下来,无法响应实时的动态变化,如移动光源或动态物体的影响。
烘焙时间成本
- 复杂场景的烘焙可能需要较长时间来计算和生成数据。
内存占用
- 烘焙生成的光照贴图和反射数据会占用一定的内存。
二. 场景.环境,光照贴图
场景生成光照
在 Unity 中,场景生成光照是指通过各种光源和设置来创建整个场景的照明效果。这包括使用方向光模拟太阳光、点光源模拟灯泡、聚光灯模拟舞台灯等。场景生成光照还涉及到调整光源的颜色、强度、衰减等参数,以营造出符合需求的氛围和视觉效果。
例如,在一个森林场景中,可以使用方向光来模拟从天空穿透树叶的光线,再用点光源来表示隐藏在草丛中的萤火虫发出的光。
环境生成光照
环境生成光照主要关注的是场景的整体环境氛围。这包括天空的光照、大气效果(如雾、霾)以及背景的光线等。通过设置天空盒、环境光等来影响整个场景的色调和亮度。
比如,在一个黄昏的场景中,可以选择一个橙色色调的天空盒,并调整环境光的颜色和强度,以营造出温暖而柔和的氛围。
实时生成光照
实时生成光照意味着在游戏运行时实时计算和更新光照效果。这种方式能够对动态变化的场景元素做出即时响应,例如移动的物体、动态光源等。但实时生成光照对硬件性能要求较高。
举例来说,在一个实时战斗的游戏中,玩家控制的角色手持火把在黑暗的洞穴中移动,火把产生的光照会实时照亮周围的环境和物体。
烘焙生成光照
烘焙生成光照是在构建场景时预先计算并存储光照信息。它适用于静态物体,将光照效果烘焙成光照贴图或其他形式的数据,在运行时直接使用,大大提高了性能。
例如,在一个大型的室内场景中,将房间内的固定家具、墙壁等的光照效果进行烘焙,这样在游戏运行时就无需实时计算这些静态物体的光照,节省了性能开销。
环境(Environment):
环境包括天空、大气效果、雾、背景等元素,它们共同影响着场景的整体感觉。Unity 提供了各种环境设置选项,如天空盒(Skybox)、雾效(Fog)等,可以用来营造不同的天气和氛围。
例如,通过设置雾效,可以模拟出早晨的薄雾或山区的浓雾,增强场景的深度感。
光照贴图(Lightmap):
光照贴图是一种预先计算好的光照信息存储方式。它将光照效果烘焙到纹理上,然后应用到场景中的静态物体上,以提高性能。光照贴图可以捕捉复杂的光照和阴影效果,使静态物体看起来更加真实。
比如,在一个室内场景中,墙壁、地板和家具等静态物体可以使用光照贴图来呈现细腻的光照和阴影,而动态物体则可以使用实时光照进行计算。
三. 使用
-
准备场景
- 确保场景中的模型摆放合理,并且标记了需要烘焙的静态物体。在 Inspector 面板中,将物体的
Static
选项勾选上。
- 确保场景中的模型摆放合理,并且标记了需要烘焙的静态物体。在 Inspector 面板中,将物体的
-
创建光源
- 添加并设置好各种光源,如方向光、点光源、聚光灯等。确定光源的位置、颜色、强度等参数。
-
添加反射探测器(可选)
- 如果需要反射效果,添加反射探测器并进行相应设置。
-
设置烘焙参数
- 在 Unity 的菜单栏中,选择
Window -> Lighting -> Settings
打开光照设置窗口。 - 在
Lighting
选项卡中,您可以设置烘焙的分辨率、间接光强度、环境光等参数。
- 在 Unity 的菜单栏中,选择
-
选择烘焙模式
- 常见的烘焙模式有
Baked GI
(全局光照烘焙)和Shadowmask
等。根据项目需求选择合适的模式。
- 常见的烘焙模式有
-
点击烘焙按钮
- 完成上述设置后,点击
Generate Lighting
按钮开始烘焙。
- 完成上述设置后,点击
需要注意的是,烘焙过程可能需要一些时间,具体取决于场景的复杂度和您的计算机性能。