The Basics of Image-Based Lighting 基于图像的照明技术
在真人电影特效制作中,用CG制作的物体与包含背景的现实生活视频帧合成,有时还包括现场演员。为了在没有明显视觉不一致的情况下执行此合成,需要尽可能准确地重新创建真实场景的照明,并使用此照明渲染CG对象。一种方法是捕获位于CG对象所在场景中的白色聚苯乙烯或金属球体的图像,并基于捕获的图像执行CG照明。然而,这需要大量的试验和误差,并且提供了对场景照明的有限测量。需要更准确、更自动化的方法。可以说,对这一问题的认识导致了基于图像的照明(IBL)的概念和实际应用,其中照明是直接从原始环境的照片中重建的。
The Birth of IBL IBL的诞生
Debevec 在钟楼电影中高动态范围成像十分感兴趣[Debevec 97],然而,HDR并不是在电影创作过程中困扰他的唯一问题。Debevec的目标是在真实环境中光真实地渲染计算机生成的物体,要求CG物体被从环境中捕获的照明照亮。在基于图像的渲染中使用的照明信息与对象纹理相结合。我们需要的是一种方法,利用捕获的图像来区分照明信息和物体的一般外观。
准确捕捉覆盖广泛亮度范围的图像的问题,以及从环境图像中恢复照明信息的问题,最初被视为单独的问题。在拍摄钟楼电影时,Debevec有一个模糊的想法,那就是把背景图像作为一种光源。在开发了一种创建HDR图像的方法后,他转向了从真实的背景图像中恢复照明信息的问题。
Debevec考虑通过将HDR背景图像中的像素作为散射在CG环境背景周围的光源来进行全局照明计算。尝试这一点需要一套很好的GI渲染工具。幸运的是,Greg Ward是通过HDR图像的研究认识的,他已经为辐射系统添加了使用环境贴图执行GI的功能。Debevec接着利用这个想法开发了他的渲染系统,并创建了第一个基于辐射的测试图像。尽管Greg Ward怀疑Debevec的想法能否实现,但他们都对结果感到惊喜。
SIGGRAPH在论文“Rendering Synthetic Objects into Real Scenes”[Deevec 98]中介绍了创建这些测试图像的方法。然而,“Image based Lighting”一词从未在论文中实际使用过。这个词最早是在Debevec的一系列动画电影在德国上映时创造的,许多电影都以“Image-Based Modeling, Rendering and Lighting”为标题。Debevec非常喜欢“image-based lighting”这个短语,并在随后的出版物和演示中使用了它。不久之后,“IBL”一词在CG领域得到了很好的确立。
The Basic Process of IBL IBL的基本过程
图7.1说明了Debevec的“将合成对象渲染为真实场景”论文中描述的基本过程。图中的“真实场景”是一张包含一些真实对象的桌子。目标是将CG对象(在桌面上)添加到该场景的照片中,以便它看起来像原始场景的一部分。这些步骤概述如下。
The Basic Process of IBL
图7.1展示了Debevec的“Rendering Synthetic Objects into Real Scenes”论文中描述的基本过程。这张图中的“real scene”是一张有一些真实物体的快照。目标是将CG对象(在快照上)添加到该场景的照片中,使其看起来像原始场景的一部分。步骤概述如下。
1.拍摄场景;CG对象将被合成成此图像(图7.1(a))。
2.在放置 CG 物体的位置获取环境光线。具体方法是拍摄一个光探针,这是一个放置在 CG 物体所在环境中的镜面球体。从几个视角对光探针进行拍摄,每个视角使用不同的曝光时间(图 7.1(b))。
3.根据光探针图像构建全向 HDR 辐射图。图像构建全向 HDR 辐射图。首先使用 Debevec 和 Malik 的技术将每个视点的图像转换为 HDR 图像,然后将这些 HDR 图像拼接成环境的 HDR 辐射图 图 7.1(c))。
4.构建本地环境模型。该模型只需包括靠近 CG 物体的环境部分。该模型用于模拟近场照明效果,如相互反射和阴影。需要知道局部物体的表面反射特性,但只是近似值(图 7.1(d))。
5.将 CG 物体添加到本地模型中,并使用捕捉到的 辐射图作为光源进行渲染。
6.将渲染好的对象合成到步骤 1. 的照片中。
因此,光照恢复有两个要素:代表远场光照的环境辐射图和用于近场效果的局部模型的构建。此外,还需要本地模型来包含场景中 CG 物体的阴影。与从光照问题中获取辐射图相比,构建局部模型的难度相对较大。
如果环境中的物体距离 CG 物体足够远,则可以忽略物体与 CG 物体之间的相互反射。在这种情况下,环境中的所有照明都来自 HDR 辐射图,渲染过程也就变得简单多了。仅使用辐射图渲染具有全局照明的 CG 物体是蒙特卡罗路径追踪技术的直接应用(计算机图形学魔法的概述篇(二))。物体反射的光线不会被直接追踪;相反,反射光线所携带的辐射度直接来自辐射度贴图。不过,物体内部的相互反射需要进行二次路径追踪,但仅限于物体内部。
但是,如果不能忽略靠近 CG 物体的近场效应,就必须将其建模到渲染 CG 物体的场景中。这不仅需要物体的几何形状,还需要它们的反射特性。几何形状可以通过 IBR 方法恢复(计算机图形学魔法的概述篇(四)中描述的 Debevec Taylor 和 Malik 的建筑模型恢复方法),但恢复反射是一个困难得多的问题。因此,Debevec 作了一个简化假设,即附近的场景物体具有朗伯表面。该方法首先估算场景物体的反照率,然后通过渲染 CG 物体来完善估算结果,并比较合成图像中的结果。虽然这看起来不科学,但这项工作的目标是创建可信的结果,因此这种方法是合理的。事实上,这种为提高视觉质量而进行的临时调整在计算机图形制作(和研究)中很常见--有时渲染的图像缺乏美感,而这种美感只能通过人工干预来增加。然而,从捕捉到的图像中恢复反射特性的问题仍未解决。
Environment Maps and IBL 环境贴图和IBL
Debevec 在 “Rendering Synthetic Objects into Real Scenes”一文中介绍的基本流程经过改进,可用于更多实际情况。近年来,使用 HDR 环境贴图作为渲染计算光源的方法已成为 IBL 的主要方法。对一般环境贴图研究的兴趣也是这一趋势的一部分。最初,环境贴图被用作一种特殊的纹理贴图。但在现代研究中,环境贴图被用于 GI 计算中的照明。本节将介绍环境贴图在现代环境中的应用,并探讨环境贴图与 IBR 的关系。
IBL Using HDR Environment Maps
从 Debevec 的光探针图像中恢复的 HDR 辐射图提供了来自探针中心各个方向的入射辐射。但它也可以被视为来自一个包含整个环境的巨大球体上的一个远方点。从这个意义上说,辐射图是一种 HDR 环境图。这种解释非常有用,因为环境贴图在基础渲染中已经得到了很好的应用;事实上,环境贴图查找在图形硬件中非常普遍,因此可以在 GPU 着色器中使用。
图 7.2 展示了如何使用环境贴图来渲染一个简单的场景,该场景由一个坐落在木块上的球体组成。通过蒙特卡洛射线追踪(见第 2 章),可以渲染出包括全局光照在内的球块表面上的一个点 p。光线在 p 点表面上方的半球方向上采样。环境中未被遮挡的光线会击中环境球体,因此光线所携带的辐射直接来自环境贴图。如果特定方向的光线击中另一个物体,则必须在与该物体的交点处进行 GI 计算。计算的方法相同,都是对环境进行采样。严格来说,这种方法并不需要使用 HDR 环境贴图,但真实环境中的光照动态范围通常比普通纹理贴图所能存储的范围要大得多。低动态范围的环境贴图作为光照源的用途有限。
Clustering: Simplifying Environment Maps Clustering: 简化环境贴图
使用环境贴图进行渲染可以生成准确的场景 GI 渲染图。然而,数字艺术家通常会发现很难构建出与场景照明先入为主的概念相对应的环境贴图。艺术家们更习惯于用点光源对场景进行照明;安排点光源的位置和亮度更为直观。虽然可以直接使用这些点光源渲染场景,但将它们转换为环境贴图会使照明更加平滑。这样绘制的环境贴图由不相连的区域组成,每个区域包含一个点光源。来自点光源的光线会分散到整个区域,使所有像素的辐射值之和与光源的强度相匹配。
将球体划分为区域的过程还有其他应用。例如,它可以用来简化点光源过多的环境。在这种情况下,问题在于如何构建与点光源集合产生的平均光照度相对应的区域,而这些点光源的光照强度应该是相似的。区域内的照度是其包含的光源的平均照度,或者是区域内一个代表性光源的照度。这一过程被称为聚类。集群区域产生的照明可视为该区域中心单个点光源的照明。数字化环境图的每个像素(如使用所述光探针方法获得的环境图)都可视为一个点光源。通过聚类,可以将所有这些像素还原为几个具有代表性的点源,或在此情况下可称为样本。
对球面上的点进行聚类可以使用 k-means 算法。在该算法中,聚类的数量从一开始就已确定。如果有 N 个聚类区域,则根据随机选择的 N 个样本 U1、U2......、UN 创建一组初步区域。这些区域构成了一个被称为 "沃罗诺伊图 "的球面分区:在包含 Ui 的区域内,球面上的所有点都比其他随机选择的点更靠近 Ui。图 7.3 显示了标有 U1、U2 和 U3 的样本点的三个此类区域的一部分。因此,每个初步区域都包含随机选择的 N 个样本点中的一个点以及任意数量的其余点。下一步是更新区域,使其与整个点更加匹配。计算每个区域中所有点的中心点(平均位置)(图 7.4),然后使用中心点而不是原始的 N 个样本点重建区域。重复这一步骤,直到各区域趋于一致。k均值 "这一名称是指一个点集合用 k 个平均值(均值)来表示。
根据一组点源应用 K-means 算法对球体进行分区有一个主要缺点。分割是根据与点光源的距离进行的,光源的强度并没有考虑在内。因此,最重要光源的区域与次重要光源的区域被视为相同。如果点光源的强度大致相同,这就不是问题。然而,电影照明(真实和虚拟)通常使用不同种类的灯光:主光用于场景元素的主要照明;补光用于减少阴影和改变对比度。补光灯的强度通常低于主光灯,而且补光灯的数量通常更多。使用 k-means 算法构建的环境不可能很好地体现主光和补光。
Sampling an Environment Map
当 HDR 环境贴图用于场景照明时,通常包含所有照明光源,包括灯光。因此,通过光线追踪对半球进行采样会遇到第 2 版所述的相同问题:需要大量采样才能确保有足够的随机光线击中光源和其他亮点。这个问题在环境贴图中更为普遍,也更为复杂,因为贴图中的亮点不一定事先知道。图 6.4 所示的教堂图像就是一个很好的例子。在该环境中,大部分光照来自窗户。在这一特定环境中,窗户的范围相当大,但在其他环境中,可能会有较小的集中光源,这些光源被随机样本击中的机会很小。因此,有必要采用某种方法来确保高动态范围环境地图的明亮部分得到正确采样。
k-means 算法提供了一种方法。环境贴图中的每个像素都可视为一个点源,即球面上的一个点样本。k-means 算法可用于将这些样本聚类为较少代表性样本的集合。例如,典型的 HDR 环境地图有几百万个像素。k-means 算法可以将其减少到几百个具有代表性的聚类。Jonathan Cohen 开发了一款名为 LightGen 的 HDR Shop 插件,它可以使用加权版的 k-means 算法实现这一功能。
简而言之,对光照高度不均匀的环境进行均匀采样(大多数环境都是如此),很可能会产生伪影。因此,为了实现高效采样,有必要采用一种重要度采样形式。Sameer Agarwal、Ravi Ramamoorthi、Serge Belongie 和 Henrik Wann Jensen 的论文 "Structured Importance Sampling of Environment Maps "介绍了一种使用环境地图球形分区进行重要度采样的方法[Agarwal et al. 03]。这些分区在论文中被称为 "分层"(strata),实质上代表了一组近似于环境光照的定向光源。之前描述的 k-means 算法也有类似的功能;不过,本文中描述的方法能生成更好的样本集,还能将它们按层次排列,以便更有效地进行渲染。
构建样本的过程首先是将环境地图划分为亮度相似的部分或 "层"。这些层的边界类似于地形图上的等高线(图 7.3(a))。然后将这些层划分为互不相连的 "层",每个 "层 "包含一个样本。层(样本 层(样本)的数量是通过平衡相对面积和相对亮度的重要性来确定的。相对面积和相对亮度之间的平衡。该方法基于函数
其中 L 是辐射度(亮度),Δω 是区域的总实体角,即区域的球面面积。面积和亮度的相对重要性由可调参数 a 和 b 控制。例如,如果 a = 0,b = 1,则重要性采样仅由面积驱动。如前所述,这种参数选择会降低小光源的重要性。另一方面,如果 a = 1,b = 0,则采样完全由亮度驱动。在这种情况下,问题就出在对暗像素的不恰当表示上,因为这些暗像素共同对照明有很大的贡献。本文中的实现方法实际上使用了 a = 1 和 b = 1/4,并且还采用了一种修改方法来确保 Δω 不会变得太小。
将map分割成不同的图层分别采样,可以使亮度较高的图层采样密度更大,同时确保亮度值最低的图层也被适当包含在内。分层是针对图层的连接部分进行的,从最亮的图层开始向最暗的图层进行分层(这就是分层的作用)。每一层的样本数与每一层的 Γ 值成正比,其中 L 和 Δω 来自于对分量中所有像素的值和实体角(图 7.5)的求和(等式 7.1)。所有这些像素的集合被视为一组点样本,目标是将它们聚类为一组具有代表性的样本。作者采用了一种称为 Hochbaum-Shmoys 聚类算法的算法,该算法采用 "最远优先 "的方法。第一个样本被选为区域中最亮的像素。然后再选择该区域中离第一个样本最远的点。在每次迭代中,下一个样本点都是距离目前所选样本最远的点;也就是说,下一个样本是该区域中与所有其他所选样本最小距离最大的点。
图 7.6(b)显示了所得到的样本集和最亮图层一个分量的相应层。为清晰起见,靠近分量边缘的点的分层被分量边界裁剪;它们实际上是向外延伸的。分层过程在下一层继续(图 7.6(c))。上一层的样本点保持不变。新的样本点继续使用Hochbaum-Shmoys 算法选择,就像什么都没变一样。唯一不同的是,在这一层每个区域选择的样本更少,因此采样密度更粗。然后继续对下一层进行分层,并在最底层分层完成后停止(图 7.6(d))。因此,环境地图最亮部分的采样密度最大,随着亮度的降低,采样密度逐渐变小。
图 7.7(a)包含一个简单场景的渲染图,该场景由 HDR 环境贴图拍摄,环境中的光照高度不均匀,并且有许多明亮的光源。图 7.7(b) 显示了(a)部分场景中矩形区域的特写。左列中的图像是使用加权 k 均值算法(通过 LightGen)构建的样本渲染的;右列中的图像是使用结构重要性采样算法渲染的。两者使用相同数量的样本(300 个)来表示环境图。k-means 图像中可见的带状效果是由于代表亮光的样本突然出现,这是因为环境地图中的这些部分没有使用足够的样本。图 7.8(b)和(c)分别说明了加权均值算法和分层重要性抽样算法生成的样本点的分布情况,并与图 7.8(a)中的环境地图本身进行了对比。k-means 算法未能将样本集中在明亮的窗口中,从而导致了带状伪影。作者指出,除了在样本数量相同的情况下产生更好的结果外,他们的算法所需的预处理时间也远远少于 k-means 算法。
Environment Maps and Prefiltering
点采样 HDR 环境贴图的另一个问题是 高频 "细节。如果环境贴图有很多细节,采样方向上的微小变化就会导致结果的巨大差异。例如,图 6.4 中教堂环境中彩色玻璃窗上的一个采样点可能会打在窗户上的铅质隔板上,但只要稍微改变一下方向,就能得到阳光直射窗格的数值。全局照明计算实际上需要的是来自球面上某个方向区域的辐射的平均值。该区域的大小或实角 取决于采样密度和特定目的。例如 例如,在路径追踪中,次表面交叉点的 GI 计算不需要特别精确,因此在计算时,只需计算次表面交叉点的 GI 总和。因此,几个较大区域的平均入射辐射度之和就足够了。平均区域的平均入射辐射度之和就足够了。对环境贴图进行预过滤是进行这种局部平均的一种方法。
上节介绍的聚类方法可以看作是一种预过滤:每个聚类的样本代表了该聚类区域内所有像素的平均值。不过,该值只是一个具有代表性的样本,而不是真正的平均值。此外,对于环境贴图来说,聚类是固定的。我们需要的是一种多分辨率表示法,它能提供不同尺度的局部平均值。光流中使用的图像金字塔法和用于渲染抗锯齿纹理的 mip 贴图就是多分辨率技术的范例。
环境贴图是在球面上定义的辐射函数。在球面上逼近函数的既定方法是使用球面谐波。球面谐波是线性谐波在球面上的推广。“harmonic "一词来源于音乐。乐器以特定频率(基频)发出的音调,实际上是由一系列基频整数倍的振动组成的,这些振动被称为谐波或泛音。任何纯音都可以通过加权谐波的总和来再现。这与周期函数傅里叶级数的数学概念相对应。
单位球面上的函数 L(θ,φ) 可以类似地方式表示为球面谐波(SH)基函数之和:
其中,每个系数Ll,m是通过对球面上相应的基函数Yl^m(θ,φ)积分L(θ,φ)来计算的
这里使用函数和字母“L”的SH系数来消除不同函数的系数集的歧义,例如,辐射度L和辐照度e。
图 7.9 显示了 SH 展开使用的坐标系。注意 θ是从正 Z 轴测量的,而 φ 是 "经度 "坐标。
下面定义的球面谐波基函数 Ylm 是球面上的复函数。每个 l = 0,1,......都有一个基函数,每个 m = -l,...,l。SH 基函数是一个正交基,这意味着
其中 ∗ 上标表示复共轭。公式 (7.3) 中给出的系数 Ll,m 的计算公式就取决于这一特性。
球谐波基函数 球谐波基函数 Yl m 的定义是:对于每个 l = 0,1,......和每个 m = -l,-l +1,......,l
其中Kl m是一个标准化因子,通常定义为
虽然还有其他的定义。Plm(x)是的勒让德多项式。对于这些多项式的系数没有直接的公式。它们可以用以下几种方式来定义,例如,
递归公式
在实践中经常使用。当应用于实值函数时,可以使用基函数Yl m的“实数形式”来代替。这些真正的球面谐波是
并通过将这两个索引都放在下标中来区分于复杂版本。表7.1包含了前几个真实的SH基函数。
环境图的球面调和展开式。方程(7.2)形式的表达式称为球谐展开。在实践中,级数通常被限制在一个有限数量的项中,在这种情况下展开成为SH基函数的线性组合。一个优点是,数学运算如分化和积分扩展函数减少操作SH基函数,因为这些是独立的函数L,操作可以没有任何知识的函数L.多少项包括在一个近似取决于特定的情况。指数l被称为基函数Yl,m的度。有2个l度的+1 SH基函数。这个度也表示基函数的频率:对于一个特定的l,基函数在球体周围振荡l次(粗略地说)。这将环境地图中细节的“频率”的概念形式化,即SH近似忠实地表示地图所需的最小度l。
到l级的扩展根本不能捕捉比基函数振荡变化更快的细节。为了在一般环境地图中捕获像素级细节,必须包含像素分辨率频率两倍的细节。也就是说,大约需要像素的四倍的系数来正确地表示像素级的细节。SH扩展的主要用途是捕获函数的一般缓慢变化的行为。对于环境地图,低频SH近似是对地图的一种过滤。第一个基函数Y0,0实际上是常数,所以对应的系数L0,0是地图的平均值。l = 1的基函数在球体周围经过一个周期,所以它们代表了每个八分体的局部平均值。因此,l级下的系数集捕获了该频率下的一般变化。在某些情况下,缓慢变化的环境图近似是有用的,比如漫射照明的近似。因此,环境映射的球谐展开是一种映射的多分辨率预过滤。
在光谱的另一端,一个不连续的变化,在某种意义上,是一个无限快的变化。一个有限的SH展开不能捕获一个不连续点——这需要无限的SH级数。不幸的是,在不连续处的有限SH近似下出现了一个收敛问题。在“跳跃”不连续时,有限近似在最大程度的频率上表现出振荡。对这种效果的一个有用的类比是一个钟的突然撞击:其结果是一个衰减的声音振动。在近似中的振荡伪影一般被称为振铃。球面谐波近似通常表现为振铃;影响的严重程度取决于应用情况。
Irradiance Environment Map
由于球面谐波展开度数的增加会导致系数数的二次方增加,因此对于度数较高的展开,计算负荷会变得很重。另一方面,限制项数也会限制展开的精度。Ramamoorthi 和 Hanrahan 发现,在一种应用中,低度 SH 表示已经足够。正如他们在论文 "An Efficient Representation for Irradiance Environment Maps" 中所展示的,九个 SH 项就足以对环境图产生的辐照度进行有用的近似[Ramamoorthi and Hanrahan 01a]。
如第 1 章所述,入射到朗伯面(漫反射)上的光在各个方向的反射率相同。因此,朗伯表面的反射辐射率只取决于表面辐照度----入射光线的方向并不重要。(漫反射的这一特性在渲染中经常被利用,第 2 章将对此进行讨论)。Ramamoorthi 和 Hanrahan 利用球面谐波来近似表面辐照度。某点的表面辐照度是余弦加权入射辐照度的积分。根据公式 (1.6):
式中,n是表面法线,Ω(n)是表面上方的半球;它被表示为n的函数,以强调它依赖于表面法线。
现在考虑一下入射辐射的SH扩展
如果L来自于一个环境映射,那么系数Ll,m就可以预先计算出来。目的是找到表面辐照度膨胀的系数El,m。这由于表面本身而变得复杂——来自表面下面的辐照度对辐照度没有贡献。假设E和L在同一个球坐标系中展开,通过添加一个几何“裁剪”项A(θ) = max(cosθ,0),公式(7.5)可以推广到整个球体上的一个积分:
将L和A的SH展开式代入方程(7.6),得到一个表达式,可以积分得到辐照度的SH系数El,m。
如果不是由于SH系数的标准正交性质,由替换得到的嵌套双无穷求和将没有什么实际应用价值。然而,扩展这些项的和会产生一个项的集合
根据公式(7.4),除非l = l‘和m=m’.,否则为零此外,非零项简化为仅Ll,mAl‘,m’.换句话说,SH展开式乘积的积分等于它们系数的乘积相加。这一特性被广泛地应用于第10章中描述的预先计算的辐射传输方法中。对于表面辐照度问题,不依赖于φ的剪切项A(θ)的SH系数仅在m = 0时为非零。正因此,”
(SHlm(θ,φ)实际上并不依赖于φ)。表面辐照度的SH膨胀实际上成为
这确实是一个显著的结果,因为它将环境映射的集成简化为SH系数的直接乘法。
式(7.7)中的Ll,m系数可以为特定的环境图预先计算。Al系数只依赖于l;拉莫莫提和汉拉汉导出了l对Al的直接公式。图7.10显示了Al作为l的函数的图。值得注意的是,这些值很快就降到了零——只需要三项就可以得到一个合理的近似。这意味着在方程(7.7)中,l可以被限制为2,并且由此产生的辐照度近似只包含9个项。
上述推导假设辐照度在相同的全局球坐标(θ,φ)中计算,并且隐式地假设表面法线的θ=为0。换句话说,辐照度是计算为一个特定的表面,即全球球面坐标系的“赤道”平面。要渲染的场景中的曲面具有任意的曲面法线。假设一个场景曲面具有(单位)法线n。上面的推导仍然适用,但在一个n是“北极”的局部球坐标系中。剪切函数A(θ)是指这个局部坐标系,所以Al的值不变。然而,对于这个局部坐标系,必须对辐射系数Ll,m进行重新计算,这通常需要再次过滤环境映射。对每个曲面法向方向这样做都违背了目的。
幸运的是,还有一个更好的方法。每个球面坐标系都对应于一个矩形坐标系。这一点如图7.11所示 其中全局坐标轴标记为x、y、z;局部轴标记为x',y',z'(n与z方向相同)。坐标系通过线性变换联系起来。每个SH基函数Yl,m(θ,φ)都用θ和φ的正弦和余弦表示,因此可以表示为一个多号 在三个矩形坐标中测量(1度)。将线性坐标变换应用于这个多项式,会影响坐标的变化。由于度l被限制为2,因此辐照度E (n)可以显式地表示为x',y',和z'中的二次多项式,其系数为预先计算的Ll、m和Al。这种多项式很容易通过硬件像素着色器计算出来;事实上,E (n)可以表示为4×4矩阵乘法——图形硬件中一个高度优化的操作。
图7.12显示了拉马莫尔蒂和汉拉汉方法的结果。左列显示了用于实验的原始HDR环境地图。中间的一列显示了通过直接积分HDR环境图而计算出的辐照度;右列显示了二次SH近似的结果。辐照度E (n)是一个方向的函数,因此结果显示在一个球体上,以匹配环境贴图的表示。如本文所述,这些图像的平均误差小于1%,最大误差小于5%。(在适当的假设下,理论误差最多为9%。)
在“辐照度环境地图的有效表示”论文中介绍的该方法的主要目标是使使用预过滤的环境地图的渲染更有效率,但该论文产生了更广泛的影响。多年来,人们都知道低频照明,如漫射光,可以用少量的SH基函数来近似,但获得特定精度所需的SH基函数的实际数量从未从理论上得到证明。拉莫莫提和汉拉汉从数学上证明了二级基函数可以精确地近似辐照度。这篇论文影响了人们对SH表示的兴趣,特别是在实时GI的背景下。第十条章描述了随后的一些研究。
Ambient Occlusion Maps
2000年以后,使用HDR环境地图作为光源的渲染方法开始被用于制作环境,包括电影制作。然而,包括阴影和相互反射在内的局部效果很难合并到环境地图渲染中。当时光线追踪在电影制作中使用的不多,所以 Debevec 提出的基本光线追踪方法不能很好地适应电影制作管道。因此,环境遮挡地图的概念被设想为捕获环境地图渲染中的间接照明 [Landis 02]。
传统上,CG 渲染中的表面反射包括镜面反射、漫反射和恒定的环境反射。环境项是一般漫反射全局光照的近似值。它可以被视为环境贴图的平均值(也许是在去除光源对应区域后的平均值)。方便的是,这是环境图的SH扩展中的第一项L0,0,在场景中,环境项通常被视为常数,但根据局部几何形状改变其值的想法 但根据局部几何形状改变其值的想法已被用来增加真实感。环境遮蔽 地图就是一种方法。该地图指定了每个表面点的环境 衰减。这种形式的 "衰减 "是环境光 这种形式的 "衰减 "是环境光被场景元素遮挡的结果,通常不包括参与介质中的光衰减。
环境遮挡图通常为单个复杂对象构造,例如图7.13中的飞机模型。在曲面上的每个点上,映射的值记录了从该点上不可见的环境映射的余弦加权分数。更准确地说,该值是由常数环境映射产生的表面点上的归一化辐照度。这可以使用一种简化的蒙特卡罗射线追踪来计算,该跟踪的工作原理是在点上方的方向半球投射样本射线(图7.14)。求和比普通的MCRT更简单。如果采样光线没有击中对象上的另一个点,则光线的方向表示指向环境映射的未遮挡路径。在这种情况下,射线的贡献是cosθ,其中θ是射线与表面法线形成的角度。否则,光线击中对象,因此没有贡献。环境遮挡是所有射线贡献的总和除以所有铸造射线的cosθ之和。
图7.13中的图像说明了环境遮挡贴图。每个点仅由环境遮挡值阴影,该值以灰色级别表示。接近白色的表面点在1附近有一个环境遮挡,这意味着该点有一个几乎通畅的环境视图。暗点看到的环境。尽管它只是环境遮挡贴图的一个说明,但图7.13中的图像可能是过度曝光的对象模型的真实灰度渲染绘制成平白色。环境遮挡地图实际上在渲染中有其他应用。使用环境遮挡贴图的适当渲染是通过将使用普通阴影管道渲染的像素与由像素处的环境遮挡贴图值缩放的环境照明项进行缩放。环境项可能是一个常数,但通常它来自于一个预过滤的低频环境图。用于环境照明的实际环境地图取决于应用程序。直接照明通常在单独的步骤中直接从光源计算,因此在用作环境光源之前,可能需要删除与光源对应的基于图像的环境地图的部分。
从环境环境图获得的值取决于曲面的方向。根据表面法线向上查找照明不能很好地工作,因为它可能不能代表入射照明的主要方向。例如,图7.13中飞机驾驶舱座椅靠背的下部主要由来自顶部窗户的光线照亮,它们与表面法线有很好的角度。从表面法线方向获得照明的另一个问题是,环境中一个特别明亮的点可能会滑进或离开表面法线。这可能会导致伪影,如不适当的硬阴影和通常不正确的照明。环境贴图查找实际上使用平均光方向向量,而不是曲面法线。这个向量是在构建地图中射线铸造计算过程中获得的所有未遮挡射线的平均方向。在实践中,平均光向向量被存储为曲面法线的偏移量,因此有时会使用名称弯曲法线来代替。5图7.15显示了弯曲的正常情况。
环境遮挡地图最初在电影《珍珠港》 [Bay 01](见图7.13)中使用,随后在《侏罗纪公园3》中使用。ILM负责这些电影的视觉效果,之前通过在镜像反射方向上追踪光线,使用预先计算的自遮挡来测试遮挡。结果用于计算镜面反射,不跟踪光线。环境遮挡图是该方法和IBL环境图的合成。环境遮挡地图的最大优点在于它们能够在不使用光线追踪的情况下近似视觉上重要的光线,以及与IBL的兼容性。在珍珠港事件后,它们的使用迅速蔓延到大型电影制作中。
环境遮挡图的发明大大提高了基于图像的照明的适用性,并有助于IBL在生产渲染中的广泛应用。毫不夸张地说,如果没有环境遮挡地图,IBL就不会在娱乐领域如此受欢迎。然而,自2008年以来,直接用光线追踪渲染在好莱坞电影制作中变得更加普遍。这是计算能力提高的结果,也是推动更现实主义的结果。ILM为电影《终结者的救赎》(2009)开发了一种新的基于物理的渲染管道,从那时起,使用环境遮挡地图和其他一些IBL技术已经被更物理上精确的光线追踪方法所取代。尽管如此,环境遮挡地图仍然有它们的位置,就像一般的基于图像的照明一样。两者都提供了自由和灵活性,并广泛应用于各种视觉表达。随着GPU计算的发展,IBL将进入娱乐业的新阶段
[Agarwal et al. 03] Sameer Agarwal, Ravi Ramamoorthi, Serge Belongie, and Henrik Wann Jensen. “Structured Importance Sampling of Environment Maps.” Proc. SIGGRAPH ’03, Transactions on Graphics 22:3 (2003), 605–612.
[Ramamoorthi and Hanrahan 01a] Ravi Ramamoorthi and Pat Hanrahan. “An Efficient Representation for Irradiance Environment Maps.” In Proceedings of SIGGRAPH 2001, Computer Graphics Proceedings, Annual Conference Series, edited by E. Fiume, pp. 497–500, Reading, MA: Addison-Wesley, 2001.
[Ramamoorthi and Hanrahan 01b] Ravi Ramamoorthi and Pat Hanrahan. “On the Relationship between Radiance and Irradiance: Determining the Illumination from Images of a Convex Lambertian Object.” Journal of the Optical Society of America A18:10 (2001), 2448–2459.
[Landis 02] H. Landis. “Production-Ready Global Illumination.”ACM SIGGRAPH Course Notes (2002). New York: ACM Press, 2002.
[Bay 01] Michael Bay. Pearl Harbor. VFX: Industrial Light & Magic, 2001