和diffuse reflection对应的是specular reflection。一直以来,本人都将“specular reflection”理解为“镜面反射”。但是,现在来写总结时,发现牵涉到一个叫做“perfect specular reflection”的东东,这下有点乱了。两个都是“镜面反射”么?还是一个“理想镜面反射”,一个“镜面反射”?为了避免混淆,特此声明:
“perfect specular reflection”:等价于“mirror-likereflection”,译为“镜面反射”;
“specular reflection”:现在译为“高光反射”。
“镜面反射”发生在非常非常非常平的像镜子一样的物体表面。但是,现实中的物体表面都不是如此理想,表面都是粗糙的。比如这样一个球:
如果撤掉这个球的漫反射光,剩余的光呈现的是这样一张图:
这一团亮光是什么鬼?这个就是“高光反射”,对应的光被称为“高光”。
尽管现实的表面是粗糙的,但是粗糙的表面可以认为是由无数细微的mirror-like的微表面。所以,我们要先看看镜面反射(mirror-like reflection or perfect specular reflection)。
68.1.2.2.1 镜面反射(perfect specular reflection)
以前在“问题二十一:怎么模拟ray tracing图形中不同材料的颜色(diffuse and metal)”(http://blog.csdn.net/libing_zeng/article/details/54428494)中有求反射光线的方向向量F。重复贴图如下:
计算过程中用到的是入射光线和法线的方向向量的单位向量,这样求出的反射光线的方向向量也是单位向量。
对于“镜面反射”,就了解这么多吧。(入射角=反射角,知道怎么求得反射光线的方向向量)。
68.1.2.2.2 高光反射(specular reflection)
先前挖了这么一个坑:下图的高光反射光线为什么是三条,而不是一条?
当时的简单回答是:因为表面的上表面不是理想光学镜面(不是特别特别特别平)。
表面是粗糙的,夸张一点的示意图应该是这样的:
表面再粗糙点。表面越粗糙,高光则越是发散:
相比与“漫反射光”,这种反射光线(高光)强度要大很多,但是方向不像漫反射光线那么分散,而是聚集在某个方向周围。这样就可以解释之前那一团亮光了。(重复贴图如下)