首页 > 基于光照的物理模型(一)

基于光照的物理模型(一)

吸收与散射(透明与半透明)

当光线在非均匀介质或半透明材质中传播时,光线可以被吸收或者散射:

● 通过吸收,光的强度由于它转换成另外一种形式的能量(通过是热能)而变小,它的颜色也会因为对不同波长光的吸收不同而发生改变,但是光线的方向不发生改变。

● 通过散射,光线的方向随机发生改变,偏差的大小 取决于材质。散射随机改变光的方向但是并不会改变强度。耳朵是一个很好的例子,因为耳朵很薄(吸收少),所以你可以看到散射的光从耳朵背后射出。如果没有散射而吸收又很少,那么光线可以直接穿过诸如玻璃的表面。比如,你在一个池子里面游泳,希望它是干净的,那么当你打开双眼时,你会在干净的水中看很远的距离。然而,让我们假设在同一个池子中,但是不很脏,水中的小颗粒会散射光,这样水的能见度就会低很多。

漫反射和高光反射

       高光反射是在表面被反射的光,就如我们在光线部分讨论的。光线经反射离开表面并且沿一个不同的方向传播。它遵循反射定律,在一个完全光滑的表面,反射角等于入射角。然而,大多数表面是不规则的并且反射的方向会根据表面的粗糙度来随机改变,知道这一点很重要。它改变了光的方向,但是光的强度并没有改变。

      粗糙的表面会有一个较大且较暗的高光。光滑的表面会保持高光聚集,这样在特定的角度下它看上去会更亮或者说更强。然而两种情况下都是同等数量的光能被反射,如图1所示。





图01 越粗糙的表面有越大、越暗的高光

       漫反射是经过折射的光。光线从一种介质传输到另外一种介质并且在物体内部散射了多次。然后它又被折射离开物体进入原来的介质里面,并且位置跟第一次进入时的位置差不多是同一个点,如果图02所示。





图02

       漫反射材质是很能吸收的,这意味着如果折射的光线在材质里面传输过长的 话,它很有可能被完全吸收。这意味着光线不会从材质里面出来,它可能并没有传输多少的 距离。这就是为什么进入和离开表面的点之间的距离可以忽略不计。在传统着色系统中一直用于漫反射计算的Lambertian模型,不会计入表面粗糙度的影响,但是也有考虑粗糙度影响的Oren-Nayar模型。

       同时拥有高散射率和低吸收率的材质有时候被称为参与介质(participating media)或者半透明材质。比如烟、牛奶、皮肤、翡翠、大理石。使用额外的次表面散射模型来渲染后三种物体是可能的,该模型会把光线进入和出射的点的距离计算进去。精确渲染如烟和雾此类变化多端的低散射率和吸收率的介质需要诸如蒙特卡罗模拟等更复杂的算法。

微表面理论

      理论上,漫反射和高光反射都依赖于光线相交表面的不规则程度,粗糙度对于漫反射的影响比较小因为散射发生在材质内部。因此出射方向基本上跟表面的粗糙度和入射方向无关。最深用的漫反射模型(Lambertian)完全忽略它。

       在这个文档里,我们把表面的不规则程度叫做粗糙度。实际上,它也有几个其它的名字,比如粗糙度、光滑程度、光泽度或者微表面,跟使用基于物理渲染工作流程有关,但是它们都是说的表面的同一个方面,它就是子纹素(sub-texel)几何细节。

        表面的不规则程序表现在粗糙度或者光泽度贴图中,这取决于你使用的工作流程。一个基材物理的双向反射分布函数(BRDF)是基于微表面理论的,它假设表面是由所谓的不同方向的微小细节表面组成。每一个微小的平面都会根据它的法线方向在一个方向上反射光线,如图03所示。





图03

      表面法线朝向光源方向和视线方向中间的微表面会反射可见光。然而,不是所有的表面法线和半角法线(half normal)相等的微表面都会反射光线,因为其中有些被遮挡(光源方向)或者掩蔽如上图03所示。

      在微观层面上不规则的表面会造成光的漫反射。例如,模糊的反射是由于光线的散射造成的。反射的光线并不平等,因此我们收到的高光反射是模糊的,如图04所示。





图04在微观层面上不规则的表面会造成光的漫反射

颜色

      表面的颜色(我们人眼看到的颜色)是由于光源发射出的波长和它被 物体吸收以及反射的漫反射和高光所决定的。剩下的被反射的波长的光就是我们看到的颜色。

      例如,一个苹果的表面大部分反射红色的光线。只有波长为红色的光被散射回表面,其它的均被吸收了。如图05所示



图05

      它也有跟光源颜色相同的高光,因为像苹果这样的绝缘体的表面的材质高光反射几乎是独立于波长的。因此,这种材质的高光反射是基本是都是没有被修改过颜色的(跟光源的颜色相同)我们会在接下来的章节中讨论不同材质(金属和非金属)。

