radiance irradiance区别_radiance和irradiance

       好久不见了各位,今天我想跟大家探讨一下关于“radiance irradiance区别”的问题。如果你还不了解这方面的内容,那么这篇文章就是为你准备的,请跟我一起来探索一下。

1.【EGSR 2007】Microfacet Models for Refraction through Rough Surfaces - GGX

2.图形学笔记十一 光追三 辐射度量学续 BRDF

3.zemax操作问题

4.图形学笔记十三 Materials and Appearances 材质和外观

5.你好,我想问一下用MODTRAN4做大气校正怎么利用大气透过率、RADIANCE、IRRADIANCE这几个参数

6.光子映射的光子映射(Photon Mapping)

radiance irradiance区别_radiance和irradiance

【EGSR 2007】Microfacet Models for Refraction through Rough Surfaces - GGX

        今天介绍的是2007年EGSR上的文章,这篇文章里提出的BRDF模型就是著名的GGX模型,这里是 原文链接 。

        微表面模型在粗糙表面上的反射光照计算已经被证明是非常成功的,而本文则尝试将微表面模型的应用扩展到表面穿透光照计算(transmission)上:通过比对模型结果与实测数据,提出了一种新的微表面分布函数D以及阴影遮罩函数G的公式模型。此外,考虑到表面穿透包含两次介质切换,因此需要一种比较好的importance sampling方法,这里同样对这个问题进行了讨论。

        皮肤,毛玻璃(etched glass)等众多的材质都需要关心穿过材质表面的光线对于输出颜色的影响,对于光滑表面而言,可以直接通过Snell折射定理计算出相关数据,而对于粗糙表面而言,目前并没有一个PBR的模型可供使用。

        本文借用微表面模型的理论知识,给出了一种用于模拟光线穿过粗糙表面(如毛玻璃)后表现的通用BSDF模型,并详细讨论了这个模型中各个函数成分(如D,G等)的选取策略。

        经过与真实表面实测数据的比对,验证了本文模型的有效性。粗糙表面透射存在很多有意思的特征,比如相对于光滑表面而言,其输出光强的峰值会发生一个较大的偏移(偏向grazing角度,有点类似粗糙表面中的off-specular(非镜面)反射峰值表现),微表面模型可以很好的复刻与预测这类特征。同时,本文还给出了一种全新的微表面分布模型,即GGX模型,这个模型在很多材质上的表现要优于以往的Beckman分布模型。

        Cook & Torrance基于光学理论([TS67])将微表面模型引入到图形学中([CT82]),目前是粗糙表面光照反射计算的主要模型,能够模拟出非常逼真的反射效果。

        Ward [Lar92]对Cook & Torrance模型进行了简化,并将其扩展到各向异性材质的反射计算中,同时还给出了一种在所给模型上完成采样计算的方法。Beckman对这个方案的通用性进行了扩展,不过其给出的采样权重还不够准确,[Wal05]对采样权重计算理论进行了修正。此外,Lawrence et al. [LRR04]给出了另外一种使用fitted separable approximations 的采样方法。

        Schlick [Sch94]通过有理数近似的方法对Cook & Torrance模型的实现成本做了大幅精简,同时还给出了一种目前广为传播的菲尼尔公式近似模型。

        Ashikhmin & Shirley [AS00]通过Phong微表面分布函数给出了一种各向异性反射模型,同时还对此前业界所使用的importance sampling方案进行了修正,之后发表的[APS00]文章又进一步提出了一种任意微表面分布函数下的能量守恒模型,不过可惜的是这个模型公式包含了积分项,且没有闭合解。

        关于阴影遮罩项G的模型有很多研究成果,本文采用的是原本为高斯表面设计的Smith 模型([Smi67],后来被[Bro80,BBS02]在通用性上做了扩展,可以推广到任意的微表面分布函数上)。

        符号约定

        本文会使用加粗的小写字母表示单位向量或者方向,而使用头顶带箭头的字母表示未归一化的方向或向量。有时候也会使用球面极坐标来表示方向,如,其中极度角表示的永远是方向与材质宏观表面法线之间的夹角,而纬度角则来源于与垂直的规范化方向。

        BSDF(Bidirectional Scattering Distribution Function)指的是沿着输出方向 的散射radiance与从 方向入射的irradiance的比值,用 表示,如果只考虑反射或者透射的话,那么有BRDF( )以及BTDF( )两项子函数,有如下的关系: (这个只能算是简化模型,实际情况比这个复杂,比如次表面散射等在此处都未考虑)。

        如Figure 4所示,微表面模型中,一个具体的微表面通常都是用一个简化的宏观表面来代替的,这个宏观表面对应的BSDF会在总体特征上与微表面的BSDF保持一致(即在远处看起来应该要是一样的)。这种做法的假设是微表面细节过于微小,因而在近距离位置的差异基本可以忽略不计。通过这种做法,就可以直接使用经典的几何光学理论来对BSDF进行建模,且只考虑单次散射以对问题进行简化,而光线的波动效应(如衍射等)以及两次以上的表面交互散射则直接忽视或者通过其他的方法单独模拟。

        微表面模型并没有哪种具体的模型公式能够满足所有的应用情景,因此通常都是用一种通用性的BSDF公式 来表示,且使用两个统计特征函数来对模型进行描述:即微表面分布函数D以及阴影遮罩函数G。

        微表面法线分布函数 表示的是微表面法线在微表面上的分布统计规律。假设 是一个以微表面法线 为中心的极小固体角,而 是极小宏观表面积,那么 则是法线分布位于指定固体角范围内的微表面的所对应的面积总和,这是一个密度函数,其单位为 。一个良好的法线分布函数应该要具备以下几个属性特征:

        如Figure 5所示,双向阴影遮挡函数G表示的是某个法线为的微表面对于输入方向以及输出方向都可见的比例。通常来说,除非材质表面极其粗糙,或者从grazing角度进行考察,一般阴影遮罩函数对于BRDF的形状的影响微乎其微,这一项的添加更多是基于能量守恒的考虑。

        一个好的阴影遮罩函数应该要具备以下几个属性特征:

        阴影遮罩函数对应的是微表面的几何特征,不同的表面有不同的几何特征,因此没有一种通用的确切函数公式予以描述。通常是通过不同的统计模型加上一些简化假设来近似模拟,详情可以参考后面第5章以及附录A中的内容。

        宏观表面的BSDF应该与微表面各方向散射特征的总和相一致,因此可以通过对微表面的所有可见部分的散射贡献(通过微表面的BSDF,进行表达)进行积分或者累加来得到。对于每个微表面法线而言,D跟G的乘积可以用于表示对应法线方向可见的微表面的面积。不过在做这些处理之前,还需要进行一些修正计算:比如先将输入的宏观表面的irradiance转换到微表面空间,之后将微表面输出的radiance转换到宏观表面空间——之所以要做这些修正计算,则是因为不论irradiance还是radiance,其定义都是与表面的投影面积相关的。根据前面的描述,给出宏观表面的BSDF为:

        为了计算这个积分,就需要知道 等三项数值,如果假设表面时局部光滑的(locally smooth),那么就等于理想(ideal)镜面反射与理想折射(根据snell定律计算)的总和经过菲涅尔项F调制之后的结果。

        微表面有很多可用的BSDF模型,然而大多数的BSDF模型都会假设微表面上的反射是理想的镜面反射(毕竟都拆成微表面了,就没有必要再考虑微表面上的粗糙度了,不然就继续拆下去好了),而本文的BSDF模型会以理想的镜面反射与理想的折射作为假设条件。

        在一个通用的BSDF散射模型中:从方向入射的光线经过表面spcular反射之后会从方向射出,且出射光线能量与入射光线能量之比为;其中都是的函数,o是观察方向,m是微表面的法线。用公式来表示如下:

        其中是狄拉克(Dirac)delta函数,当值为无穷大,其他时候值为0(狄拉克函数的定义可以参见 维基百科 )。从数学的角度而言,delta函数并不能算是一个函数,只能算是一个广义函数(generalized function),这种函数通常会跟一个测度函数measure(全称是狄拉克测度Dirac Measure)相关联,之后通过与measure相关的积分来定义delta函数——对于任意的函数,都有如下关系:

        为了使用前面3.3节中的宏观BSDF模型,这里就需要使用微表面法线以及对应的固体角measure来对之进行表达。这里先假设对于任意给定的输入方向以及输出方向,这里最多只有一个微表面法线能够实现能量从到的传播,这个满足条件的微表面法线用来表示,并称之为half-vector(即正好处于跟的中间的向量)。这里就可以通过跟之间的delta函数来对BSDF公式进行改写。不过由于delta函数是以积分形式来定义的,如果修改其对应的measure函数的话,就需要对增加一个修正因子来维持积分结果的恒定。

        用half-vector对specular反射输出方向s进行替换的话,本节开头(公式2)中的BSDF就可以改写成如下的形式:

        其中表示的是跟之间变换(使用固体角measure,啥意思?即,使用前面公式3给出的作为测度函数)的雅克比矩阵的行列式的绝对值,出于简化考虑常常将之直接称之为雅克比。

        雅克比描述的是两个变量空间()扰动之间的振幅关系,这个值可以通过在上面施加一个小量扰动,之后通过计算上的扰动来得出:

        即用逼近于0时的微分比值来给出(可以看成是函数的导数)。固体角通常会与单位球面上的一块面片(正如弧度对应于圆上的一段圆弧一样)相对应,而当固体角足够小的时候,这个面片也可以近似看成是一个平面。在这种近似下,就可以如Figure 6跟Figure 7所示,直接使用几何方法对反射与折射进行计算。在方向上给定一个无穷小的固体角,其数值正好等于以的起点为球心的单位球面上的无穷小的一块面片的面积,将这块面片投影到以的起点为球心的单位球面上,投影区域的面积就正好等于的数值,而两者之间的比值就正好等于雅克比。此外,Sta01还给出了一种通过代数的方式计算雅克比的方法。

        对于理想反射而言,这里使用 (对于透射计算的话,这里的half-vector就会使用 表示)表示half-vector单位向量,而 表示的则是非归一化的half-vector。这里为了能够处理正反两面的情况,会在标准的反射计算公式上加上 的符号处理,反射即雅克比计算公式给出如下:

       

        Figure 6给出了雅克比的几何推导方法,其中用到了如下的关系:

        当 时,反射表现就属于未定义状态,因为这种情况下只会导致投射而不会存在反射。对于反射而言,这里将 设置为菲涅尔项F,根据前面公式4可以推导出最终的BRDF公式:

        这个公式对于表面上的任何一面上的反射都是成立的。而由于雅克比项的存在,使得 会随着 降低而增加,而这就是微表面模型所预测的当入射方向与表面法线垂直的时候,非specular反射达到峰值(off-specular reflection peaks),而这个结果也跟实际表现是一致的。

        对于光照透射的计算,就需要知道表面两侧材质的IOR,分别假设输入材质与输出材质的IOR为 以及 ,那么根据snell定律,在完美折射的情况下,可以根据入射光线的方向计算出折射光线的方向,同样,这里也可以将snell定律用在half-vector上:

        输入与输出向量 在与微表面法线方向 相垂直方向上的分量的幅度之比等于 与 的夹角的正弦之比,而根据snell定律,这两个分量在上面的 公式中刚好抵消,因此 则只包含 与 平行方向上的分量。如果不考虑 处于表面同一侧(什么情况下会出现这种情况?)的情况,那么当且仅当 遵守以 为法线的snell定律的时候,才会有 。上面 公式中之所以要带一个负号,是因为表面法线的方向通常是指向IOR较小的材质(如空气)(没太懂,为什么因为指向的是小IOR材质,就要带负号?如果这里考虑的只是从空气向其他介质的折射的话,那么加个负号是可以理解的,而如果是从其他介质射向空气,那么这个负号不就导致 了吗)。如果材质两边的IOR是相同的,这个折射就失去了意义,因此这里假设材质两边媒介的IOR是不同的,那么对应的雅克比就可以定义成:

        如果不考虑吸收作用的话,那么折射能量比 就等于 ,仿照公式4,折射的BSDF可以写成如下形式:

        可以看到,这个BTDF是不遵守光路可逆原则的,实际上,这个公式是满足如下关系的: ,这是折射界面的一个广为人知的属性([Vea96]),而如果想要恢复光路可逆的表现,在计算中就不要直接取用radiance,而是取用 。跟反射一样,折射的BTDF也会随着入射角的增加而增大从而在grazing角度处达成off-specular refraction。

        反射BSDF以及折射BSDF都有了,现在将之代入到公式1中,就可以得到宏观表面的反射以及折射BSDF :

        其中:

        这个公式跟Cook-Torrance给出的公式非常相似,区别仅仅在于这里的分母中的系数是一个4,而Cook-Torrance公式的分母系数则是一个 。不过原文中D的归一化方法跟这里的有所不同,而近期的文章([Sta01])则更倾向于使用4作为分母的系数。

        折射BSDF为:

        到此为止,绝缘体微表面模型上的反射与折射的BSDF的基本公式就算是推导完成了。

        前面给出的BRDF以及BTDF公式中的D,F,G都还是泛式指代,并没有一个具体的公式,因而无法直接实施。

        F表示的是菲涅尔项,这是最好理解的,在相关文献中也能找到确切的计算公式。这一项在法线方向上的数值较小(如对于IOR为1.5的玻璃而言,这个值是0.04),而在grazing角度处的数值较大接近于1(这个现象也叫做全反射),绝缘体在非偏振光照下的一个常用的菲涅尔公式给出如下([CT82]):

        注意,如果g是一个虚数,这个时候的F = 1,对应的就是全反射时候的情况。关于F还有一些简化计算公式,详情参考对应的文献([CT82], [Sch94])。

        D项有很多的模拟公式,本文只对其中的三种进行讨论:Beckmann,Phong以及GGX。

        阴影遮罩函数G跟微表面分布函数D以及表面的细节有着极强的关联,因此通常很难给出一个确切的模拟公式。Cook-Torrance使用的是一个在1D模型上推导出来的一个能量守恒G模型,而这里由于这个模型在一阶微分上的不连续以及一些其他现实材质所不具备的一些表现,因此并不推荐使用这个模型,这里使用的是Smith的阴影遮罩近似模拟方法([Smi67]),这个方法起初是为高斯粗糙表面而设计的,后来被其他研究者扩展到任意的粗糙表面上,可惜的是,在一些情况下,这个模型对应的积分函数并没有闭合解。

        Smith G模型将阴影遮罩函数拆分成两个相互独立的 之积:

        是从微表面的分布函数D推导出来的,在附录A中有详细介绍。实际上Smith给出了两个阴影遮罩函数,其中一个用于微表面法线m已知的情况,而另一个则是在m不知道的情况下,直接对所有可能的法线m对应的阴影遮罩结果进行平均来求取。虽然后面一种方法在现存的文献中使用较多,然而在微表面模型中,由于微表面的法线m是已知的,因此这里更倾向于使用前一种阴影遮罩模型。

        下面来给出Beckmann,Phong以及GGX的分布函数D,Smith阴影遮罩函数 以及采样公式。采样公式用于从两个归一化的随机变量 以及 (这两个随机变量的值域均为[0, 1))生成微表面法线,生成任意微表面法线 的概率函数公式给出如下:

        用 分别表示 到 之间的夹角, 表示正向特征函数(positive characteristic function,a > 0时为1,其余时候为0)。

        Beckmann 分布函数 ,宽度参数用 表示:

       

        在 的公式中,第一项保证了三个方向是处在同一边的(即保证v跟m,n都处于表面上的同一侧),由于这里引入了一个误差函数erf:

        因此使得这个公式计算的代价非常高昂。Schlick([Sch94])基于另外一个阴影遮罩公式给出了一个代价较小的近似模型。而本文则对上面的Smith 遮罩公式给出了如下面公式所述的近似模型,这个模型的相对误差不超过0.35%:

        对 进行采样的公式为:

       

        Phong分布函数 ,指数参数用 表示:

        如果设定 的话,那么Phong分布函数跟Beckmann分布函数就非常相似了,尤其是在宽度参数 较小的时候(见Figure 8),这就是为什么经验式的Phong分布函数会有如此长的寿命的原因了吧。由于Phong分布与Beckmann分布的相似性,在实际使用的时候到底选用哪一个就看具体的计算消耗了。不过可惜的是,对于Phong分布而言,计算Smith 的积分公式并没有闭合解,而这里基于Phong分布与Beckmann分布的相似性以及一些数值测试,这里推荐直接使用前面Beckmann的 计算公式(公式22),不过a的计算公式有所不同,这里使用 ,之后对 进行采样的公式给出如下:

       

        GGX的分布函数 ,宽度参数用 表示:

       

        GGX分布的拖尾比Beckmann模型的以及Phong模型的要长很多,因此阴影程度更强, 的采样公式给出如下:

       

        为了方便对BSDF进行采样,这里先假设入射光方向为 ,散射后的出射光方向为 ,入射光与出射光能够匹配 模式(这句话如何理解?)。通常来说,一个微表面模型的BSDF是不能通过精确采样得到的,这里给出的方法是先采样出微表面的法线 ,之后使用这个法线来生成散射方向为 的出射光线。为了计算上述样本的权重,这里还需要一个计算对应采样方向的概率密度函数 ,最终的权重函数(概率越大,权重越低)给出如下:

        在这里为了缩小所生成的权重的方差,这里需要对样本进行选择。

        如果我们按照某个概率函数 来对法线 进行生成,之后根据这个数据计算出对应的散射方向 ,之后对应的概率函数将需要包含half-vector的雅克比(为啥?):

        如果使用5.2节介绍的采样公式的话,那么此时法线 计算的概率函数 。之后就可以计算出对应的菲涅尔项 ,之后用计算所得的结果计算折射与反射光照,因此这里也需要将菲尼尔项加入到概率函数中,对于反射而言,散射方向给出如下:

        对于折射而言,其透射方向给出如下:

        对于折射跟透射的任何一种情况而言,散射方向的权重计算公式:

        入射方向与法线方向接近平齐(垂直入射)是一个非常好的采样点,grazing入射角度(这里指的是与宏观表面相平齐)实际上也是一个很好的采样点,不过其权重可能会非常大,根据所选取的D函数与G函数的不同,这个数值在数百到数百万之间波动,这种高权采样点实际上是不太好的(在微表面与宏观表面相互垂直的时候,grazing角度下的入射光线所对应的 很小,这种时候的效果极其差),因为可能会导致一些建立在低权重假设基础上的一些方法失效(比如大多数粒子tracing方法就存在这种假设)。通过对采样分布函数进行轻微修改,可以避免这个高权问题。比如,对于Beckmann分布而言,可以通过 增加分布函数的宽度的方式,来将最大采样权重降低到4左右。

        为了验证散射模型的效果,这里设计了一套测试方法,下面给出拟合的一些结果。

        本文对微表面理论进行了一番深入介绍,并提出了对应的BTDF模型,且用数据验证过此模型的有效性,之后还给出了一种新的微表面分布模型GGX,并证实了在部分材质上,这个模型比标准的Beckmann模型有着更好的拟合结果。此外,本文还对如何实施高效的importance sampling进行了介绍。

        附录A介绍了如何从分布函数D中推导出Smith阴影遮罩函数G1,详情请参考对应的原始文献。

        假设将微表面看成是宏观表面的一个随机高度场,并用两个概率分布函数来表示,其中 表示高度 的概率分布,而 表示微表面的2D斜率(p,q,分别对应于表面的垂直于平行方向)的概率分布。 可以是任意的概率分布函数,而 则需要跟随分布函数D来做相应的关联:

        其中的cos项对应的是测试数据的变化(如固体角到斜率的变化)以及到宏观表面的投影。对于Beckmann分布函数而言,很容易知道 实际上是一个标准的2D高斯分布函数(使用 )。斜率q的一维分布函数 给出如下:

        假设 表示的是微表面上一个在方向 上可以看到的,高度为 的随机点,其中 是可见射线的斜率,参考Figure 16。

