渲染多层材料的综合框架

下面是对2014年TOG上的一篇论文的翻译。
论文题目:A Comprehensive Framework for Rendering Layered Materials

这篇文章的技术已经被用于pbrt的分层材料的渲染中,非常值得深入研究。下面只是单纯的翻译(水平有限,仅供参考),核心概念的理解以及补充材料将另起一篇文章。
另外,也正在写一篇关于分层材料的计算工具的博客,写完在贴上吧。

转载请说明出处,事实上,我还在更新其中的内容,因为还有很多知识点不太理解。
为防止误导读者,转载请也随时更新。


渲染多层材料的综合框架_第1张图片
图1:场景内部所有的材料都是使用这篇文章描述的技术产生和渲染而来的。左右两边的小图显示了用作我们系统输入的对应的结构描述。

摘要:

我们展示了一个通用的并且切实可行的方法来计算多层材料的BSDFs。它由各向同性或各向异性散射层以及平滑的或者粗糙的电导体或电介质分界面组成。在扩展到能支持任意组合的方向基以后,我们能够准确有效地合成具有各种各样的分层结构的BSDFs。

我们的系统创建的反射模型正确地考虑了层内与层间的多次散射,在渲染系统中,他们能有效地求值,并且支持纹理和明确的重要性采样。尽管我们的方法实质上涉及在傅里叶基上对反射函数制表,但是由于我们的表示内在的稀疏性,产生的模型在存储上是紧凑的,同时也是精确的,甚至对于具有窄峰值的函数也是如此。渲染一般的多层表面的方法在过去已有所研究,而我们的是首个既有效又精确的,能够支持任意分层的系统。

我们通过与真实测量的分层材料进行比较来验证我们的模型,并且我们详细阐述了一个交互式可视化设计工具,它能非常容易地探索分层材料的空间。我们在一个开源的渲染系统中提供了一个完全切实可行的高性能的实现。

1. 概述

表面上散射的概念是渲染的核心。在场景的尺度允许的情况下将薄的结构视为表面是恰当的,并且在计算上也是必要的:从有微观划痕的金属表面到在太空上观察到的粗糙海洋平面,表面散射模型通常是正确的表示。

有着微观粗糙度的金属或者电介质分界面是最简单的散射表面,但是绝大部分的非金属材料是不透明的,它们通过次表面散射来漫反射光。包含一个漫反射和一个镜反射组成部分的最常用的散射模型,是基于在光密介质上有电介质边缘这样的思想的。

表面可以更加复杂,它们有不能完全隐藏底下材料的分层:陶瓷上的釉,底层涂料上的墙漆,有着透明涂层的彩色车漆,金银珠宝上的珐琅,以及分层的生物组织,例如树叶,花朵,花瓣或者皮肤。所有这些都能用栈的形式来描述,栈由多个用平滑或者粗糙的分界面分隔开来的散射和(或)吸收介质层堆叠而成。栈的底部可以是不透明的(例如金属)或者透明的分界面。层和分界面提供了一种能用于描述广泛材料的语言,该语言已经成为了大多BRDF模型的基础。

用物理参数将表面显式地表达为多层系统也允许在不同的尺度下对其进行一致的处理。当近距离的观测时,给定的结构不能够被视为薄的表面,那么该结构可以被直接渲染,而对于较远距离的观测,通过将结构精确地归约为表面模型,该结构可以被自由地转换为一个表面。

然而,重要的是要意识到,对于来自于任意的比单层或者单个分界面更加复杂的系统的散射,我们都没有精确的计算模型。甚至是最简单的非平凡系统,一个有平滑的分界面的单一介质,也仅仅是用标准的BRDF模型来粗糙近似。对于分层的或者有涂层的结构,已经有许多模型被提了出来,但它们都限制于特定的情况或者不够精确。当然,在一个渲染系统中显式地实例化任意类型的分层材料都是可能的,这依赖于通用的渲染算法来分解各层之间的交互,然而,由于该方法面临无法可靠地寻找通过一个材料栈的光的路径的问题,该方法通常来说是不切实际的。

在这篇文章中,我们提供了一个完整的解决方案来精确模拟分层材料的散射。我们的系统处理的是能够以层或者分界面的形式表示的任意各项同性的表面,在某种意义上,我们提供了描述表面结构的计算语言。我们系统的构建块——语言的语法,可以这么说——是基扩展(basis expansion),增加方程(the adding equation)和增加/倍增方法(adding/doubling method):来自于辐射传输的计算工具在之前也偶尔被使用于图形学中。在这篇文章中,我们建立了表达各种各样在图形学中有用的表面所需要的词汇表:我们展示了,在这个框架下如何将微面元模型用于透射和反射、测量的BRDFs以及Henyey-Greenstein和von Mises-Fisher相函数。我们同样也提供了用于求值的有效算法和在渲染过程中使用的明确的重要性采样方法。

