配置光照贴图

Tutorial

·

Beginner

·

+0XP

·

15 mins

·

(17)

Unity Technologies

配置光照贴图

光照贴图是预先计算场景中表面亮度的过程。它会将计算出的信息存储在图表或光照贴图中,以备将来使用。光照贴图使您能以相对较低的计算成本来添加全局照明、阴影和环境照明。在本教程中,我们将了解光照贴图设置。

Languages available:

1. 有关光照贴图的更多信息

Unity引擎使用渐进式光照贴图系统,该系统将根据场景的设置为场景烘焙光照贴图。它会考虑在通过这个场景时,场景中的所有网格、材质、纹理和照明。生成光照贴图时,游戏对象将自动使用它们,因为它们是Unity渲染引擎的一部分。

2. 了解光照贴图设置

让我们来设置场景和光照贴图:

1. 从屏幕顶部的“Window”下拉菜单中,选择工具栏中的“Rendering”>“Lighting Settings”。此时将打开“Lighting”窗口(图01)。

Figure 01: Lightmapping Settings in the Light Settings Window

Figure 01: Lightmapping Settings in the Light Settings Window

2.折叠所有窗口,仅让“Lightmapping Settings”抽屉菜单保持展开状态。

3.确保将“Lightmapper”设为“Progressive CPU”。

3. 渐进式设置

目前,我们只关注“Light Setting”窗口中的“Lightmapping Settings”。

  • Lightmapper:使用该选项可指定在计算场景中的光照贴图时要使用的内部照明计算方法。选项包括“Progressive CPU”和“Progressive GPU (Preview)”。 这里还有一个“Enlighten”选项,但现在已被弃用,将来会移除,因此不建议您使用。
    • Prioritize View:启用该选项可让“Lightmapper”先将更改应用到“Scene View”中当前可见的纹理元素,然后再将更改应用到视野外的纹理元素。
    • Multiple Importance Sampling:启用该选项会在生成光照贴图时加快收敛速度,但在某些低频环境中会产生噪点更大的光照贴图。
    • Direct Samples:该选项控制从每个纹理元素拍摄的样本数量。最终,它将控制渐进式光照贴图用于直接照明计算的样本数量。
    • Indirect Samples:该选项控制从每个纹理元素拍摄的样本数量。最终,它将控制渐进式光照贴图用于间接照明计算的样本数量。
    • Environment Samples:该选项控制用于环境照明计算的样本数量。 增大此值可提高视效质量,但同时也会增加烘焙时间。
    • Light Probe Sample Multiplier:该选项控制用于光探头的样本数量。 它是上述值的乘数。 此值越大,光探头的质量就越高,但同时烘焙时间也越长。
    • Bounces:该选项控制在跟踪路径时要执行的间接反弹次数。通常对于大多数场景而言,值为2就足够了。
    • Filtering:“过滤”是从烘焙的光照贴图中去除噪点的方法。 您可以从以下三种方法中进行选择:“None”、“Auto”和“Advanced”。
  • Lightmap Resolution:使用该选项可指定用于光照贴图的每单位纹理元素数量。此值越大,视效质量就越高,但同时烘焙时间也越长。该设置同时涉及到光照贴图的高度和宽度。
  • Lightmap Padding:使用该选项可指定烘焙光照贴图中不同形状之间的间隔。
  • Lightmap Size:完整光照贴图纹理的大小。
  • Compress Lightmaps:切换该选项可压缩光照贴图。压缩后的光照贴图会占用较少的磁盘空间,但压缩过程可能会将不需要的视觉伪像引入到纹理中。
  • Ambient Occlusion:切换该选项可调整光照贴图中环境光遮蔽的其他设置(图02)。这些设置包括:Max Distance - 控制照明系统进行光线投射的射程。Indirect Contribution - 控制在最终光照贴图中看到的间接光的亮度。Direct Contribution - 控制直射光的亮度。
Figure 02: Ambient Occlusion Settings

