《光与硅的艺术》连载——5.4 Ambient Occlusion(环境光阻光)
Note:《光与硅的艺术》写作于2015年,发表于2017年,书中部分内容可能与当前软硬件实际状况有出入,请注意区分。
AO(Ambient Occlusion,环境光阻光)是一种增加真实感的小技巧,它模拟物体转角处比平坦处更暗的现实效果,能以很低的成本有效地增加图像的真实感和体积感。VRED提供了两种环境光阻光的计算方法。一种是“烘焙AO”,另一种是“光线追踪AO”。
5.4.1 烘焙AO
不考虑环境光照特性,根据几何体结构进行计算而得到的AO被称为“烘焙AO”,有别于真正的光线追踪AO。它的主要用途是增强实时预览模式的效果,如图5-33所示。

优点说明
» 可提升实时预览效果。
» 一次烘焙,反复使用。
» 灵活控制阻光半径。
» 可用于光线追踪Precomputed(预计算)模式,以节约渲染时间。
缺点说明
» 质量低于光线追踪AO。
» 不根据真实光照计算结果。
» 无法生成硬阴影。
» 如果需要高品质的细节表现,则计算时间十分漫长。
5.4.2 光线追踪AO
“光线追踪AO”在VRED中被称为Occlusion通道,它是使用光线追踪算法,考虑几何体结构和环境光照特性所计算的真实阻光,效果如图5-34所示。

优点说明
» 极佳的渲染质量。
» 依据真实光照计算结果。
» 可以产生硬阴影。
缺点说明
» 一次计算,无法反复使用。
» 计算时间较长。
» 缺乏控制的灵活性。
TIPS 关于AO的其他知识,可参考第3章中“CG技术知识”的内容。
5.4.3 AO结果查看
如果要单独查看“烘焙AO”结果,可在关闭RT按钮的情况下执行Visualization(可视化)>Ambient Occlusion Rendering(环境光阻光模式)菜单命令,如图5-35所示。烘焙AO的效果如图5-36所示。


如果要单独查看“光线追踪AO”渲染结果,可在激活RT按钮的情况下执行Visualization(可视化)>Renderpasses Rendering(渲染元素模式)>Auxiliary Channels(辅助通道)>Occlusion(阻光)菜单命令,如图5-37所示。光线追踪AO的渲染效果如图5-38所示。


5.4.4 Ambient Occlusion模块
Ambient Occlusion(环境光阻光)模块简称AO模块或AO面板,用于控制场景中的AO和Indirect Illumination(间接光照)烘焙工作。烘焙后的场景可获得更好的实时预览效果,同时,烘焙结果还能用于Precomputed(光线追踪预计算)模式,以节约渲染时间。
TIPS 再次强调,AO模块是依据几何体结构进行计算的“烘焙AO”,而非Render Settings(渲染设定)面板提供的基于光照和光线追踪计算的真实阻光。
AO模块没有快捷方式图标,可执行Scene(场景)>Ambient Occlusion(环境光阻光)菜单命令,打开它,如图5-39所示。打开后的AO模块如图5-40所示。


Ambient Occlusion模块常用功能说明
» Settings(设置):提供系列附属功能,如预设参数设定、从现有对象读取烘焙参数等,使用频率较低。
» Direct Illumination(直接照明):注意这里的“直接照明”与“灯光”和“照明”无关,其参数主要控制AO烘焙功能。
Shadow Quality(阴影质量):设定烘焙AO的阴影质量,从Preview(预览)到Ultra High(超级高)共分为六档。越高级的档位的烘焙质量越高,但是计算时间也越长。普通场景预览可以使用Low(低)或Medium(中等)质量,为了追求更高质量也可使用更高档位,但需要付出额外的计算时间。
Minimum Distance(最小距离):最小烘焙距离。请保持默认1.00,以获得良好的细节结果。
Maximum Distance(最大距离):最大烘焙距离。默认参数为3000.00,几乎适合所有汽车场景。如果你认为烘焙的AO阴影范围过大,可以适当调小这个数值。
Clear All(清除全部):删除选定对象所有烘焙信息。
Clear Active(清除当前):删除选定对象烘焙信息。
Indirect Illumination(间接照明):该部分参数用于烘焙间接照明。
Enable(启用):打开间接照明烘焙。将这个选项保持关闭即可。
TIPS 对于外观表现而言,间接照明对最终效果影响不大,同时最终渲染输出会使用Full Global Illumination(完整全局照明)模式,所以不建议预烘焙间接照明,这样可以节约场景准备时间。
» Subdivision(细分):VRED烘焙质量与几何体网格密度有着明确的正相关关系,所以,如果几何体网格密度不足,那么就无法烘焙出优秀的结果。细分能大幅增加几何体表面的网格密度,使烘焙得到更细腻平滑的结果;但细分过程会消耗一定时间,且增加几何体面数。
Enable(启用):打开细分功能。
Quality(质量):设定细分质量,有Low(低)、Medium(中)和High(高)三个可选,质量越高,耗时越多。
Minimum Edge Length(最小边长):设定细分的最小边长,即小于此长度的几何体边不会被细分。通常使用默认值即可。
Intensity Threshold(强度阈值):设定细分的强度限值,通常不建议修改,否则可能会造成夸张的计算量。
» Calculate All(计算所有):使用当前参数为选中对象重新计算烘焙结果,而不考虑它是否已经被烘焙过。
» Calculate Missing(计算丢失部分):使用当前参数为选中对象计算烘焙结果,如果选中对象已有烘焙信息,则跳过计算。
» Cancel(取消):取消烘焙计算。
TIPS 当烘焙计算开始后,进度条将显示烘焙进度。但是应注意,烘焙过程中软件有可能假死,所以,不要完全相信进度条所显示的工作进度。