双向反射分布函数(BRDF)

       双向反射分布函数简单来说就是一个描述表面反射属性的一个函数。在计算机图形学中,有很多的不同的BRDF的模型,其中一些并不是基于物理的。一个BRDF要满足基于物理的特性,它必须是能量守恒的且相互的。对于相互的,我是指亥姆霍兹倒易律,它表明入射和出射光线可以在不影响BRDF值的情况下相互交换。

       Substance使用的基于物理渲染的着色器(shaders)是基于迪斯尼的理论反射模型的(虚幻引擎的也是基于这个理论修改简化而来),它是基于GGX微表面分布。GGX在高光分布上要比其它方案好,它有一个较短的高光峰值和在衰减的部分有一个较长的尾部,这样它看上去就比较真实。如图06所示。





图06
补充:GGX

       直观来说GGX最大的特点就是高光周围有很漂亮的拖尾效果,请看现实世界中的高光反射





       从真实拍摄的照片可以看出,高光反射部分呈现出中间小区域亮度极高,周围有一圈拖尾效果,GGX最重要的地方就是捕捉到了这种视觉现象,所谓Everything getsBetter With it也是指这一点,可以与GGX之前常用的Beckmann分布做比较,红色的是Beckmann分布,绿色的是GGX分布

Beckmann分布基本来自于高斯正态分布,所以顶部比较平滑,到边缘的过度也比较短,GGX分布有个尖锐的顶部和更宽的分布  

能量守恒

       能量守恒在基于物理渲染的解决方案中扮演着关键的角色。它表明被表面重新发射的光的总能量(反射和散射回来的)是小于它接收到的能量的总数的。换句话说就是,经过反射离开表面的光不会比到达表面的光的强度更强。作为美术,我们没有必要担心如何控制能量 守恒。这是基于物理渲染的最好的一个方面,能量守恒通过 着色器(shader)来强制保证。它是基于物理模型的一部分,这样我们就可以花更多的时间在如何制作出好的效果上而不是关注于物理实现上。

菲涅尔效果(Fresnel Effect)

      菲涅尔反射因子作为BRDF的一个系数在基于物理渲染中也是一个非常重要的角色。由法国物理学家Augustin-Jean Fresnel发现的菲涅尔效果声明你从一个表面看到的反射光线的数量取决于你接收它时的观察角度。

      比如,假设有一池水,如果你垂直于水的表面直接向下看,你可以很清楚的看到底部(假设水比较清澈)。以这种方式来观 察水的表面基本上为0度或者说是沿法线入射,法线是指表面的法线。现在,如果你以一个切线入射方向来观察水的表面,尽量平行于水面,那么你会看到水面上的高光反射变得更强,并且你可能完全看不到水底的样子。

      基于物理渲染的菲涅尔效果并不像我们在传统着色模型中使用的那样。再次重申一次,它是基于物理渲染的着色器处理的另外一个物理特性。当在一个切线入射角观察表面时,所有光滑的表面在入射角为90度时会成为一个百分百的反射器。

       对于粗糙表面来说,反射中高光部分会更多,但是不会达到百分百的高光反射。这个时候起决定作用的是微表面的法线和光线的夹角而不是宏观表面的法线和光线的夹角。因此光线被分散到不同的方向,反射会变得更柔和、更暗。在一个宏观层次上,你看到的效果可能 是微表面所有 菲涅尔效果的一个平均效果。

F0 (在0度角的时候菲涅尔反射值)

       当光源垂直(0度角)到达表面时,其中一部分光作为高光反射回来。使用表面的折射率(IOR),你可以推导出反射回来的数量,这个值就被称为F0(Fresnel 0),如图09所示。被折射进入表面的光源的数量被称为1-F0。



图06对于粗糙表面来说,反射中高光部分会更多,但是不会达到百分百的高光反射

       对于普通的绝缘体来说,F0的值一般在0.02到0.05之间,而对于导体来说F0的范围一般在0.5到1.0之间。因此 ,表面的反射能力是由下面的折射率公式决定的,如图7所示,它来自于Sebasien Lagarde's "Feeding a Physically-based Shading Model"这篇博文。



图7

       F0的反射值是我们需要在制作贴图的过程中需要关注的。非金属(电介质/绝缘体)一般是一个灰度值,而金属(导体)会有一个RGB值。关于基于物理的渲染且从一个美术的角度来解释反射,我们可以说对于 普通的光滑绝缘体表面,F0会反射2%到5%的光线,而在切线角时会反射百分百的光线,如图06所示。

更多相关:

  • 入射光需要考虑各方向反射同一方向的光,所以用辉度即对光亮度对面积积分,而反射光只有一条因此用光亮度就行 上述图片错了,反射率是反射光辉度与入射光辉度之比。所以反射率和BRDF是差不多的,就差了一个π    ...

  • 作者:洛城链接:https://www.zhihu.com/question/29863225/answer/70728387来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。既然都是Ray开头的,这些概念中最大的区别就是射线,具体地可以说是射线的起止点不同。1)Ray tracing是我们常说的光线追踪,...

  • 其他资料1 资料2 光线追踪原理   光的基本传递模型   1 在一个要渲染的场景中,我们认为光能由预先指定的光源发出,然后我们以光线来描述光能的传递过程,当整个场景中的光能信息被我们计算出来后,我们收集这些信息转化为顶点的亮度。   2 光线经过物体表面可以产生反射和漫反射,光线透过物体可以产生折射和散射。具体产生哪种出射效果,依据...