图形学笔记十一 光追三 辐射度量学续 BRDF

       我们描述了一个从镜头设计的信息集成进入影像系统仿真工具的方法。通过协调这些工具,图像系统的设计者可以改变镜头参数可视化的后果。我们描述了关键的计算解决的问题,我们在将镜头设计计算转换成可用于模型的图像信息的格式,因为它流经管道从捕获成像显示。镜头设计软件计算相对光照,几 何失真,波长和领域高度依赖光点扩散函数(PSF)的信息。这些数据被读出的图像系统的仿真工具,它们被用来变换的多光谱的成多光谱辐照度的图像上面的传感器的输入辐亮度。由于透镜的光学特性的频繁变化显着整个的图像字段,这个过程是不移位不变。因此,该方法是计算密集的,并包括了一些设计,以减少工件中可能出现的移变滤波参数和方法。预测传感器辐照度图像包括几何畸变的影响,相对照明,渐晕,光瞳像差,以及单色和色差的模糊效果,并。。

zemax操作问题

        参考课程:

        /video/BV1X7411F744?p=15

        在单位时间内,每个单位面积上接受到的光照的能量。即power per unit area。

        做一下对比,之前的Radiant Intensity是 power per unit solid angle

        注:这个单位面积必须要和光线垂直,如果不垂直的话要把面积投影到垂直的方向上(图中没有写cos,暂时就一个dA)

        类似之前的Biling - Phong里的内容

        上面的Lambert’s余弦定理就解释了地球为什么会出现四季变换:当北半球是夏天时,太阳光直射北半球,北半球的Irradiance更多,也就更热;而当北半球是冬天时,光线与地球的表面有一定的夹角,Irradiance减少,所以冬天就更冷。(如上图地球中黑色虚线处)

        之前提到过,我们是假设能量集中在一个球壳上,随着球壳的增大,光的强度会有一个r平方的衰减;现在可以用Irradiance正确解释:

        在最内部的单位球上, Irradiance(E) = φ/4π,单位面积上接受到的能量就是 φ/4π,

        而在外部的球面上, Irradiance(E’) = φ/4πr^2,在单位面积上接受到的能量就是 φ/4πr^ ,所以就是r平方的衰减。

        所以就可以知道,在这里衰减的并不是Radiant Intensity(往外走,单位立体角不会变),而Irradiance在衰减(往外走,面积越来越大)。或者不叫衰减,而是分布得更分散了。

        如果从球心以一个立体角画一个锥形,就可以知道,随着球面越来越大,立体角的大小是不变的,而立体角对应单位面积的大小却越来越大,所以球面越大时,dA越大,Irradiance也就会越小。

        Radiance是描述环境中光的分布的基本场量(fundamental field quantity),它主要用来准确描述光线 的一些属性。准确的光线追踪与radiance关系非常大,渲染就是在计算radiance。

        The radiance (luminance) is the power emitted, reflected, transmitted or received by a surface, per unit solid angle, per projected unit area.

        定义:Radiant Flux(Power) 它在每个单位立体角、每个投影的面上有多少。也就是,某个单位面,往某个单位立体角方向上的发出的能量。

        相当于进行了两次微分:

        上图中的单位,闫老师没有仔细解释,但是对帮助理解概念是十分有用的。这里我来通过单位的角度,总结一下前面的概念。

        以单位的视角,先来从头回顾一下概念:

        上面讲到强度时,闫老师同样没有解释单位,虽然课件的图上其实是有写的:

        那么单位中的sr是啥呢,其实就是立体角的单位,叫球面度。百度百科中就有:

        而candela百度百科也有解释:

        其实上面的百度百科,顺便就提到了光亮度的单位,即坎德拉/平方米,这个正是nit(尼特)。

        最后,再补充一下lx的百度百科:

        现在,参考百度百科,把所有的概念翻译一下,并且补上单位来理解:

        这里按照二次微分的思想就得到以下结论:

        上面的两条结论,也可以这样理解:

        视频剩下的部分,又仔细讲了两者的区别。经过上面从单位角度理解概念,听起来应该不成问题,这里仅仅把闫老师最后的结论放一下:

        根据上面Radiance和Irradiance的关系,来重新理解一下反射的概念。

        我们之前说反射:如果从一个地方发出光线打到一个镜子,然后光线会反射到另一个方向去;如果打到漫反射物体,那么往四面八方都会去。我们需要有一个函数来描述这种性质:从某个方向进来,并且反射到某个方向去的能量是多少。

        反射在我们之前的理解中,是一道光线到达一个表面,然后反射到其他的方向去。这个过程其实也可以看作是从某一个方向来的光线,到达物体表面后,被物体表面所吸收,然后再由物体表面发射到其他方向去 。这也就是用到了Radiance和Irradiance来解释反射。

        现在来看个例子

        如上图,从wi来的光线,打到单位面积dA上,会在这里转化成能量,也就是power,表示为dE(wi):

        现在问题就是,我们知道反射点要吸收来自某一个方向的Radiance的能量,把它变Irradiance,之后要反射到四面八方的立体角Radiance上。但是我们不知道反射到某个具体方向(wr)的Radiance会有多少能量。

        所以我们就为此定义一个函数,专门来描述这样的一个概念:考虑一个微小的面积dA,从某一个微小的立体角dwi上接受到的Irradiance,会如何被分配到各个立体角上。这里其实求得就是一个比例,是什么比例?

        这个比例是:

        这就是BRDF的定义,它会告诉我们如何把表面上收集到的能量以某一种比例反射到其他的方向上去。

        BRDF能表示从每个入射方向收集到的能量以某种比例反射到每个出射方向上的能量。即某个光线打到物体表面后,往不同方向反射的能量分布。

        如果说是镜面反射,那么只有反射方向上会有能量,其他所有方向上都没有能量;如果是漫反射,这个进来的能量会被均等的分布到各个方向上。

        忽略推导部分,其实BRDF就是描述了物体和光线之间的相互作用。正是由于BRDF的这种概念,决定了物体不同的材质到底是怎么一回事,也就是BRDF定义了材质。

        这里参考一下弹幕:

        从上面的分析可以得到, 某个角度入射的能量 最后反射到某个方向上的能量。而在反射的过程,我们并不是只对单一的,来自某一个方向的能量进行反射,而是要将来自四面八方的能量都收集起来,然后反射到某一个角度上。

        所以要得到最终的反射效果,应该是:通过BRDF计算出:每个方向接受的能量 它反射到wr方向上的能量是多少。然后把这些能量全部累加起来,得到的就是wr方向上反射的能量,可以用积分表示(H的平方表示的积分面积为整个半球面,下面的整个表达式就是反射方程)

        渲染方程与反射方程相比,渲染方程只是多加了一个自己发光的能量。因为我们在考虑物体表面对光进行反射的时候,没有考虑物体自己发光的情况,所以渲染方程就加上了物体自身发光的能量。

        渲染效果 = 反射光 + 自身 发光,渲染方程如下:

        (我们假设所有方向都是朝外的)

        我们首先从反射方程来看,假设有一个点光源。它的反射光=自发光+入射光×BRDF×入射光与法线的夹角

        如果有很多点光源,那么自然就是累加,把每一个点光源的照亮这个点的能量加起来。如果有面光源怎么办?面光源我们理解成点光源的集合,也就是进行积分。

        但是如果不只是光源,还有其他物体的反射来的光,我们就把其他物体的反射面当成光源。也可以说是从这一点往某个方向辐射出去的Radiance也是依赖着其他的点辐射出来的Radiance,也就是递归过程。

        我们对方程进行简写,把 位置+角度 这两个变量用一个概括,变成u以及v,写成了积分的式子

        继续把方程写成算子的形式

        于是渲染方程被拆解成以光的弹射次数为区分的很多项。把光线弹射的次数的项都加起来,也就是得到了全局光照

        上面这一堆公式,就懵逼状态看完的……

