孤岛危机吧 关注:47,299贴子:1,343,588

游戏中基于物理的渲染简简明科普(2):微平面理论

只看楼主收藏回复

在第一部分中我们简单地介绍了基本的反射现象并且引入了BRDF这一概念。从这一部分开始我们将简单讲解目前最为流行的BRDF模型——微平面理论模型。
所谓微平面理论,就是把物体表面看作是一系列细小的平面所构成的宏平面,这些微平面我们肉眼不可见,但是又远大于光的波长,如下图所示

下面是一个能更加直观地理解微平面的例子。假设我们有一个如下图所示的粗糙表面

我们将表面上这些纹路的密度提高

再将密度提高

再提高

可以看到这些坑坑洼洼的纹路肉眼已经看不到了,此时它们变成了“微平面”。
每一个微平面都被视作理想镜面,对于计算光线入射理想镜面的反射和折射分量,自然而然地便会拿出菲涅尔公式。菲涅尔公式的具体形式在这里就不写了。我们在这里贴一张不同材质从0度入射角到90度入射角的反射分量曲线图

这里有个重要的现象要注意。在上图中,所有材质在光线平行于表面入射时几乎所有光线都被反射,而当入射角越来越小时,大部分金属依然能反射掉大部分的入射光,而大部分电介质材质都会吸收掉几乎所有的入射光,反射分量迅速下滑。这一现象造成了金属和电介质的不同外观。下图便是电介质的反射示意图,可以发现,越接近下图中球体的边缘,反射强度越高

作为BRDF微平面理论模型的第一个重要部分,我们称之为菲涅尔项(Fresnel Term)。
对于每一个微平面,并不是所有入射光都能到达此处,也不是所有反射光都能直接离开材质表面。原因在于,对于比较粗糙的表面,微平面都是坑坑洼洼高低不平的,一部分入射光和反射光会被其他微平面遮住,下图黑色部分就是被遮住的反射光

再来一张

这一描述有多少入射光和出射光会被遮住的项,我们称之为遮挡项或几何项(Geometry Term)
到此,我们先来整理一下微平面理论下BRDF的概念。还记得上篇我们将入射光和出射光的关系比作简单的f(x)=k*x的例子吗,这里我们可以简单地扩写一下这个式子
某一点在某一方向的反射光 = (几何项1:改点在入射光方向未被遮住的比例)*
(几何项2:改点在反射光方向未被遮住的比例)*
(菲涅尔项:在光滑的理想镜面微平面上反射光的比例)*
D*(某点在某方向上的反射光)
还有一个最后一个D项是什么?首先我们来简单复习一下理想镜面反射的情形。对于一个理想镜面,在满足什么条件下入射光能正正好好射入到我们的眼睛中?答案非常简单,就是在镜面向量正好指向视线向量和光线入射方向的半角向量时,如下图所示。

说到此处D项的意义就非常清楚了:在某一点,有多少比例的微平面的发线方向指向视方向和入射光方向的半角向量,从而能恰好将光线反射到我们的眼睛里。这一项我们称之为法线分布项(Normal Distribution Function,简称NDF)。NDF是最为重要的一项,他与菲涅尔项共同影响高光的衰减程度,同时又决定了高光的形状。
现在我们可以完整地写出在微平面理论下BRDF的形式了,如下所示

注意上式只是高光部分的BRDF,漫反射部分还没写。分子从左至右便是菲涅尔项,几何项和法线分布项,菲涅尔项和其他两项相互独立,三项都能被任意替换,这个模型被称之为Cook-Torrance模型,是目前最为常用的微平面BRDF形式。有人会问分母中的那两项是啥,其中一项的来源是因为,微平面理论定义在半角向量,而在渲染中则是在入射及反射光方向空间计算,需要乘上对应的雅可比行列式变换空间微元。这一项也至关重要,没有的话就无法模拟出一个称之为off-specular peak的现象:对于粗糙材质(尤其是金属),当光线以较大的入射角入射时,反射光最强的方向并不在镜面反射方向。对于微平面理论模型Blinn-Phong便是根据这一现象推导出来的。另一项是则是伴随几何项的修正项,具体推导略过。
简单介绍完微平面理论下BRDF的构成后,我们要开始填入更加具体的式子了。首先对于菲涅尔项,有个很常用的近似称之为Schlick近似,具体式子为:

这个近似有个好处在于电介质和导体(金属)通吃,无需分开来计算。式子中的Cspec便是高光颜色,也就是F0。
几何项受限于篇章,我在此处略去。对于NDF项就比较复杂了,各种模型五花八门,这里我们重点介绍最为常用的三种,Phong,Blinn-Phong和GGX。
Phong是最早也是最简单的一种光照模型(查了下Phong好像是个越南人)。在Phong光照模型下,高光反射永远关于镜面反射方向对称,在平面上其高光形状永远是圆形。如下图所示

Blinn将Phong的V*R改成了N*H,在曲面上Phong和Blinn-Phong很难看出区别,但在平面上,这一简单的改变却使高光形状发生了巨大的变化,使其从正圆形变成了狭长的椭圆形。如下图所示

上图中第一排便是在平面上Phong和Blinn-Phong的差别。Blinn-Phong在平面上所带来的这种椭圆形的狭长高光更加符合现实情况。在孤岛危机1(CryEngine 2)中虽然集成了多种光照模型,但主力模型仍是最为简单的Phong。到了CryEnigne 3,也就是孤岛危机2/3时,Crytek换成了Blinn-Phong模型。不过,使用更高级光照模型的孤岛危机2的材质表现反而被不少人诟病,原因何在?我们将在以后的部分探讨。


IP属地:上海1楼2015-07-26 21:56回复
    第一部分:http://tieba.baidu.com/p/3922888163


    IP属地:上海3楼2015-07-26 22:00
    回复
      已经流行到连vray 3.2都代入GGX了。


      IP属地:陕西4楼2015-07-26 22:26
      回复
        顶个,期待孤岛2那篇


        IP属地:广东5楼2015-07-26 22:59
        回复


          来自WindowsPhone客户端6楼2015-07-27 00:05
          回复
            赞!


            IP属地:广东来自Android客户端7楼2015-07-27 00:35
            回复
              顶一个,说得比我半桶水功夫详细全面多了


              IP属地:河南来自Android客户端8楼2015-07-27 00:45
              回复
                牛逼。。。
                        ---我们总以为自己是例外。


                IP属地:辽宁来自Android客户端9楼2015-07-27 06:59
                回复


                  来自iPhone客户端11楼2015-07-27 08:03
                  回复
                    好顶赞,第三篇何时?


                    IP属地:澳大利亚12楼2015-07-27 09:44
                    收起回复
                      牛逼


                      IP属地:广东来自Android客户端13楼2015-07-27 09:57
                      回复


                        14楼2015-07-27 13:41
                        回复
                          辛苦了,感谢科普。


                          星座王
                          点亮12星座印记,去领取
                          活动截止:2100-01-01
                          去徽章馆》
                          IP属地:山东15楼2015-07-27 15:02
                          回复


                            IP属地:山东来自Android客户端16楼2015-07-27 18:59
                            回复
                              图文并茂不是英文


                              IP属地:加拿大17楼2015-07-27 19:44
                              回复