Figure 02: Ambient Occlusion Settings

  • Directional Mode:该选项允许您存储游戏对象的每个点的主光源相关信息。它有两个设置:“Directional Unity”将生成第二个光照贴图,以存储入射光的主要方向。这样将允许漫射的法线贴图材质与GI一起使用。“Non-Directional Unity”不会生成第二个光照贴图,而是将信息存储在所生成的同一个光照贴图中。
  • Indirect Intensity:该选项控制Unity在实时和烘焙光照贴图中存储的间接光的亮度。
  • Albedo Boost:该选项可通过强化反照率材质来控制Unity在表面之间反射的光量。
  • Lightmap Parameters:该选项允许您为光照贴图选择一些预定义设置。用于光照贴图默认设置的选项包括:“Very Low”、“Low”、“Medium”和“High”。此设置还可以将自定义设置保存到新的默认选项中。

4. 烘焙设置

无论“Lightmapper”设置选择“Progressive”还是“Enlightened”,您都应了解如何正确设置项目以进行光照贴图烘焙。

1.首先,确保任何要应用光照贴图的网格都具有正确的光照贴图UV。要实现这一点,最简单的方法是选择模型以打开“Model Import Settings”,然后在最底端启用“Generate Lightmap UV”设置。

2.如果要尝试预览,则在“Light Settings”窗口的“Lightmapping Settings”下,确保将“Lightmapper”设为“Progressive CPU”或“Progressive GPU”。

3.接下来要设置光照贴图的分辨率。将“Lightmap Resolution”的值调整为您喜好的分辨率。

4.现在,确保要生成光照贴图的游戏对象/地形能够接收光照贴图。选择要包含的游戏对象,同时确保在Mesh Renderer组件中选中“Contribute Global Illumination”(图03)。这是在告诉Unity:启用了该选项的游戏对象不会移动或更改。在接下来生成光照贴图时,Unity会将它们添加到光照贴图中。

5.最后,您可能需要在Light Explorer中调整光照的设置。要访问该设置,请前往“Window”下拉菜单,然后选择“Rendering”>“Light Explorer”(图04)。

Figure 04: Light Explorer Window

Figure 04: Light Explorer Window

6.在这里,您可以调整可见的照明及其颜色、强度等。这是为了在烘焙光照贴图之前进行必要的微调。

5. 烘焙光照贴图

现在,我们已完成设置,快速浏览各项设置后,可以烘焙光照贴图了。

1.如果“Light Settings”窗口未打开,则通过打开“Window”下拉菜单并选择“Rendering”>“Lighting Settings”将其重新打开。

2.确保您位于“Lighting”窗口的“Scene”选项卡中。

3.在窗口底部,单击“Generate Lighting”。 根据您的设置,“Generate Lighting”按钮可能会灰显,而“Auto Generate”复选框则可能处于勾选状态。 如果勾选了该复选框,您的光照贴图就会在工作时生成。 如果不想这样做,只需取消勾选该复选框,“Generate Lighting”按钮就会变为可用状态。(图05)。

Figure 05: Generate Lighting button in the Light Settings window

Figure 05: Generate Lighting button in the Light Settings window

4.完成上述操作后,右下角的Unity编辑器状态栏中将会显示一个进度条(图06)。

Figure 06: Lightmap Progress Bar

Figure 06: Lightmap Progress Bar

5.烘焙完成后,您可以在“Lighting”窗口的“Baked Lightmaps”选项卡中查看所有烘焙的光照贴图。

Figure 07: Object Maps after Lightmap has been generated

Figure 07: Object Maps after Lightmap has been generated

生成光照贴图后,Unity将自动更新“Scene”视图,您可以查看结果并进行必要的调整。

6. 后续步骤

对于具有许多静态光源的场景,光照贴图可带来很大便利,因为它可以预先计算所有照明和阴影信息,并免除了项目运行时的成本。对于有大量光源的大型复杂场景,还可能进一步节省开支。

Complete this tutorial