图形学笔记十三 Materials and Appearances 材质和外观

       (1)2 coherent phase 表示光的相位之间相干的程度,相干程度越高,其探测的强度越大

        4 radiance in position space 就是位置强度了,就是探测器空间的某个点的探测强度

        5 radiance in angle space 是入射角空间强度,就是在空间某个点的入射角为参数的强度

        2,主要用来分析干涉,衍射等物理光学行为

        4,5 主要用来分析一束光的强度分布和发散角

       (2)smoothing 是平滑操作,也就是一个将探测器原始数据进行平滑的计算,具体来说就是将一个像素点以及周围八个像素点去平均后的值代替此像素点的值,如果等于1的话就是对整个平面的每个像素都执行1遍此操作,2 就是执行2遍,依次类推,显示图像会变得比较平滑,此操作可以部分用来弥补追踪光线不足所造成的探测器图像不够平滑.

你好,我想问一下用MODTRAN4做大气校正怎么利用大气透过率、RADIANCE、IRRADIANCE这几个参数

        参考课程:

        /video/BV1X7411F744?p=17

        我们研究材质,其实是研究材质如何与光线作用,也就是研究BRDF,这个思想将是这节的核心。

        对于漫反射材质,之前我们经验性地定义过漫反射系数。在Blinn Phong的时候,我们用 Intensity/R? 来不准确地定义到达着色点的能量。现在我们给漫反射项的系数来一个准确的定义。

        定义材质是漫反射,也就是无论哪个方向的光进来,都会被均匀地反射到四面八方去。

        我们现在人为地做这么一个场景。我们认为空间中从任何一个方向进来的光,它的Radiance都是一样的,也就是让进来和反射的光都是uniform(均匀)的。

        有了以上条件之后,假设这个点不发光且不吸收光,我们就可以利用能量守恒,也就是进来的光的能量多少,出去也得多少。总结一下,入射和出射的Irradiance是相等的并且Radiance都是uniform(均匀)的,所以可知 入射光和出射光的Radiance是一样的。

        有了这个观察总结以后,渲染方程中的入射光可以从积分里拿出来,然后进行半球上cosθ的立体角积分就是 π 。然后能量守恒 L i = L o ,于是我们得到 f r = 1 / π 时,就是完全不吸收能量的BRDF。

        我们可以定义一个反射率(albedo),可以是单通道的数,也可以是三通道的RGB,它在0到1之间,于是有了它就可以引入不同颜色的BRDF,也就是 f r =ρ/π,所以漫反射系数的大小是0到1/π。

        反射情况介于镜面反射和漫反射之间的材质,我们称为Glossy material。它不是完全的镜子,比镜子粗糙一些,就像铜镜。

        反射和折射都有的材料的,类似玻璃与水,我们称之为 Ideal reflective / refractive material

        如图,wo+wi就是沿法线长度的那个向量,大小就是那个平行四边形的对角线,也就是2倍红线的长度。而红线的长度,就是wi点乘法线向量n。最终的公式,就知道了,根据入射光,如何求出射光向量。

        从球坐标,方位角的方式来理解,即从顶部往下看,出射和入射正好差了π,然后2π循环,求余一下。

        下图为完美镜面反射的效果图。我们用BRDF来描述完美镜面反射的时候,要用到δ函数,写出正确的BRDF有些困难。

        闫老师认为翻译成焦散,并不准确。因为发生这个现象是因为聚焦,而不是散射。光线打到凹凸不平的海水表面,会往不同的方向折射。对于海底的某个点,有几率接受来自不同方向打过来的光,都正好打在某个位置,就像拿放大镜把光聚到一块,在某些地方就会产生条状的亮纹。

        这个现象对渲染来讲,计算量非常大。

        入射角正弦值×入射材质折射率=折射角正弦×出射材质折射率

        参考 /question/29969687/answer/916899633

        折射是我们学习过的第一批光学现象,它看起来非常简单,光从一种介质射入另一种介质将会在界面处改变方向,折射率越大的介质,传播方向越靠近法线——我们还学习过一个定量计算的“斯涅尔定律” (Snell’s law),其中n1和n2是两种介质的折射率,θ1和θ2是入射光和折射光与法线的夹角。

        通过上面的公式,可以计算折射角的余弦:

        根据这个公式,折射发生时,cos θt是一个有意义的实数。也就是说当出现以下条件时,折射不可能发生:

        也就是说,如果入射介质的折射率大于折射介质的折射率,就会出现没有折射的现象,即全反射。

        这种现象的实际意义在于,在做光追时,如果光线折射进入一个玻璃物体内,就有可能发生全反射。

        折射也需要对应一种 “BRDF”,但是我们知道BRDF的R是反射(Reflectance),所以折射应该叫BTDF,T为折射(Transmittance)。把这两个统称起来我们可以叫做BSDF,S表示散射(Scattering)。不管反射折射我们都认为是一种散射,BSDF(散射) = BRDF(反射) + BTDF(折射)

        我们有这么一个例子,一本书靠在墙边,我们从上到下不同视角看它。我们发现一个问题,我们类似垂直看下去,几乎看不到什么反射;但是几乎平着看过去,反射特别明显。所以有多少光被反射,是和入射光与法线的角度有关系的。用菲涅尔项我们就可以判定有多少能量被反射,有多少能量被折射。

        举个例子,在生活中,比如坐在大巴车上,我们看自己旁边的窗户,比较容易看到外面去,但是看着前后几排的窗户,可能只有反射

        对于导体来说又是另一种菲涅尔项。所以古代用铜镜和银镜,其实也是因为它们在任何情况下反射率都挺高的。并且先降再升的曲线也很神奇。

        我们要怎么样准确计算菲涅尔项呢?有很复杂的公式,S和P是两个极化方向,平时我们把它们平均起来就好。我们也有简化的公式,施利克近似—Schlick’s approximation

        为什么要引入菲涅尔项,是因为我们要引入真正基于物理的材质——微表面模型。

        我们先从卫星图引入,可以看出拍摄的地球有一个高光在澳大利亚,这个高光挺完美,和球面似的。但是我们会觉得不对,因为地球表面有山啊树啊地形啊什么的,应该是一个相当复杂的表面。但是现在却看到类似平面高光,还有一定粗糙程度。这说明从远处看,我们看不到各种细节,只会看成一个表面,带点粗糙程度的样子。

        微表面模型做了这么一个事情:它假设物体表面是粗糙的,从远处看是一个粗糙的平面(从远处看到的是外观 )。从近处看可以看到凹凸不平的表面,并且每一个表面的微元都是完完全全镜面反射的物体,都有各自的朝向和法线(从近处看到的是几何 )。

        我们为什么要研究这个呢?我们可以研究这些微表面本身法线的分布,这些分布可以代表不同粗糙程度的材质。

        我们可以看到微表面模型的一些例子:

        如果提到PBR(Physically Based Rendering / Shading)就一定会提到微表面模型。微表面模型也有一些缺点,Diffuse比较少,有时要加额外的漫反射的东西。微表面模型是统称,其实有很多不同的模型,但是都遵守微表面这一套。

        下图是电梯间内部的图,电梯间的小灯打出的高光是条状的,这和我们之前椭圆状的高光的认识不符,这也是由于材质造成的,这是被磨过的金属造成的高光。 于是我们引出了接下来区分材质的方法,各向同性与各向异性材质。

        反映在BRDF上的效果,如果这个BRDF在方位角上旋转得不到相同的BRDF,我们就叫它是各向异性材质。

        交换入射和出射,结果一致

        能量要么前后一致,要么变小(被吸收),最后的能量结果是收敛的。

        各向同性:BRDF只与相对方位角有关。根据可逆性,BRDF可以不用考虑方位角的大小,只需要他们差的绝对值,便于储存。

        实际测量出来的BRDF和推算出来的BRDF经常会有很大差距。如果可以测量的话,也就不用推导模型,直接用数据了。

