games101_材质与外观
本节课主要围绕着材质的外观进行讲解。是想研究材质在计算机图形学中指的是什么?
材质等于BRDF(Material == BRDF)
材质就是BRDF,BRDF定义了光线与物体如何交互,从而不同的材质产生了不同的视觉效果
Diffuse / Lambertian Material(BRDF)
上图这个材质是:任何一光线打到任何一点上,会被均匀地分散到各个不同的方向上去,所以上图是漫反射材质。
上面这幅图,表明漫反射材质还可以定义它在任何一个点上还可以有不同的漫反射系数,虽然都是漫反射,各个点被吸收的光的部分不同,所以会显示出不同的颜色。
在着色点这一点上:
- 首先认为现在在研究的这个漫反射材质是均匀的,这也意味着:
- 假设入射光是各个方向均匀射向这个着色点的,并且每一个入射光的光强都是相同的;
- 同时在着色点上,光是均匀地被反射到每个方向;
- 着色点本身既不发光,也不吸收光。
进来的光拿着色点周围的小的区域收到的能量(power per unit area)来表示,这是irradiance。
- 所以入射多少irradiance,出射就要有多少irradiance,在着色点不吸收光也不发光的条件下,这两者得一样。
- 所以入射光的radiance和出射光的radiance也得是一样的,那么Li应该等于Lo。
观察渲染方程,排除自发光项变成反射方程。
又因为Li 与 BRDF都是一个常数,可以将Fr和Li提出到积分式子外:
积分式子就变成了对单位半球上的cosθ函数进行积分,推导公式如下:
所以最后得出:
前面已经解释了Lo == Li,所以将上面这个公式化简,得到BRDF(这种情况是材质完全不吸收能量的BRDF)为:
我们可以定义一个名为反射率这么一个该概念,英文名为albedo(color),albedo可以是单通道的一个数,也可以是三个数RGB,我们定义他的范围在[0,1]区间内,引入不同颜色BRDF,所以这个BRDF的值就是如下所示:
所以这个BRDF的取值范围是[0,1/pi],而不是[0,1]。
Glossy Material(BRDF)
上图是Glossy材质:一根入射光打到物体上,然后反射出去一个方向。与镜面反射很相似,但并不是完全的镜子,Glossy材质要比镜子的材质要粗糙。
Ideal reflective / refractive Material(BRDF*)
有一部分会被反射,有一部分会被折射。
这种可能是玻璃或者水之类的材质。
上图右边的图是玻璃材质,光在经过折射后,在玻璃里面传播的时候,会被部分吸收。
完美的镜面反射(Perfect Specular Reflection)
上图中左边的图:
- 入射角和出射角都是单位向量,长度为1
- (wi · 向量n) / (cosθ * 1)——两者都是值上图中红颜色线段的长度
- 向量n——法线方向
上图中右边的图是左边的图的俯视图:
- 出射(等号左边)方位角和入射(等号右边)方位角的关系。
- 公式中的 mod 意思是取模。
- 入射和折射方向的方位角相反。
镜面折射(Specular Refraction)
Snell’s Law(折射定律)
η是折射率,一些物质的折射率:
折射方向的计算方法:
如果 cosθt 最后不能得到一个有意义的实数,那就意味着折射不可能发生。
要让折射没有意义,则需要下面这个式子无意义,就需要让根号内的式子小于0:
根据一系列推导,只有当下面条件成立才符合:
所以上面这种情况意味着:
- 入射的介质的折射率大于折射的介质的折射率
- 这种情况就可能出现没有折射这种现象,这种现象也成为全反射现象。
- 全反射现象发生的条件:只有入射的介质比折射的介质更密。
Snell’s Window / Circle
当人从水里外天空看的时候,只能看到一个锥形的范围,锥形范围之外的都看不见,就是因为发生了全反射现象。
注意:
- BRDF的R指的是反射(Reflaction),但折射显然不是反射。
- BTDF的T指的是折射(Transmitte)。
- BRDF和BTDF统称为BSDF,这里的S指的是散射(Scatter)。
Fresnel Reflection / Term(菲涅尔项)
光线照射到物体表面后,一部分发生折射,一部分发生反射。那么发生反射部分的比例是多少,可以用菲涅尔项来描述。下图是一种电介质(绝缘体)的菲涅尔项:
以上图中红色的线举例:
- 如果一根入射光线和物体表面几乎平行,就认为大量能量会被反射。上图中光线与法线角度成90度就是表示光线与物体表面平行。
- 如果入射光线和物体表面垂直,就会有更多能量会穿过物体,发生折射,反射的能量就会比较少。
除了红色的线还有另外两条线,他们代表的是极化情况,他们是只沿着一个方向震动。
对于金属来说,它的菲涅尔项就和绝缘体的菲涅尔项不太一样。在任何情况下,金属的反射率都很高:
计算公式
计算的时候需要考虑极项(polarization):
- Rs和Rp就是之前提到过的极化,两个不同的极化有两个不同的反射率,通常我们不考虑极化的光,就把这两个反射率平均起来即可。
- n1,n2是折射率,公式和 入射光和法线的夹角 有关系。
但是上面的计算公式过于繁琐,于是人们又提出了简化的计算方法——Schilick’s approximation
Microfacet Material(微表面材质)
微表面材料(Microfacet Material)的现象如下图所示,高光区域应该为澳大利亚的沙漠区域,但是通过卫星拍摄的图像确实非常光滑,类似镜面。
假设物体的表面是粗糙的,但是从远处看这个表面是平的,从近处看才能看到一个一个小的微表面,这个微表面是镜面材质,每个微表面都有自己的朝向(法线)。
也就是近处看是几何,拉远了看是材质。
Microfacet BEDF
- 表面较光滑:看第二张图法线法线他们微表面起伏不大,这也意味着宏观来看,他们的发现朝向是第一幅图的情况,法线几乎都分布在宏观法线周围。这就是Glossy材质,也就是第三章图片。
- 表面粗糙:可以法线第二张图起伏非常大,他们的微表面朝向差异也很大,朝着各个方向去。所以宏观上来看与第一幅图画出的法线会相差非常大。这也就是漫反射材质,如第三张图所示。
微表面BRDF计算方式
- 半程向量是单位化的光照方向和观察方向的向量和
- F:菲涅尔项,根据入射方向、半程向量得到反射比例。
- G: 几何项, 反射的过程中,有一部分的光被自身几何结构遮挡了,有多少比例的反射光没有被遮挡。多说一句:什么时候容易发生这种自投影(自遮挡)的现象?答:光几乎是平行着物体表面,打到这个物体表面上。
- D:法线分布函数,在所有的分布里,有多少比例的微平面的法线方向沿着半程向量。
- 分母是复杂的变换来的,不过多解释。
举例
金属、玻璃材质:
皮革材质:
木头材质,这里不止用到了微表面模型,还考虑了其他的因素:
Isotropic / Anisotropic Materials(BRDFs)(各向同性材质/各向异性材质)
像下面虽然是金属材质,但是却出现了很多金色的光线。
细看可以发现这种金属上是又被磨过的痕迹,也就是有一种"纹理",造成了一种为表面的材质。
从微表面的方向性可以看出这个材质是属于各向同性还是各向异性:
- 各向同性材质:我们认为他的微表面并不存在一定的方向,或者说方向性很弱。
- 各向异性材质:微表面有方向性,视觉上会有一定的朝向。
Anisotropic BRDFs
在方位角上旋转,得到的不是相同的BRDF,就将其成为各向异性的材质。
通俗解释就是在一个平面上有一对入射角和出射角,可知他们的半程向量是垂直于平面的,这是半程向量的方向不动,旋转这对角,这时他们相对的位置没有变化。如果旋转之后,看到的是相同的BRDF,就认为这个材质是Istropic(各向同性材质)。否则就是Anisotropic(各向异性材质)。
例子一:Brushed Metal(拉丝金属)
例子二:Nylon(尼龙)
例子三:Velvet(天鹅绒)
BRDFs的属性
- BRDF的值永远是非负的:
- 线性性质,可以在一开始就拆开算,最后再加在一起:
- BRDF的可逆性,交换入射和出射的角色,结果还是一样的:
- 能量守恒,BRDF的存在绝对不可能让能量变多。是否等于1,关键在于这个材质是否会吸收能量:
- Isstropic vs. anisotropic(各向同性材质和各向异性材质的对比)
测量BRDFs(Measuring BRDFs)
动机:
基于图像的 BRDF 测量
测量采用的方法是,确定一个相机,确定一个光源。使用光源从四面八方照射物体,再用相机从四面八方取拍它,这样就可以覆盖BRDF的所有可能的输入方向和输出方向。
测量仪器:gonioreflectometer
一般的方法:
foreach outgoing direction wo //枚举所有的出射方向
move light to iluminate surface with a thin beam from wo //然后把光源放上去
for each incoming direction wi //枚举所有的入射方向
move sensor to be at direction wi from surface //把相机放上去
measure incident radiance //测一下得出的结果radiance是多少
提升效率:
- 同向异性表面将维度从 4D 降低到 3D
- 考虑到可逆性,又可以将测量次数砍掉一半
- 一些其他方法…
挑战
存储测量的BRDFs