我们的系统是具有表达力的,同样也是实际的。一个预计算的步骤在一个傅里叶基上扩展了所有的BSDFs和相函数,这导致了与平面平行的多次散射的问题被分解为每个方位频率上的子问题。多次散射的问题是通过在散射层上使用增加/倍增方法以及在一系列的层和分界面上使用增加方程来解决的。最后,最终得到的BSDF会被存起来,供之后渲染使用。

我们的实现可以有效地扩展到高阶,在保持精确度和避免震荡(ringing)或其他走样的同时,它可以处理从非常粗糙的到接近于理想镜面的分界面,以及从各向同性的相函数到具有很高的峰值的相函数。预计算的BSDF用一种稀疏的格式存储,需要几千字节到几兆字节,这取决于扩展的阶数。预计算的时间是秒级的,渲染时间性能接近于专门实现的BSDF模型——事实上,我们的重要性采样技术的质量意味着,在相同时间的比较下,预计算的标准的BSDFs模型的表示的性能有时要超过对应的分析师模型。

获取这种级别的精确度和性能要求相当谨慎地设计BSDFs表示,算法和在预计算和渲染过程都会用到的数值技术。在这篇文章中,我们讨论了系统的设计和让其起作用的最重要的一些问题,完整的细节在补充报告中。我们将会发布作为Mitsuba渲染器[Jacob2010]一部分的一个完整的开源实现。

这篇文章有以下贡献:

  1. 我们建立了有效且鲁棒的数值方法,用于将一系列传输理论反射模型投射到支持任意组合的基上。
  2. 我们意识到待解决问题其内在的稀疏属性,并且建立了一个能挖掘这一性质的系统,从而能够扩展到各种各样的分层结构,包括非常具有挑战性的输入。就我们所知,这构成了第一个不用简化假设就能对多个粗糙的分界面的交互进行建模的实际解决方案。
  3. 我们展示了如何对最终得到的制表进行有效地求值和重要性采样,并且提出了一个外插的方法使得在能接受一定近似的时候进一步地减少预计算和渲染的时间。
  4. 对于微面元BRDFs,我们提出了一个多次散射项来避免这些模型的能量损失的问题。
  5. 我们建立了启发式方法,它能自动的选择一个具有足够分辨率来确保表示错误的边界的基。

2. 前人研究

在图形学中,光的传播是在线性的传播理论框架中完成的(可能除了推导散射相位方程以外,波动和量子效应一般是被忽视的)。以这种级别的精确度预测来自于分层材料的反射是一维线性传播理论中的反射率问题[van de Hulst 1980]的主题——这是确定来自于仅服从于外部源的、与平面平行的介质的紧急分布(the emergent distribution,不懂)的问题。

反射率问题确定的闭式解是罕见的。在图形学中,Blinn[1982] 使用了单次散射的解决方案,Hanrahan和Krueger[1993] 扩展了该方法使之包含折射率的改变、多个分层,以及蒙特卡洛方法来计算多次散射。这些是首批在分层介质中起作用的图形学模型,但是单次散射的解决方案的应用是有限的,而更为一般的蒙特卡洛方法很不幸地收敛非常地慢——尽管在某些情况下通过使用积分形式的散射方程,收敛率可以被改进[Pharr and Hanrahan 2000]。我们的研究工作追求相同的目标,同时聚焦于效率,精确性和一般性。

包含所有阶的散射的精确解限制于有着各向同性或者线性各向异性的散射,以及有着光滑的、折射率匹配的分界面的无穷厚的材质[Chandrasekhar1960]。对于各向同性的散射,Premoze[2002]使用了包含H-function的半无穷解来渲染被灰尘覆盖的表面。有限层的解[Das 2010] 或者带有菲涅尔反射的半无限的介质[Williams 2006] 要求通过迭代或者其他方法求解积分方程。

