概述
明暗描绘是人类真实地表达对象的主要技术之一,存在着两种基本不同的明暗描绘方法:逐点曝光法和基于知识法,逐点曝光法按绘图介质上各点所接收光强的大小而给定图上该点的明暗,基于知识法则是按照已有的物体明暗变化知识,将颜料涂到介质的相应部位上去,摄影是采用逐点曝光法的一个例子,美术师作画则是采用基于知识法的一个例子。2
发展在计算机图形学中,明暗描绘技术被称为Shading技术,它仍是目前研究的热点之一,从70年代开始,已经历了几个重要的发展阶段。
1975年,Phong提出了基于Lambertin定律的光照模型,指出光强为,与物体表面法向量夹角为,与视线夹角为的光线,在漫反射系数为,镜面反射系数为的物体表面上引起的光强I为:
Phong模型奠定了逐点曝光的计算方法。
1980年,Whitted,提出了光线跟踪方法(ray tracing)。这个方法除了在Phong模型基础上略加改进,发展成一个全局照明模型外,主要贡献在于:它不是沿着物体表面的各点来计算光强,而是沿着二维成象介质(如视区上各点)上的各象素来展开算法,这样一来,至少有两个直接的好处:一是可以很方便地求得环境中各物体彼此之间的反射影响;二是在视线不到之处,可以不加考虑,而在视线所到之处,可以更精细地计算(每个象素即进行计算),因此,物体的明暗描绘更加逼真.尽管第二条的优点削减了第一条所引起的计算量的大大增加,光线跟踪方法仍需要比以前方法更多的执行时间。光线跟踪方法与照相原理十分接近,呈现更典型的逐点曝光方法特征。
1984年,Goral等提出辐射法(radiosity),旨在模拟物体之间的漫反射效果。辐射法把描绘的环境作为一个由面组成的闭合体处理,而这些面假定为完全漫反射。在此环境中一个面A之明暗由它所发出的光强而定,A所发出的光强为它反射环境中其他面射向它的光强之和,而其他面所射向A的光强大小则与A的位置因子(form factor)有关。位置因子由A与其他各面的距离及夹角而定,辐射法反映了物体之间彼此漫反射的效果,其计算量是十分巨大的,并且难以反映镜面反射和折射等效果。2
关于逐点曝光法从光线跟踪到辐射法的发展过程中,这类方法考虑的因素越来越复杂,计算也越来越繁重,在实际使用中带来很多问题。首先是计算量过大,所耗机时过长,这个矛盾对有实时要求的应用,如动画、视点移动模拟等等,特别突出,因此,很多应用为了追求速度,不得不降低所生成图形的质量,其次,用逐点曝光计算法所描绘的图形过于刻板,难以反映设计者希望的效果,难以调整,也难以交互.这一缺陷常常招致建筑师和其他造型设计师的不满,大多数研究者都以真实感为其目标.但是真实感主要是用户的一种感觉,而这种感觉之强烈程度,并不总随着计算的细腻程度而增加.基于上述分析与观察,引人人类描绘明暗的第二类方法,即基于知识法是十分必要的。2
关于知识描绘基于知识描绘明暗的方法是人类设计师和画家常采用的方法,他们从素描训练中获取基本体素表面上明暗变化的知识,而在设计与绘画过程中,他们使用这种知识,可以描绘出具有非常真实感觉的图象来,将人工智能的方法运用到Shading技术中去,就可以在计算机上模拟人类的这独基于知识的月暗描绘方法,不妨称之为SBK(Shading Based on Knowiedges)技术。2