参考课程:
https://www.bilibili.com/video/BV1X7411F744?p=17
我们研究材质,其实是研究材质如何与光线作用,也就是研究BRDF,这个思想将是这节的核心。
一、漫反射材质 Diffuse / Lambertian Material
对于漫反射材质,之前我们经验性地定义过漫反射系数。在Blinn Phong的时候,我们用 Intensity/R² 来不准确地定义到达着色点的能量。现在我们给漫反射项的系数来一个准确的定义。
定义材质是漫反射,也就是无论哪个方向的光进来,都会被均匀地反射到四面八方去。
我们现在人为地做这么一个场景。我们认为空间中从任何一个方向进来的光,它的Radiance都是一样的,也就是让进来和反射的光都是uniform(均匀)的。
注:这里的Radiance和渲染方程,参考之前光追那几讲的内容
- energy:辐射能量,单位焦耳
- flux(power) :单位时间内辐射的能量,单位lm流明
- 立体角:三维尺度上角的大小。一个立体角张得越大,它在球面上的投影面积越大。单位sr球面度。
- intensity: 翻译为光强度,单位时间内,单位立体角上辐射的能量。Power/4π。单位candela坎德拉。
- Irradiance:对比理解,intensity是单位立体角上辐射的能量,Irradiance则是单位面积辐射的能量。
单位是流明除以平方米,lm/m^2=lux(勒克斯)。
注意这个面积必须和光线垂直,不垂直需要先投影。
翻译为光照度。- Radiance:缝合怪,综合了intensity和Irradiance,即单位立体角和单位面积上辐射的能量。单位nit尼特。
翻译为光亮度。
有了以上条件之后,假设这个点不发光且不吸收光,我们就可以利用能量守恒,也就是进来的光的能量多少,出去也得多少。总结一下,入射和出射的Irradiance是相等的并且Radiance都是uniform(均匀)的,所以可知 入射光和出射光的Radiance是一样的。
有了这个观察总结以后,渲染方程中的入射光可以从积分里拿出来,然后进行半球上cosθ的立体角积分就是 π 。然后能量守恒 L i = L o ,于是我们得到 f r = 1 / π 时,就是完全不吸收能量的BRDF。

我们可以定义一个反射率(albedo),可以是单通道的数,也可以是三通道的RGB,它在0到1之间,于是有了它就可以引入不同颜色的BRDF,也就是 f r =ρ/π,所以漫反射系数的大小是0到1/π。
二、光泽材质 Glossy
反射情况介于镜面反射和漫反射之间的材质,我们称为Glossy material。它不是完全的镜子,比镜子粗糙一些,就像铜镜。

三、玻璃或者水一样的材质 Ideal /refractive
反射和折射都有的材料的,类似玻璃与水,我们称之为 Ideal reflective / refractive material

四、反射

如图,wo+wi就是沿法线长度的那个向量,大小就是那个平行四边形的对角线,也就是2倍红线的长度。而红线的长度,就是wi点乘法线向量n。最终的公式,就知道了,根据入射光,如何求出射光向量。
从球坐标,方位角的方式来理解,即从顶部往下看,出射和入射正好差了π,然后2π循环,求余一下。
下图为完美镜面反射的效果图。我们用BRDF来描述完美镜面反射的时候,要用到δ函数,写出正确的BRDF有些困难。

五、折射
1.caustics 国内翻译叫焦散

焦散是指当光线穿过一个透明物体时,由于对象表面的不平整,使得光线折射并没有平行发生,出现漫折射,投影表面出现光子分散。焦散,俗称“水光”,波光粼粼---即指焦散现象。
闫老师认为翻译成焦散,并不准确。因为发生这个现象是因为聚焦,而不是散射。光线打到凹凸不平的海水表面,会往不同的方向折射。对于海底的某个点,有几率接受来自不同方向打过来的光,都正好打在某个位置,就像拿放大镜把光聚到一块,在某些地方就会产生条状的亮纹。
这个现象对渲染来讲,计算量非常大。
2.折射定律 Snell’s Law
入射角正弦值×入射材质折射率=折射角正弦×出射材质折射率
参考https://www.zhihu.com/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(折射)
六、菲涅尔项 Fresnel Reflection / Term

我们有这么一个例子,一本书靠在墙边,我们从上到下不同视角看它。我们发现一个问题,我们类似垂直看下去,几乎看不到什么反射;但是几乎平着看过去,反射特别明显。所以有多少光被反射,是和入射光与法线的角度有关系的。用菲涅尔项我们就可以判定有多少能量被反射,有多少能量被折射。
参考什么是菲涅尔 (Fresnel Effect),有更多的图片效果。
举个例子,在生活中,比如坐在大巴车上,我们看自己旁边的窗户,比较容易看到外面去,但是看着前后几排的窗户,可能只有反射

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

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

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

微表面模型做了这么一个事情:它假设物体表面是粗糙的,从远处看是一个粗糙的平面(从远处看到的是外观)。从近处看可以看到凹凸不平的表面,并且每一个表面的微元都是完完全全镜面反射的物体,都有各自的朝向和法线(从近处看到的是几何)。
我们为什么要研究这个呢?我们可以研究这些微表面本身法线的分布,这些分布可以代表不同粗糙程度的材质。

1.微表面模型的BRDF

F为菲涅尔项,考虑入射和半程向量
D为法线分布,是集中还是发散,考虑查询半程向量是否在法线分布上
G为几何项,考虑可能发生互相遮挡,有些微表面会失去它的作用。在几乎和表面平行的光线上容易发生互相遮挡的现象,我们把这种光线角度称为Grazing Angle,G这一项就是为了修正它,让它不要过亮
我们可以看到微表面模型的一些例子:


如果提到PBR(Physically Based Rendering / Shading)就一定会提到微表面模型。微表面模型也有一些缺点,Diffuse比较少,有时要加额外的漫反射的东西。微表面模型是统称,其实有很多不同的模型,但是都遵守微表面这一套。
八、各向同性/各向异性材质Isotropic / Anisotropic Materials (BRDFs)
下图是电梯间内部的图,电梯间的小灯打出的高光是条状的,这和我们之前椭圆状的高光的认识不符,这也是由于材质造成的,这是被磨过的金属造成的高光。于是我们引出了接下来区分材质的方法,各向同性与各向异性材质。

- 所谓各向同性,我们认为它的微表面并不存在一定的方向性。
- 对于各向异性,我们认为它的微表面存在方向性。
反映在BRDF上的效果,如果这个BRDF在方位角上旋转得不到相同的BRDF,我们就叫它是各向异性材质。

九、总结BRDF
1.非负Non-negativity:描述能量分布,不可能出现负能量
2.线性Linearity:可加,组合。比如Bulin phone模型分成三块,漫反射、高光,环境光,可以算完直接叠加。

3.可逆性Reciprocity principle
交换入射和出射,结果一致

4.能量守恒Energy conservation
能量要么前后一致,要么变小(被吸收),最后的能量结果是收敛的。

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

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

网友评论