上一章:【Unity3D技术文档翻译】第3.6.2篇 渐进式光照贴图(Progressive Lightmapper)
本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Lighting】→【Global Illumination】→【Progressive Lightmapper】→【Lightmapping: Getting started】
光照贴图:入门指南
本节将介绍 Unity 中的光照贴图。光照贴图是预计算场景中物体表面亮度的过程,然后将计算结果存储在一个图表或者“灯光贴图”中,以供接下来使用。
Unity 使用一个叫做 渐进式光照贴图(Progressive Lightmapper)的系统,基于你的场景设置(涉及 Meshes、Materials、Textures 和 Lights)烘焙光照贴图。光照贴图是渲染引擎的重要组成部分;当你创建好光照贴图后,游戏对象将自动使用它们。
想要了解更多关于光照贴图相关设置的信息,请看 第3.2篇 Lighting Window 一节。
准备场景,然后烘焙光照贴图
在 Unity 编辑器菜单中依次选择 Window > Lighting > Settings 菜单打开 Lighting window。确保你想要应用光照贴图的网格具有正确的光照贴图 UVs。确保这点最简单方法是打开 Mesh import settings 并开启 Generate Lightmap UVs 选项。
接着,为了控制光照贴图的分辨率,来到 Lightmapping Settings 部分并调整 Lightmap Resolution 数值。
注意:为了对光照贴图中纹素是如何被使用的有个更好的了解,可以在场景视图中将 Draw Modes 设置为 Baked Lightmap,并勾选 Show Resolution 复选框,进入测试模式 debug scene visualization mode 查看可视细节。
在游戏对象的 Mesh Renderer(网格渲染器) 和 Terrain(地形) 组件中,开启 Lightmap Static 属性。这将通知 Unity 该游戏对象不会移动或改变,因此 Unity 将为它添加一张光照贴图。而在 Mesh Renderer 组件中,你还可以使用 Scale In Lightmap 参数来调整光照贴图的静态 Mesh 或 Terrain 的分辨率。
你还可以在 灯光探测器(Light Explorer) 中调整设置。
为了生成你的场景的光照贴图:
- 在 Lighting Window 中 Scene 标签的底部,点击 Generate Lighting 按钮(或者确保 Auto Generate 选项是勾选的)。
- 在 Unity 编辑器的右下角会出现一个进度条。
- 当烘焙完成,你就可以在 Global Maps 和 Object Maps 标签中查看所有烘焙好的光照贴图。
当光照贴图完成后,Unity 场景和游戏视图会自动更新。
想要看网格的 UV 图,可以点击开启了 Lightmap Static 选项的游戏对象,在检查器中选择 Object Maps 标签页即可。在这里,你还可以切换不同的光照贴图可视模式。当你手动生成了光照贴图,Unity 将添加 Lighting Data Assets、baked lightmaps 和 Reflection Probes 到 Assets 文件夹中。
调整烘焙设置
场景的最终外观取决于你的光照设置和烘焙设置。让我们来看看一个使用了一些基本设置后光照质量得到提升的例子。
为了消除噪声,会对渐进式光照贴图(Progressive Lightmapper)生成的单个射线产生的颜色值进行采样计数。这些颜色值被称为采样(samples)。有两个设置项可用于控制渐进式光照贴图对直接和间接光照计算的采样数:Direct Samples 和 Indirect Samples。想看到这两个选项,可打开 Lighting window(Window > Lighting > Settings),然后进入 Lightmapping Settings > Lightmapper。
更高的采样数将减少噪声,并提升光照贴图的质量,但是同时会增加烘焙时间。下面几张图展示了在不使用过滤器的情况下,越高的采样数是如何提升光照贴图质量,并降低噪声的。
采样数为10的场景 采样数为100的场景 采样数为1000的场景环境光照
除了 光源( Light sources),环境光照(Environment Lighting)也对全局光照(GI)有影响。你可以分配一个自定义的天空盒材质,来取代默认的 Procedural Skybox 并调节亮度。下图展示了有和无环境光照(Environment Lighting)时光照的变化,以及不同的柔化效果。Unity 在 Asset Store 中提供了一些自定义的 HDRI 资源。
过滤处理
过滤处理可以模糊噪声结果。渐进式光照贴图提供了两种不同类型的过滤器:Gaussian 和 A-Trous。当你开启了 Advanced 设置,你就能够将这些过滤器分别应用到直接光(Direct)、间接光(Indirect)和环境遮蔽(Ambient Occlusion)上。想了解更多信息,请看 第3.6.2篇 渐进式光照贴图(Progressive Lightmapper) 一节。
如果本文对你有帮助的话,点个赞或者评论一下吧!
下一章:【Unity3D技术文档翻译】第3.6.2.2篇 光照贴图接缝缝合(Lightmap seam stitching)
网友评论