光子映射的光子映射(Photon Mapping)

       您好,

        首先谢谢您的提问。但是用MODTRAN4做大气校正,我也没做过,所以这方面可能帮不了您,抱歉!

        但是如果你是对遥感影像做大气校正的话,你可以使用ENVI软件中的FLAASH大气校正模块,这个模块是基于MODTRAN4开发的,使用起来很方便的。或者使用6S大气校正,基本原理和MODTRAN4应该是差不多的,都是基于卫星过境时的环境条件,如二氧化碳含量、水汽含量、臭氧浓度,太阳高度角、方位角,卫星高度,等等参数,计算得到地面真实反射率的。其他做大气校正的还有ERDAS软件中的大气校正模块,ENVI中的快速大气校正模块,都可以完成大气校正。

        如果你一定要用MODTRAN4做大气校正,要彻底弄懂这个程序的话,你可以去找一下MODTRAN的使用说明书,里面应该会讲的很详细。

        希望能帮到您!

        光线跟踪虽然简单、强大、易实现,但真实世界的很多东西无法很好地处理。比如:Bleeding(辉映),Caustics(焦散)--光被汇聚在一起的现象。

       直到1993年,光子映射被提出,光线跟踪都无法有效解决这两个问题,而光子映射对这两个问题提供了良好的解决方案。辉映和焦散线现象都是漫反射面的间接光照造成的。用光子映射方法,这类光照可以用预计算的光子图(Photon map)来估计。将光线跟踪扩展为光子映射,可以产生一种能解决任何直接或间接光照的方法。而且光子映射也能处理中间介质(participating media)情况,并且很易于做并行计算。 基于光子映射的全局光照算法有两步:第一步,从光源向场景发射光子,并在它们碰到非镜面物体时将它们保存在一个光子图(photon map)中,以建立光子图。第二步,使用统计技术从光子图中提取出场景中所有点的入射通量以及反射辐射能。光子图与场景表述是完全分离开的,这一特性使得光子映射方法能处理很复杂的场景,包括千万个三角面片,实例化的几何体,复杂的过程式物体。

       与有限元辐射度方法相比,光子映射的优势是不用Meshing。简单场景下辐射度的速度可以很快,但一旦场景复杂,辐射度速度就远远落后于光子映射了。而且光子跟踪还能处理非漫射表面及焦散线,辐射度就办不到。

       和光路跟踪,双向光路跟踪及Metropolis这些能用很少的内存开销模拟所有全局光照效果的Monte Carlo光线跟踪方法相比,光子映射的最大优点就是高效,不过代价是需要额外的内存存放光子图。对大部分场景光子映射算法都很快,而且最终效果比Monte Carlo的要好,因为光子映射产生的错误大多产生的是不易引起注意低频信号,Monte Carlo的则往往是高频信号。

       另一个好处是光子映射方法没有什么专利,如果从经济角度来考虑的话。(当然这是Jensen搞笑的说法) 光子跟踪和光线跟踪的区别就在于光线跟踪是收集光亮度(radiance),而光子跟踪收集光通量(flux)。

       这点区别很重要,因为一束光线与某一材质的交互作用肯定有别于一个光子与材质的交互作用,比较明显的一个实例就是折射--光亮度应该随折射率的变化而变化,而光子跟踪就不受这个因素影响(因为收集的是光通量)。当光子击中一个面的时候,不是被反射、或传送(折射),就是被吸收了,其结果跟该表面的参数有关,目前用来决定结果是反射、折射或吸收的技术是俄罗斯转盘--基本上就是随机决定光子是否未被吸收而进行下一个光子跟踪步骤。 哪些光子-表面的相互作用要被保存下来:只有在光子击中漫射或更精确得讲,非镜面表面时,光子要被存下来。因为保存镜面表面的光子不会为我们提供任何有用的信息:恰好在镜面方向上有个光子过来的可能性是0,精确绘制境面反射的最好方法是用光线跟踪方法,向镜面对称方向跟踪光线。

       每个光子在它传输的路径上可以被存储多次,包括最后它被某个漫射表面吸收。每次光子击中表面,其位置、光子能量、入射方向将被保存下来,还有一个标记用于建造查找结构。

       在光子跟踪那一步的时候光子图被组织为一个光子的序列,但在绘制之前,出于效率考虑,该序列被重组为一个平衡kd树。 一般都是假设光子的交互发生在物体表面,并默认物体的“体”对对光子没有影响。其实把光子映射扩展到有中间介质的体上也不难,98年Jensen有一篇关于体的光子映射文章。

       事实上,光子不旦可以从点、面发出,也可以从体中发出,比如一个烛火可以用从一个火焰形状的体发出光子来模拟。

       当一个光子在介质中穿过时,它有可能被散射,也可能被吸收,其概率取决于介质的密度和光子在介质中走的距离。对于不均匀的介质,光子映射方法也能比较方便得用Ray Marching解决[Jensen98],一个简单的Ray Marcher将介质分为许多小的Step,每一个Step更新积累的密度(积分消失系数),然后根据预计算的概率,决定光子是否被散射或吸收,是否需要进行下一个Step。 构建光子图的过程是在光子跟踪的时候做的,在绘制阶段光子图就只是一个用来估算场景中的那些点上的光通量以及反射光亮度的一组静态数据。

       绘制过程中将不断在光子图中查找离某个点最近的光子,因而找一种合适的数据结构来重组光子图对算法的效率影响就很大,这种数据结构的要求一是要紧凑,二是要能最快搜索到最近光子。平衡kd树就比较符合这两个要求。在Jensen96a的文章中有比较平衡与非平衡kd树的例子。 对场景中某一点的光亮度估计是利用该点附近的N个光子的光通量信息来进行估算的,最简单的方法在该点周围找能包围N个已有光子的最小球体,处在这个球体中的N个光子的总光通量除以这个球的投影面积(也就是PI*r^2)就相当于是照度(irradiance),再乘以BRDF函数,就能得到在该照度下,场景这一点往眼睛这一方向反射的光亮度了,而这一光亮度就是我们最终合成的Image上的相应方向上那个像素的颜色。

       除了用球体来Locate需要的N个光子外,还可以用Disc,椭圆平面等,可以减轻面与面之间交线处的走样。选择不同类型的Filter,也可以处理一些光子密度不足而产生的噪声。 通常,最终图像的绘制使用两种技术,Splatting(由光子依照光亮度扩散后模糊处理,或对光子聚类后扩散)或Final Gathering(对屏幕每点,收集空间中的光子,将每个收集到的光子光亮度进行加权平均),因为直接将光子图可视化的话,要得到一副高质的图像需要大量的光子,而使用光线跟踪产生比较精确的图像需要的光子却少得多。 像素的光亮度由一系列采样的平均值来近似,每个采样都是由从眼睛过一像素向场景跟踪一条视线得到。

       返回的光亮度值等于视线第一次和某个非镜面表面相交的交点沿该视线方向的出射光亮度。

       好了,关于“radiance irradiance区别”的话题就讲到这里了。希望大家能够通过我的讲解对“radiance irradiance区别”有更全面、深入的了解,并且能够在今后的工作中更好地运用所学知识。