05.简易的镜面反射模型————Phong,Blinn-Phong.
上面的图显示的是物理上真实的境面反射--高光。左边一个是Lambert,完美的漫射。红色的入射光线反射后被等量的向四周反射。第二个是完美的镜面反射,渲染器用这个原理来产生完美的镜面,像镜子等。第三个是反射模糊,反射光线由于表面的微小凹突在镜面反射的路线上产生了偏移。现在我们已经了解了许多描述表面上不同部分的模型,上面介绍的只是最简单的几个。还有一些描述不同类型镜面反射的模型(因为许多表面都有不规则的地方)。最简单的几个:
1975年Phong Bui Tong发明的Phong模型,由于它的速度相当快,成为了CG表面镜面反射应用最多最广泛的模型。它不是物理上精确的模型,你可以设置高光的强度使发送的光线大于接收的光线,而这在现实中是不可能的。但因为CGI是一种艺术创作,那么这也是可行的。
下图中最左侧的球体是Phong模型,这种模型的一大优点是你可以跟其它的模型混合使用来达到不同的效果。最常见的就是把phong跟Lambert混合产生第二个球体的效果。注意我用了相同的灯光照亮球体(位置,强度)。混合后的结果是高光变亮了。这样做的优点是你可以调整模型中的不同参数(颜色,高光强度....)来达到真实的效果。右面的两张图显示了Phong的高光在入射角上和视角上都是独立的。这个三维图中的白色线框代表了蓝色垂直入射光线在红色板处反射的反射光线的方向和强度大小。入射点周围的半球是完美的Lambert漫射,而由于Phong高光的存在在顶部有一小部分的突起。实质上Phong高光就是在入射光方向上产生了较强的反射,加上入射点周围的高光区,再加上Lambert的漫射区形成了整个球体。当光线从另一个角度入射时只是反射角度依据入射角=反射角定理变化。

Blinn-Phong模型,也叫Blinn,是Phong模型最常见的变化类型。做为CG领域的先驱,Blinn改进了Phong模型的一些高光上的问题。Blinn模型混合了Lambert的漫射部分和标准的高光,在速度上相当快,因此成为许多CG软件中的默认材质。此外它也集成在了大多数图形芯片中,用以产生实时快速的渲染。如下图:这两个球体使用相同的光照和相同的参数(Blinn和Phong高光的基本参数是相同的)。看上去上图中的Phong球和下图中的Blinn球没什么区别,除了Blinn球看上去更加柔和。但我们来看看不同角度下的反射值(图3,4),就能看到非常明显的区别。在入射角为90度的情况下反射就像是非常柔和的的Phong高光,但角度很小时高光的反射处明显被撕裂。这是因为这两个的BRDF模型的算法有微小的区别,但这有什么用呢?

[1] [2] [3] 下一页