存在各式各样的近似确定的方法可用于计算一般多层材料的BSDFs,包括离散坐标标注(discrete ordinate(SN)[Thomas and Stamnes 2002]),传输矩阵方法(the transfer matrix method[Aronson 1971]),FN 方法[Siewert 1978],增加-倍增方法(adding-doubling[van de Hulst 1980],分析离散坐标标注(analytical discrete ordinate[Siewert 2000]),以及奇异特征函数方法(the singular eigenfunction method[McCormick and Kuscer 1973])。这些方法全都有不同的精确度/开销上的折衷以及稳定性的问题[Chalhoub et al. 2003],并且原则上,在我们一般的框架下,它们中任意一个都能被用于计算传输算子(operators)。

在图形学中,我们的方法最接近于Stam[2001]。在他的文章中,他提出了第一个用于粗糙电介质的BSDF模型并且通过SN方法使用它来计算对皮肤进行建模的BSDF,将其作为带有电介质分界面的各向异性的散射介质。我们的工作延续了Stam相同的方法:我们同样以层和分界面的形式对表面建模并且我们使用了相似的方向基。然而,我们的系统提供了能够精确有效地处理任意分层结构并且对高阶的扩展保持良好的性能的、完整的、模块化的解决方案,这远远超出了Stam早期的工作。这要求完全不同的方法来计算基的扩展,简洁地表示它们,以及在面对具有挑战性的输入时能够鲁棒地求解最终的方程。同样,就我们所知,我们的系统是第一个在使用这一方法时考虑了重要性采样,von Mises-Fisher散射以及用于粗糙分界面的近似多次表面散射校正的系统。

几个使用了漫反射项和镜反射项的、用于近似特定类型的分层结构的、专门的BRDF被提了出来 [Wolff et al. 1998; Shirley et al. 1997; Kelemen and Szirmay-Kalos 2001],包括粗糙散射(asperity scattering)[Koenderink and Pont 2003],以及用于粗糙厚板的修正了的微面元分布[Dai et al. 2009]。我们的框架包含了这些模型,并且由于正确地考虑了各层之间的相互影响,一般情况下也更加精确。各种各样其他的用于渲染分层材料的近似分析式方法也已经被提了出来,例如Kubelka-Munk[Donner and Hanrahan 1996],基于漫反射的方法[Donner and Jensen 2005],或者用于树叶的特殊近似[Wang et al. 2005]。Weidlich和Wilkie[2007]提出了一系列灵活的分层BRDFs。他们的方法简单有效但是不能像我们的模型那样获得想要的许多性质,包括可逆性,能量守恒,以及精确地考虑层内和层间的多次散射。

在这篇文章中,我们仅仅考虑标量辐射传输而忽略偏振效应。扩展我们的方法去处理向量辐射传输是直接的[Garcia 2012]。也有可能存在不均匀的散射层,这些层的单次散射反射率是关于深度的函数,这个问题也可以用已知的方法解决[Yanovitskij 1997a]。荧光[Wilkie et al. 2006],异常色散[Weidlich and Wilkie 2009],以及薄胶卷的干涉效果[Hirayama et al. 2001]也已经在反射模型中得以考虑并且能够作为我们框架的一部分被包含进来,但是这篇文章我们聚焦于一个综合的几何光学的框架。

3. 背景

本章节描述了系统的计算框架,其构建在许多前人的关于传输理论的研究上,我们在这一章节回顾这些这些研究。我们将基于与平面平行的或者说一维传播的假设,这意味着我们假设,横跨整个平面,光照和表面的性质是不变的,以致于所有与位置相关的函数都可以建模为与深度相关的函数。从实践的角度来看,这意味着我们推导的是BSDF而不是BSSRDF模型。

系统将辐射函数在方向基上进行扩展,所以各层和各分界面的BSDFs用矩阵来表示,称之为散射矩阵。

我们从介绍增加方程开始,给定各个组成层的散射矩阵,增加方程被用于计算组合层的散射矩阵。接着我们描述矩阵表示下的方向基,并且我们展示了如何使用方向基来离散化辐射传播方程和边界条件。最后,我们描述了如何使用增加/倍增方法来求解辐射传播方程,增加/倍增方程之所以这样命名是因为它依赖于增加方程来不断倍增一层直到它达到了需要的大小(厚度)。

3.1 增加方程

Stoke[1860]进行了对于分层材料的一些早期理论研究工作,他分析了一摞玻璃板的组合反射和传输性质。回顾他对于只包含了一块板这个最简单的情况的分析背后的数学原理是有益的。

被具有单位能量的光线照射的玻璃板,其顶层的分界面反射了光的一部分R并且透射了另一部分T进入到了材料中,透射进材料的光继续向前遇到了底层的分界面,在来回反射的过程中每一次都会有一部分光逃逸了出去。

渲染多层材料的综合框架_第2张图片

由于具有可逆性,底层的分界面的反射和透射的系数同样等于R和T。通过对所有的光路进行求和,作为一个整体计算出平板总的反射和透射是可能的。最终得到的几何序列有一个非常简单的显式形式:
R~=R+TRT+=R+RT21R2 ,
T~=TT+TR2T+=T21R2 .(1)

这个等式向我们展示了如何计算来自于两个分离的分界面的反射和透射的这两个分界面的总的标量反射和透射。

有了这个例子,我们转向更加一般的情况:与其考虑被单一方向照明的一个平滑界面,这次我们考虑任意组合的平板,其被以某种基表达的辐射分布所照明(我们暂时让底层的离散化不明确。)。光的线性传播让我们能够将被映射到相同基上的发散的光照写为矩阵-向量乘积的形式。
Φ(t)=RtΦ(t)+TbtΦ(b) ,
Φ(b)=RbΦ(b)+TtbΦ(t) ,(2)

其中 Φ(τ) Φ(τ) 分别是描述对应于所使用的基在深度 τ 向上和向下的辐射亮度的向量。深度t和b对应于顶层和底层的表面,并且方阵 Rt Rb Ttb Tbt 分别描述到达顶层和底层光的反射和透射。
渲染多层材料的综合框架_第3张图片

与玻璃板例子类似的问题是:给定两个不同层的散射矩阵(i.e. Rt1 Rb2 Ttb1 Tbt2 ,etc.),两层被上下叠加在一起后的散射矩阵是什么?
这里写图片描述

解是相似的,但是用矩阵RT代替标量R和T。与标量的情况相同,我们对反射和透射所有可能的序列进行求和,并用闭式解代替几何序列。必须注意乘法的阶,因为矩阵一般不能够交换。对于这个推导的严格的讨论,我们让读者参考[Grant and Hunt 1969]。类似于(1),这个计算的最终结果就是所谓的增加方程:
渲染多层材料的综合框架_第4张图片

同样的方法在计算一层的顶部或者底部的粗糙分界面或者两层之间的分界面的效果也是同样起作用的。

增加方程是我们系统的关键组成要素,因为它们使得精确地计算层栈的散射性质成为了可能。我们通过重复使用等式(3)来计算分层材料的散射矩阵,从而能够基于材料的结构描述来组合层和分界面。这要求已知各层内部的以及各分界面的矩阵,我们在3.4节和3.4.1节分别讨论它们。
渲染多层材料的综合框架_第5张图片

渲染多层材料的综合框架_第6张图片
图2: 我们的框架组合了分界面和层从而形成了组合材料的BSDF。

3.2 问题描述

在描述我们用于表示散射函数的基以及用于计算增加方程所使用的矩阵的方法之前,我们首先形式化待解决的全局的与平面平行的辐射传输问题。几何特征在图2中描述:我们有一系列的层,每层都包含同质的介质,并且被分界面所分隔开来,分界面用BSDF所描述。由于一维传播的假设,辐射仅依赖于方向和深度。简洁起见,我们在z方向上定义从顶部开始测量的无维的光学深度为

τ(z):=z0τt(z)dz (dimensionless)

其中 τt(z) 标记了分层材料内部深度为z的消失系数(单位为1/距离)。

辐射亮度被标记为 Φ(τ,μ,ϕ) ,其中 μ=cosθ[1,1] 是天顶角的余弦值,而 ϕ[0,2π] 是方位角。使用这样的参数化,在一层内的辐射传输方程具有以下的形式[Chandrasekhar 1960]:

μdΦ(τ,μ,ϕ)dτ=Φ(τ,μ,ϕ)+2π011dΦ(τ,μ,ϕ)p(μ,ϕ,μ,ϕ)dμdϕ ,(4)

其中 p(μ,ϕ,μ,ϕ) 是层的相函数,它是 (μ,ϕ) (μ,ϕ) 这两个方向之间角度的函数。注意p隐式考虑了散射相互作用的反射率并且一般会积分到一个小于1的值。

这一等式的边界条件是层间的分界面的BSDFs。为了用这些层的边界描述光的相互作用,我们必须区分入射辐射亮度和出射辐射亮度,因为在深度 τ0 的边界一般对于 Φ 引进了不连续性。
渲染多层材料的综合框架_第7张图片

有了这样的定义,在一层的边界上表面光照积分(既考虑了反射也考虑的透射)有如下形式:

Φo(τ0,μ,ϕ)=2π011Φi(τ0,μ,ϕ)f(μ,ϕ,μ,ϕ)|μ|dμdϕ

你可能感兴趣的:(论文翻译,渲染,多层材料,BRDF,反射模型)