专利名称:自适应浓淡的方法和设备的制作方法
技术领域:
本发明的方法和设备涉及计算机生成图象的产生的领域。具体地说,本发明的方法和设备涉及计算机生成图象的浓淡(Shading)。
一般而言,在产生数字图象的计算机图形系统中,将物体的表面表示为平面多边形的网格。可用已知技术对这些多边形作快速变换和复制。这些技术假设输入为其顶点属性为位置、法线和颜色(如
图1a所示)的简单的三角形。例如在物体坐标空间定义顶点位置。顶点法线为描述每个顶点处表面方向的单位矢量。顶点颜色说明该物体本身的颜色。该顶点颜色属性允许该物体颜色在三角形内变化。
为在计算机图形显示器上产生物体的逼真的图象,不仅要产生物体的形状,而且涉及物体可见表面的阴影浓淡,考虑到光源、表面特征及表面与光源的位置和方向。三种反射函数的组合可用于确定图象的浓淡。这三种反射函数是背景反射,漫反射和镜面反射。背景反射是物体从随机光源汲收并放出的光。与光的方向不相干。背景函数简单地比例增减该物体颜色。例如,对红、绿和蓝的背景加权为Kar,Kag,Kab,则可将背景反射函数描述为lar=Kar*Crlag=Kag*Cglab=Kab*Cb其中,lar,lag,lab分别为红、绿和蓝颜色单元的背景反射,Kar,Kag,Kab为颜色单元红、绿和蓝的背景加权,而Cr,Cg,Cb为物体红、绿和蓝单元的客体色彩或色彩强度。背景加权的范围是0≤Kar≤1,0≤Kag≤1,0≤Kab≤1应注意到,背景加权Kar、Kag、Kab和以下的漫反散加权Kdr、Kdg、Kdb实际上为两个项的乘积。第一个项表示该分量的光强度。第二个项表示该物体表面反射该分量的能力。由于都与背景几何形状无关,因此将两个项组合为加权。如背景包括多个光源,则对每个光源就有独立的加权。
黯淡、无光泽表面呈现漫反散,所有方向上相等的散射光,使得该表面显得从所有的视角来看具有相同的亮度。对这种表面,Lamber的余弦定律说明反射光量与方向L和点光源之间角度α的余弦相关,而该表面的法线矢量N如图1b所示。漫反射可用下面的等式给出ldr=Cos(α)*Kdr*Crldg=Cos(α)*Kdg*Cgldb=Cos(α)*Kdb*Cb其中,Cos(α)等于N·L(因为漫反射必须为正,Cos(α)的计算要求Cos(α)=max(Cos(α),0)),而ldr,ldg,ldb分别为红、绿、蓝单元的漫反射数值,Kdr,Kdg,Kdb为光源的红、绿、蓝单元的漫反射系数(为0到1间的常数,随表面材料而变),而Cr、Cg、Cb为表面红、绿、蓝单元的颜色。
镜面反射是发光表面上观察到的强光。由冯必同(Bui TuongPhong)研制出的模型将镜面反射转变为眼点矢量V和与最大反射对齐的矢量R之间角度的余弦的函数,如图1b所示(参见Phong,B.T的Salt Lake City、Utah大学计算机科学系博士论文“计算机生成图象的亮度”,政府征订号AD-A0008-766(1973年7月))。关于背景、漫反射和镜面反射的进一步信息也可参见Foley和Van Dam所著《交互式计算机图形学基础》(Addison Wesley 1983),PP.575-580以及Cook和Torrance所著《计算机图形学的反射模型》,刊于“计算机图形学”第15卷,第3号,1981年8月。
反射量是相加的,这样,如果三个独立光源发光到一表面,可通过对每个光源确定反射量并将每个光源所确定的反射量相加来计算该表面上的反射量。在制定反射类型和反射量时,应认识到存在不同类型的光源。一种情形出现在距离光源无穷远时。该光源的说明可简化为如下的简单的光矢量L=Lx,Ly,Lz其中,光矢量的大小等于|L|=sqrt(Lr2+Ly2+Lz2)而对无穷远光源,|L|的值等于1。
另一情形发生在距离光源是有限的,但发光模式是各向同性的。因此该光在所有方向上发光强度相同。这时光源的说明简化为光位置Q=Qx、Qy、Qz光矢量,即相对于顶点位置Px、Py、Pz的光位置为
L=Qx-Px,Qy-Py,Qx-Pz其中,大小为|L|=sqrt((Qx-Px)2+(Qy-Py)2+(Qz-Pz)2)由于该大小不为1,而亮度方程需要单位矢量,因此将光矢量归一化L=(Qx-Px)/|L|,(Qy-Py)/|L|,(Q-Pz)/|L|最后一种情形发生在发光模式不是各向同性时。由于发光模式不是各向同性的,光源的说明需要表明发光模式函数的模式矢量K=Kx、Ky、Kz该模式矢量用以说明光强最大的方向。照射到该物体的光随着矢量L和模式矢量K之间的角度的增加而减少。光矢量在包括模式函数之前,表述如下L=(Qx-Px)/|L|,(Qy-Py)/|L|,(Qz-Pz)/|L|其中大小为| L|=sqrf((Qx-Px)2+(Qy-Py)2+(Qz-Pz)2)将强度调整为光矢量和模式矢量之间角度的函数的模式函数常常为
Cos(χ)=Kx*Lx+Ky*Ly+Kz*Lz光矢量吸收该数值而变为L=Cos(χ)*Lx,Cos(χ)*Ly,Cos(χ)*Lz,计算机图形系统通常将图象曲面表示为平面多边形的网格,这些多边形加有浓淡以恢复光滑外观。系统通过改变多边形上的强度来恢复平滑外观。尽管已有一些用于多边形逼真的浓淡技术,但因对每个象素需要大量的计算故实时系统并未使用这些技术。可执行的最简单的浓淡计算是漫反射计算,即按照漫射光的Lambert定律。然而,该计算假设从所有视角看的反射具有相同亮度。由于简单的漫反射公式不能以表面的物理属性,例如粗糙系数,加到反射等式上,则该表达式只是近似于该反射。例如,该表达式不能说明当光射到金属表面时波长如何以入射角偏移。该波长偏移使颜色发生变化。此外,该简单的漫射等式并未考虑光如何从表面散射到表面。
又,漫反射的最简单形式假定反射在整个面或多边形上是不变的。尽管这是简单的计算,但在多边形之间边界上的强度也常常是不连续的。一种实时执行图象浓淡的较好技术称为Gouraud浓淡。使用Gouraud浓淡技术,每个点的强度可通过在该多边形各顶点上强度的线性内插加以计算。这些强度用在各顶点给出法向的漫反射的反射等式确定的。关于Gouraud浓淡的进一步信息,参见Gouraud.H所著“曲表面的连续浓淡”,IEEE计算机汇刊第20卷,第6号,PP623-628(1971年6月)。然而,该技术仅考虑了漫反射,这样,用该技术浓淡后的表面显得黯淡。此外,由于不连续的强度变化,该图象在多边形边界上反射马赫带。
冯氏浓淡(Phong Shading)技术照亮黯淡表面并减少由Gourand浓淡技术产生的马赫带,但由于产生图象需要大量计算机时间及费用通常并没有用在实时系统中。使用该技术,用根据在各顶点说明的真实平面法线线性内插的近似平面法线来确定每个点的强度。冯氏浓淡利用等式N(x.y)=Ax+Bx+C,其中A、B、C为选择用于内插多边形法线的顶点。冯氏浓淡对每个象素需要7次加法、6次乘法、1次除法和1次平方根运算。该运算很费钱和时间,尤其是由于它包括了平方根计算。关于冯氏浓淡技术的进一步信息,参见Salt Lake City的Ufah大学计算如科学系博士论文“计算机生成图象的亮度”(政府征订号AD-A0008-786)。
冯氏浓淡计算由Tom Duff加以简化,如Tom Duff在“ACM计算机图形学”第13卷第2号PP.270-275(1979)上发表的”光栅显示的多面体物体的平滑浓淡再现”中所述。Duff通过组合内插和反射来简化冯氏浓淡Idiffuse(x,y)=L|L|·Ax+By+C|L||Ax+By+C|]]>=L·A+L·By+C|L||L·Ax+L·By+L·C|]]>=ax+by+csqrt(dx2+exy+fy2+gx+ny+2)]]>其中,a=L·A|L|]]>b=L·B|L|]]>c=L·C|L|]]>d=A·Ae=2A·Bf=B·Bg=2A·Cn=2B·Ci=C·C这样可对该实现评估,对连续的X和Y值,对每个象素只需3次加法、1次除法和1次平方根。虽然这是对冯氏公式的一种改进,但除法和平方根计算还是使得该技术对实时实现来说太耗时、太昂贵。
在冯氏浓淡的另一种实现中,计算反射方程的近似值,从而节约精确计算反射方程所需的时间和费用。在Weimer发表在“计算机图形学”第20卷、第4号(1986)PP.103-105的“快速冯氏浓淡技术”的文章中,将二阶泰勒级数近似用来计算该反射。为简化该近似,移动该多边形使坐标原点(0,0)位于该多边形的中心。使用该技术,计算象素的强度只要对各象素上进行两次加法。
然而,在以上所有技术中,使用相同函数来判定图象中所有多边形的反射。如果该图象中有些多边形的反射。如果该图象中有些多边形的反射在所要求的质量水平上只能用复杂的、费时的过程来判定,则用相同过程来处理所有多边形。这样,尽管可用较简单较快过程判定相当多数的多边形的反射,但为恢复图象质量,使用复杂费时的过程来获得该图象所要求质量。
本发明的目的是提供产生浓淡图象的实时技术。
本发明的目的是提供一种用于图象浓淡的自适应方法,根据表面的曲率、该表面上光矢量变化以及该表面观测矢量变化决定图象浓淡的技术。
在本发明的方法和设备中,使用自适应浓淡方法实时地产生浓淡图象。首先对多边形各个顶点计算色彩或强度。然后执行一系列测试判定被用于对两顶点间的多边形内插色彩或强度的该阶方程。使用该技术,略有或没有曲率的多边形和无限光源(最简单的浓淡形式)可使用极快的低阶方程来对该多边形内插。具有高曲率的多边形和(或)位置光源将使用(如必要)需要额外计算时间但产生理想浓淡结果的较高阶方程。
通过以下对本发明的描述,本发明的目的特征和优点会十分显而易见,附图中,图1a和1b说明先有的浓淡技术所述术语及变量。
图2说明镜面浓淡计算所用几何图形。
图3是本发明系统中所用说明性的计算机系统。
图4a、4b和4c说明需要较高阶方程产生高质量浓淡图象的表面的光照。
图5是说明本发明最佳实施例的流程图。
图6a和6b是说明本发明的另一最佳实施例的流程图。
图7a-7d说明本发明最佳实施例中所用术语和变量。
图8a、8b、8c进一步说明本发明最佳实施例中所用术语及变量。
图9是将按本发明的系统产生的图象质量与按冯氏浓淡方法产生的图象质量进行比较的表格。
图10a-10e说明在本发明系统中使用二阶和三阶方程时所用术语及变量。
图11a-11d说明在本发明系统中使用平面方程时所用术语及变量。
大致通过算法和计算机存储器内数据位上操作的符号表示给出如下的详细说明。这些算法说明和表示是为数据处理领域技术人员所用的手段,以便有效地将他们工作的实质传达给该领域其它人。
这里的算法通常被认为是可导出理想结果的前后一致的步骤序列。这些步骤需要物理量的物理操纵。通常,虽不是必需的,这些量采取可被存储、传送、组合、比较和其它操纵的电或磁信号的形式。这已屡屡被证明是方便的,主要是公共用法的原因,即将这些信号视为位、数值,单元、符号、字符、项、数字等等。然而应该记住,所有这些以及类似的项和适当的物理量关联,并且是用在这些量上非常方便的标记。
所作操纵常认为是诸如加法或比较,它们通常和由操作者所作智力运算相联系。在大多数情形下,在本文描述的形成本发明一部分的操作中,没有这些能力的操作人员是必须的、即合乎要求的,而这些运算为机器运算。执行本发明操作的有用的机器包括通用数字计算机或其它类似装置。在任何情形下,应牢记操作计算机的操作方法和计算机本身方法之间的区别。本发明涉及用处理的电子或其它(机械、化学的)物理信号来操作计算机以产生其它合乎要求的物理信号的方法步骤。
本发明也涉及执行这些操作的装置。该装置可为所要求目的来专门构造或可包含由存储在计算机中的计算机程序有选择启动或重构的通用计算机。本文给出的算法并不限定于具体计算机或其它装置。具体而言,各种通用机器可为按本文所写程序所用,否则构造更专门的装置来执行所要求方法步骤则更为便利。对种种这些机器所要求结构将在以下说明中给出。
图3示出典型的按照本发明的用于多边形自适应图象浓淡的基于计算机的系统。示出的计算机101包含三个主要部件。其中第一个部件是用于以适当构造的形式与计算机101其它部件往返传输信息的输入/输出(I/O)电路102。示出的计算机101的一部分为中央处理器(CPU)103和存储器104。这后两个单元通常可在大多数通用计算机以及几乎所有专用计算机中找到。事实上,计算机101中所含好几个单元是用于代表这种广泛种类的数字处理器的。起到计算机101作用的适当的数据处理器的特定例子包括由California,Mountain View,Sun Microsystems,Ine制造的机器。其它具有类似功能的计算机当然也可直接采用来执行以下所述功能。
图3也示出了输入装置105,在典型实施例中示出为一个键盘。然而应该理解,该输入装置实际上可以是读卡机、磁带或纸带机或其它从头到尾的设备(当然包括另一计算机)。大容量存储装置106耦合到I/O电路102并对计算机101提供附加的存储能力。该大容量存储器可包含其它程序等并可采用磁带机或纸带机或其它众所周知装置的形式。应该理解大容量存储器106中所保留的数据在适当场合可以标准方式并入计算机101作为存储器104的一部分。
此外,示出的显示监视器107用于显示报文或与用户的其它通信以及图形图象,例如,按照本发明的的过程再现的浓淡图象。显示监示器包含称为象素的显示单元的矩阵。这些象素以特定图案和预定强度被激活或接通以在显示器上产生图形图象。如该显示器为彩色监视器,对每个基色单元例如红、绿和蓝单元,以特定图案和预定强度激活这些象素。显示图象的观看者视觉上将每个象素上红、绿、蓝单元组合而辨识为彩色图象。这些显示监示器可采用几种已知的各CRT显示器中任何一种形式。将图形图象数据提供给帧缓冲器108。I/O电路102从帧缓冲器108中读出图形数据,并以图形图象数据规定的位置和强度激活显示监示器107上相应象素。光标控制109用于选择命令状态、编辑输入数据,并且一般提供将信息输入到该系统的更方便的手段。
在本发明中的判定多边形表面阴影量的步骤适应于多边形曲率、相应于多边形表面的光源位置以及眼点位置(即,相对于多边形表面的观看者眼睛的位置)。多边形曲率越大,光源离多边形越近,眼点离多边形越近,多边形表面反射偏差越大,则精确判定该多边形表面浓淡的量所需的步骤越多。
该观察用于提供重现高质量图象的过程而不必统一使用高阶浓淡方程产生高质量图象所需的计算开销和费用。执行一系列测试判定曲率量、光源位置和眼点对多边形的位置。如果曲率量为最小、到光源和眼点的距离大,则使用简单快速零阶方程计算多边形的反射。如法向矢量变动小,指出没有什么表面曲率,而且光矢量变化和眼矢量变化小,则多边形上反射量不变是可能的。如果反射量变化小,例如,如果反射变化小于1/256,该变化对观看者几乎不可察觉,而当反射变化小于1/64,变化仍是轻微的。这样用不变的色彩值来近似色彩变化是可能的。
当多边形上反射量变化增加,例如较高阶的方程来计算多边形上的反射。这产生了不能用零阶方程实现的更精确的反射表达式。随着曲率量变大和(或)光源位置变近使从多边形顶点到光源的方向矢量从顶点到顶点发生变化,则使用较高阶方程。较高阶方程虽然计算强度大但要重现高质量图象就必须使用,因为多边形表面上反射量变化对观看者明显可见,所以多边形上浓淡量不是恒定不变的。
图4a、4b和4c示出用零阶、一阶表达式判定反射不合适的三种情形。参考图4a,假定三角形的表面曲率是大的。因此,顶点法向矢量N变化而顶点法矢量到顶点光矢量L投影的漫反射也发生变化。这样,最好选择方程的阶来保留该反射变化。在该实例中,一阶方程并不合适,所以系统应选择下一较高阶(冯氏)方程来模拟反射。应注意到,冯氏方程严格地说不是二阶方程。该技术涉及归一化,它对每个象素需一次平方根和除法。然而,有文献(参见Wemer“快速冯氏浓淡”,发表于“计算机图形学”第20卷第4号(1986),PP.103-105)已指出二阶方程近似于该结果。因此,除了指出之处,认为冯氏方程为二阶方程。
假定图4b所示三角形无曲率,则顶点法向矢量相同,但光源位置正好在三角形表面之上。因此,顶点光矢量变化而顶点法矢量到顶点光矢量投影的漫反散发生变化。然后应选择可保留该变化的方程阶数。
参考图4c,假定三角形元曲率,但眼点位置正好在三角形表面之上。这样顶点眼点矢量变化,涉及顶点法向矢量到顶点眼点矢量的投影的镜面反射变化。本发明的系统应检测这种情形并选择保留该反射变化的方程阶数。
这样,系统将具较低质量图象的快速、低成本计算的优点和具有较高质量图象的慢速、高成本计算进行均衡。快速低成本计算机最好用于判定多边形上的反射量,然而,如果多边形曲率、光源位置或眼点位置指出该表面上显著的反射变化,则使用较高阶方程来再现高质量图象。这样只有在必要时才执行较慢的、费用高的高阶计算。具有小曲率、距离光源远、距离眼点远的多边形使用低阶方程快速而低廉地进行计算。业已发现,构成图象的多边形的实质性部分可用零阶或一阶方程来再现。使用本发明自适应浓淡系统产生再现图象比使用图象质量略有或没有可分辨的下降的较高阶方程重现图象要快20~50%。
在最佳实施例中,使用三种类型的方程来计算多边形的反射量零阶、一阶和二阶。零阶方程对整个多边形表面计算恒定的数值。最好是,零阶方程按照Lambert定律并按以下式子计算漫反射加权Cos(α)=N·L
其中N为表面法线而L是光矢量。该法线可以是顶点法线或表面上任一点上的法线。该法线最好是顶点法线的平均法线。
一阶等式最好按照Gouraud浓淡技术计算。当多边形表面反射变化小时,Gouraud技术产生质量足够的图象。当多边形上反射变化显著时,指出需使用二阶方程,最好使用冯氏浓淡技术。
参考图5、6a和6b说明本发明的过程。图5示出对本发明第一实施例的过程流图,而图6a和6b示出本发明其它实施例的过程流图。相对于使用扫描线技术的图象再现来说明最佳实施例,然而,对本领域技术人员明显的是,本发明不但可应用于扫描线技术,而且可用于其它技术,例如平面方程,在多边形各顶点或多边形其它边界条件下内插颜色。
使用扫描线技术,判定显示单元与各扫描线的多边形交点,用诸如上述零阶、一阶或二阶方程的已知的浓淡方程,从顶点属性(色彩、位置和法线)导出这些显示单元中每一个的颜色。为内插显示单元多边形交点的顶点属性(或其它边界条件)判定差分变量。该差分变量说明多边形边界和多边形边界间扫描线上顶点属性(深度、法线、色彩)的增量。在大多数情形下,如下所说明判定法向差分变量(以及色彩和位置)。然而,如果本文所述测试标准指出光矢量和(或)眼矢量变化了,则以判定法向差分变量相同方式判定其差分变量,也在该多边形内插属性。
参考7a和7b,先按下式判定位置、法向、和色彩的差分变量dPx(1)=Px(2)-Px(1)dPx(2)=Px(3)-Px(2)dPx(3)=Px(1)-Px(3)dPy(1)=Py(2)-Py(1)dPy(2)=Py(3)-Py(2)dPy(3)=Py(1)-Py(3)dPz(1)=Pz(2)-P2(1)dPz(2)=Pz(3)-Pz(2)dPz(3)=Pz(1)-Pz(3)dNx(1)=Nx(2)-Nx(1)dNx(2)=Nx(3)-Nx(2)dNx(3)=Nx(1)-Nx(3)dNy(1)=Ny(2)-Ny(1)dNy(2)=Ny(3)-Ny(2)dNy(3)=Ny(1)-Ny(3)dNz(1)=Nz(2)-Nz(1)dNz(2)=Nz(3)-Nz(2)dNz(3)=Nz(1)-Nz(3)dCr(1)=Cr(2)-Cr(1)dCdr(2)=Cr(3)-Cr(2) dCr(3)=Cr(1)-Cr(3)dCg(1)=Cg(2)-Cg(1)dCg(2)=Cg(3)-Cg(2)dCg(3)=Cg(1)-Cg(3)dCb(1)=Cb(2)-Cb·(1) dCb(2)=Cb(3)-Cb(2)dCb(3)=Cb(1)-Cb(3)其中,dPx(1),dPy(1),dPz(1)表示第一顶点和第二顶点之间边的位置差分变量;dPx(2),dPy(2),dPz(2)表示第二顶点和第三顶点之间边的位置差分变量;dPx(3),dPy(3),dPz(3)表示第三顶点和第一顶点之间边的位置差分变量。变量dNx(1),dNy(1),dNz(1)表示第一顶点和第二顶点的法线的法向差分变量;dNx(2),dNy(2),dNz(2)为第二顶点和第三顶点法线的法向差分变量;而dNx(3),dNy(3),dNz(3)是第三顶点和第一顶点法线的法向差分变量。变量dCr(1),dCg(1),dCb(1)表示第一顶点与第二顶点连线的色彩差分变量;变量dCr(2),dCg(2),dCb(2)表示第二顶点与第三顶点连线的色彩差分变量;而dCr(3),dCg(3)和dCb(3)表示第三顶点与第一项点间连线的色彩差分变量。
根据位置差分变量(dPx对dPy)的大小可确定主轴。该主轴指示多边形重现方向。在本说明例中,第一边和第二边的主轴为y轴,第三边的主轴为x轴。次轴的位置差分变量由主轴差分变量所划分,导出次轴增量。然后根据扫描线再现技术用一个单位的增量遍历三角形各边。然后分类各顶点以判定每条扫描线的左边和右边。
按照扫描线技术的逻辑,将扫描线方程中描述顶点间的边的变量初始化为顶占点属性,而将从差分变量导出的递增变量用于遍历该多边形。位置差分变量在由主轴划分之后,导出归一化的位置增量,法线差分变量由主轴划分以后导出归一化法线增量,以及色彩差分变量由主轴划分以后导出归一化色彩增量dPx(1):=dPx(1)/dPy(1) dPx(2):=dPx(2)/dPy(2)dPx(3):=1dPy(1):=1 dPy(2):=1dPy(3):=dPy(3)/dPx(3)dPz(1):=dPz(1)/dPx(1) dPz(2):=dPz(2)/dPx(2)dPz(3):=dPz(3)/dPx(3)dNx(1):=dNx(1)/dPy(1) dNx(2):=dNx(2)/dPy(2)dNx(3):=dPz(3)/dPx(3)dNy(1):=dNy(1)/dPy(1) dNy(2):=dNy(2)/dPy(2)dNy(3):=dPy(3)/dPx(3)dNz(1):=dNz(1)/dPy(1) dNz(2):=dNz(2)/dPy(2)dNz(3):=dPz(3)/dPx(3)dCr(1):=dCr(1)/dPy(1) dCr(2):=dCr(2)/dPy(2)dCr(3):=dCr(3)/dPx(3)dCg(1):=dCg(1)/dPy(1) dCg(2):=dCg(2)/dPy(2)dCg(3):=dCg(3)/dPx(3)dCb(1):=dCb(1)/dPy(1) dCb(2):=dCb(2)/dPy(2)dCb(3):=dCb(3)/dPx(3)然后利用增量值,使用边内插逻辑沿三角形各边内插顶点属性Px(1):=Px(1)+dPx(1)Px(2):=Px(2)+dPx(2) Px(3):=Px(3)+1Py(1):=Px(1)+1 Py(2):=Py(2)+1Py(3):=Py(3)+dPy(3)Pz(1):=Pz(1)+dPz(1)Pz(2):=Pz(2)+dPz(2) Pz(3):=Pz(3)+dPz(3)Nx(1):=Nx(1)+dNx(1)Nx(2):=Nx(2)+dNx(2) Nx(3):=Nx(3)+dNx(3)Ny(1):=Ny(1)+dNy(1)Ny(2):=Ny(2)+dNy(2) Ny(3):=Ny(3)+dNy(3)Nz(1):=Nz(1)+dNz(1)Nz(2):=Nz(2)+dNz(2) Nz(3):=Nz(3)+dNz(3)Cr(1):=Cr(1)+dCr(1) Cr(2):=Cr(2)+dCr(2) Cr(3):=Cr(3)+dCr(3)Cg(1):=Cg(1)+dCg(1) Cg(2):=Cg(2)+dCg(2) Cg(3):=Cg(3)+dCg(3)Cb(1):=Cb(1)+dCb(1) Cb(2):=Cb(2)+dCb(2) Cb(3):=Cb(3)+dCb(3)为遍历该多边形,内插该顶点属性以在扫描线(见图7C)的左侧和右侧处产生数值。为完成该扫描线,首先确定扫描线的差分变量。图7d的扫描线的差分变量为:dPx(y):=Px(xr)-Px(xl) dNx(y):=Nx(xr)-Nx(xl) dCr(y):=Cr(xr)-Cr(xl)dPy(y):=0 dNy(y):=Ny(xr)-Ny(xl) dCg(y):=Cg(xr)-Cg(xl)dPz(y):=Pz(xr)-Pz(xl) dNz(y):=Nz(xr)-Nz(xl) dCb(y):=Cb(xr)-Cb(xl)然后将变量与扫描线宽度即dPx(y)相除,对变量归一化,对扫描线产生一致的递增变量,(最好与光栅的一致的增量相匹配):dPx(y):=1 dNx(y):=dNx(y)/dPx(y) dCg(y):=dCr(y)/dPx(y)dPx(y):=0 dNy(y):=dNy(y)/dPx(y) dCg(y):=dCg(y)/dPx(y)dPz(y):=dPz(y)/dPx(y) dNz(y):=dNz(y)/dPx(y) dCb(y):=dCb(y)/dPx(y)使用该信息,对三角形内插顶点各属性以完成三角形:Px(x,y):=Px(x,y)+1 Nx(x,y):=Nx(x,y)+dNx(y)Cr(x,y):=Cr(x,y)+dCr(y)Py(x,y):=常数 Ny(x,y):=Ny(x,y)+dNy(y)Cg(x,y):=Cg(x,y)+dCg(y)Pz(x,y):=Pz(x,y)+dPz(y)Nz(x,y):=Nz(x,y)+dNz(y)Cb(x,y):=Cb(x,y)+dCb(y)反射表达式的一阶的解简化了再现处理。和较高阶的解不同,一阶的解无须判定法矢量的差分方程。而是代之以对顶点(1、2、3)判定漫反射加权:
COS(α1):=Lx(1)*Nx(1)+Ly(1)*Ny(1)+Lz(1)*Nz(1)COS(α2):=Lx(2)*Nx(2)+Ky(2)*Ny(2)+Lz(2)*Nz(2)COS(α3):=Lx(3)*Nx(3)+Ly(3)*Ny(3)+Lz(3)*Nz(3)漫反射加权汲收到顶点色彩的各属性中。
Cr(1)=(Kar+Kdr*cos(α1))*Cr(1)Cg(1)=(Kag+Kdg*cos(α1))*Cg(1)Cb(1)=(Kab+Kdb*cos(α1))*Cb(1)Cr(2)=(Kar+Kdr*cos(α2))*Cr(2)Cg(2)=(Kag+Kdg*cos(α2))*Cg(2)Cb(2)=(Kab+Kdb*cos(α2))*Cb(2)Cr(3)=(Kar+Kdr*cos(α3))*Cr(3)Cg(3)=(Kag+Kdg*cos(α3))*Cg(3)Cb(3)=(Kab+Kdb*cos(α3))*Cb(3)应该注意到,以上表达式描述了一个光源时的漫反射。如有多个光源,由于作用是累加的,解就是将漫反射相加。
在一阶的解中,位置差分变量和色彩差分变量如上所说明进行判定。而无需判定法线差分变量。顶点色彩构成漫射加权值。然而,该解带来的问题是,漫射加权不能完全反映。二阶解通过使用法线差分变量对上述问题进行纠正。如上所述,顶点的法矢量首先沿多边形边内插,然后对其大小进行归一化。然后对左和右多边形边之间的多边形的扫描线递增法矢量,并对每个显示单元归一化该法矢量。
法矢量用于计算每个显示单元的漫射加权cos(α(x,y)):=Lx(x,y)*Nx(x,y)+Ly(x,y)*Ny(x,y)+Lz(x,y)*Nz(x,y)而漫反射加权并入色彩数值Cr(x,y):=(Kar+Kdr*cos(α(x,y)))*Cr(x,y)Cg(x,y):=(Kag+Kdg*cos(α(x,y)))*Cg(x,y)Cb(x,y):=(Kab+Kdb*cos(α(x,y)))*Cb(x,y)以上公式假设光矢量L(x,y)在多边形内不变。如果实际上该光矢量发生变化,则必须对光矢量和法矢量内插和归一化。该额外的内插和归一化是费时而昂贵的。本发明的系统在三个方面简化了反射计算。首先,本发明的系统判定何时施加零阶、一阶和二阶的解使得昂贵的高阶的解只用于当法矢量变化、光矢量变化或眼点矢量变化实际需要高阶解时。第二,本发明的系统可选择地通过判定多边形中哪一个矢量显著变化来检测哪一特定矢量值需要内插从而避免三矢量数值的费时内插,还包括无需内插的情形。此外,本发明的系统可有选择地替代普通差分方程对彩色值内插。该选择避免更昂贵的传统解法,该解法要对三个磁场内插和归一化。
参考图5,说明本发明的过程。在框200判定该表面的曲率。这可根据多边表每个顶点的法线、从法线确定的曲率量以及顶点对之间曲率量比较判定该多边形表面曲率是否急剧(severe)来判定。最好使用以下方程(参考图8a):
cos(φ)=min(cosφ(1)),cos(φ(2),cos(φ(3)))其中cos(φ(1))=Nx(1)*Nx(2)+Ny(1)*Ny(2)+Nz(1)*Nz(2)cos(φ(2))=Nx(2)*Nx(3)+Ny(2)*Ny(3)+Nz(2)*Nz(3)cos(φ(3))=Nx(3)*Nx(1)+Ny(3)*Ny(1)+Nz(3)*Nz(1)cos(φ)值测量顶点法矢量间最大变动。它预测多边形的最大曲率。在框205,如果cos(φ)的值指出曲率陡峭,则在框210执行二阶浓淡方程,否则保存cos(φ)为以后过程使用。
将预定阈值用来判定指出陡峭曲率的cos(φ)的数值。该阈值最好经验决定。该阈值对应于只能用二阶(或更高阶)方程产生的高质量图象的最小曲率。该质量标准和应用相关。例如,如果cos(α)大约为1,指出L和N是平行的,而当该标准保存彩色项的8位精度时,则选择零阶、一阶和二阶方程的阈值为1.000<cos(φ)<0.996,用0阶0.996<cos(φ)<0.992,用1阶0.992<cos(φ)<0 用2阶最好可由用户修改该阈值,以使该过程适合于各应用场合和产生的每个图象。典型地讲,如果cos(φ)近似为1的值,则多边形曲率最小而该过程的流程进行到框220。如曲率陡峭,并指出快速、低阶的浓淡方程不能提供图象要求的质量,则使用较精确、但费时而且昂贵的高阶浓淡处理。当然,如果用户要求图象快速产生而不关心质量,则可将阈值置较低数值以使用零阶方程产生图象多数多边形。例如,如标准保留色彩项为4位的精度,选择零阶、一阶和二阶方程的阈值为1.000<cos(φ)<0.938,用0阶0.938<cos(φ)<0.879,用1阶0.879<cos(φ)<0 用2阶同样地,如果用户要求精确浓淡图象,可将阈值置为接近于1数值的值使得大部分多边形是用较高阶浓淡方程重现的。如果曲率不陡峭,框220判定光源的相对于各顶点位置的变化。
光源越接近多边形,相对于一顶点的光的方向变化越大。对无限光源,即位于无穷远的光源而言,光源方向对所有顶点是相同的。一个位置光源,即有限距离的光源,如图8b所示,确定各顶点间的光源位置变化为cos(ψ)=min(cosψ(1)),cos(ψ(2),cos(ψ(3)))其中cos(ψ(1))=Lx(1)*Lx(2)+Ly(1)*Ly(2)+Lz(1)*Lz(2)cos(ψ(2))=Lx(2)*Lx(3)+Ly(2)*Ly(3)+Lz(2)*Lz(3)cos(ψ(3))=Lx(3)*Lx(1)+Ly(3)*Ly(1)+Lz(3)*Lz(1)其中Lx、Ly、Lz表示光源相对于顶点的位置。cos(ψ)值是顶点光矢量之间变化的量度。如果光源类型为无穷远光源,该cos(ψ)值定义为值1。如果在框225发现变化陡峭,则实施二阶浓淡方程(框230)。
如果反射方程包括镜面反射(框240),则在框250计算顶点的眼点矢量(见图8C),即相对于顶点位置的眼点位置cos(η)=min(cosη(1)),cos(η(2),cos(η(3)))其中cos(η(1))=Vx(1)*Vx(2)+Vy(1)*Vy(2)+Vz(1)*Vz(2)cos(η(2))=Vx(2)*Vx(3)+Vy(2)*Vy(3)+Vz(2)*Vz(3)cos(η(3))=Vx(3)*Vx(1)+Vy(3)*Vy(1)+Vz(3)*Vz(1)镜面浓淡包括表面上的强光量。强光直接对应于相对于表面的光源位置和相对于表面光源的眼睛位置。如果反射方程不包括镜面反射,在框245,设置cos(η)为1,指出眼点矢量无变化。
然后在框260确定最大强度变化,该强度变化为法向矢量变化、光矢量变化、眼点矢量变化的函数。例如,如下函数选择三个余弦值中的最小值,从而选出最大角度变化cos(φψη)=min(a(φ)*cos(φ),a(ψ)*cos(ψ),a(η)*cos(η))加权a(φ)、a(ψ)、a(η)反映三个余弦值如何影响整个反射方程。例如,cos(η)值的小的变化可转换为到达眼睛的反射强度的大的变化。因此这些加权可用于“取平”(even out)这些数值以对最大变化作为精确判定。
在框270和280进行测试以判定是否用一阶或二阶浓淡方程通过将最大强度变化与阈值比值来计算多边形的浓淡。一阶或二阶阈值可经验确定,或由用户按照所要求图象质量和产生图象的时间量对每一种应用加以调整。最好是第一阈值在0.996和0.938范围内,而第二阈值在0.992到0.879范围内。例如,对最大变化,cos(φγη):
1<cos(φγη)<ε1, 使用0阶ε1<cos(φγη)<ε2,使用1阶ε2<cos(φγη)<0, 使用2阶在框270,将最大强度变化与第一阈值ε1相比较。如果最大强度变化大于第一阈值,则使用零阶方程(框310)。如果变化小于或等于第一阈值,在框280将最大变化与第一阈值ε2相比较。如果最大强度变化小于第二阈值,则使用二阶方程产生浓淡。如果不小于第二阈值,则在框290使用一阶方程进行浓淡处理。一旦确定所用反射方程的阶数,则沿多边形边缘确定彩色值并使用正向差分再现该多边形以重现与多边形相交的每一扫描线上的象素(显示单元)(框320)。
参考图6a和6b说明本发明的第二实施例。图6a描述也包括漫反射的实施例。图6b描述也包括镜面反射的实施例。此外,如下结合图6a所描述的实施例可与图5所示出的实施例相结合以提供在应用时利用图6a所述实施例的速度和图5所述实施例的高精度的综合系统。同样地,图6a所述实施例也可与图5的实施例相结合。
参考图6a,在框420,确定该光源相对于每个顶点的位置。如果该光源是一位置光源,即距离多边表顶点有限距离的光源,则光源对每个顶点的位置会变化。如果该光源是无穷远光源,则光源对每个顶点的位置是相同的。
在框430,确定每个顶点的光矢量和面法线矢量的点积,在框440,计算各顶点每个点积间的差值。在框450,判定最大值cosdiff(α)为点积间最大差值max(abs(α1)-cos(α2)),abs(cos(α2)-cos(α3)),abs(cos(α3)-cos(α1)))该值用于判定是否使用零阶、一阶、二阶或更高阶方程来对多边形计算浓淡。使用第一阈值τD1来确定是否应该使用零阶浓淡方程。通过使用零阶浓淡方程,可节省时间和费用,并可产生所要求质量的重现图象。第二阈值τD2用于判定是否应该使用二阶浓淡方程。
阈值τD1和τD2可据经验或根据应用来加以确定,例如,如用户希望再现具有精确浓淡的图象,则最好用二阶反射方程计算浓淡。因此,阈值τD2应设为使大多数显示单元处在用二阶方程重现的多边形之内的一个数值。阈值τD1可设为一低值,而阈值τD2也可设为一低值以使用二阶方向进行图象大多数多边形的浓淡处理。此外,如果用户希望图象快速重现而不关心浓淡质量,则阈值τD1和τD2应设置来产生该效果。具体而言,阈值τD1应设为一高值而阈值τD2应设为一高值以使执行的大多数测试可指出使用零阶方程。
最好是将阈值设置为能使图象质量的要求与尽快重现图象的要求相平衡的数值。此外阈值应考虑表面发光情况,即镜面反射的光束宽度。当光束宽度宽时,该技术选择一阶方程。这样产生的图象对眼睛从可接受到几乎完美的质量而再现速度比使用冯氏浓淡技术重现整个图象要快25%到50%。当光束宽度窄时,尽管由于其中一个多边形用一阶方程而相邻多边形用二阶方程浓淡处理而沿某些多边形所呈现浓淡有不连续性,也可产生可接受质量的图象。然而该问题可通过使用较小多边形来加以避免。实际上,一般而言,由于需要产生较高质量图象而不常使用零阶方程。因此,阈值τD1最好设置为近似0.1的值以便用较高阶方程重现大多数多边形。
参考图6b描述本发明另一实施例。该过程流程图类似图6a的,除了漫反散外包括镜面反射。如果该过程包括镜面反射,在框610,计算每个顶点的眼点矢量。该计算从幅度上归一化每个眼点矢量。在框620,判定每个顶点的反射矢量到眼点矢量的投影(R-V)。该数值cos(δ(i))预测镜面反射。在框630,计算每个顶点的cos(δ(i))之差,即abs(cos(δ1)-cos(δ2)),abs(cos(δ2)-cos(δ3)),abs(cos(δ)-abs(cos(δ1)))。在框640,确定最大差值。如果最大差cosdiff(δ)小于或等于一阶阈值,则在框650选择零阶浓淡;如果最大差cosdiff(δ)大于或等于二阶阈值,则在框670选择二阶浓淡。否则,在框690使用一阶浓淡。
图9是说明使用本文所述技术的优点的表格。该表格示出使用冯氏浓淡技术(例如二阶方程)、Gouraud技术(使用一阶方程)和本发明的自适应浓淡技术对同一物体浓淡处理的结果。镜面功率是指出表面反射能力的数值。当反射功率增加时,表面发光增加。重现时间为使用该技术重现图象所用的时间量。“NMSE”表示自适应浓淡方法和二阶冯氏浓淡方法所产生图象的象素再现之间的归一化均方差。这可用如下等式来计算
其中Pr(i)冯氏方法产生图象的第i′象素的红分量Pg(i)冯氏方法产生图象的第i′象素的绿分量Pb(i)冯氏方法产生图象的第i′象素的蓝分量Ar(i)自适应浓淡产生图象的第i′象素的红分量Ag(i)自适应浓淡产生图象的第i′象素的绿分量Ab(i)自适应浓淡产生图象的第i′象素的蓝分量NMSE值越小,图象质量越高。这样,阈值τD1越低,产生图象质量越好,重现时间慢。相反,阈值越高,产生图象质量越低而重现时间越短,与重现图象时所用反射功率无关。一般而言,自适应浓淡产生图象的NMSE小于0.0001(与冯氏产生图象相比),指出该图象近似与冯氏浓淡图象相同。其NMSE值在0.0001和0.00025之间的图象有某些细微的浓淡不连续性,而NMSE值在0.00025和0.0005之间的图象的浓淡不一致性是明显的。而具有0.0005以上NMSE值的图象以图象观看者有显著缺陷。
本发明明显不局限于任何计算多边形浓淡的特定类型的方程。通过阅读本说明书,对本领域技术人员很显然的是任何熟知的浓淡技术可在本发明范围内使用,然而,最好使用以下方程。这些方程利用许多前面执行的计算来判定方程的阶,从而节省执行浓淡算法的时间。所述计算对所有阶方程可使用前面说明的扫描线技术。
以下例子利用三角形元素,但该技术可扩展到任意多边和参量表面。由确定表面的参量方程确定特定点或顶点的法向矢量。请参见Bartels,Beatty,Barsky所著“An Introduction to Splines foruse in Computer Graphics”(Margan Kaufmann 1987),PP.293-299,以及Faux,Pratt所著“Computational Geometry for Designand Manufacture”(Wiley 1979)PP110-113。
一阶解法计算三角形各顶点总的反射。如果反射由背景反射加漫反散组成,表达式有C(1)=(Ka+Kd*cos(α1)))*C(1),C(2)=(Ka+Kd*cos(α2)))*C(2),C(3)=(Ka+Kd*cos(α3)))*C(3),其中Ka是背景反射的系数,Kd是漫反射的系数,以及Cos(α1)=Lx(1)*Nx(1)+Ly(1)*Ny(1)+Lz(1)*Nz(1),Cos(α2)=Lx(2)*Nx(2)+Ly(2)*Ny(2)+Lz(2)*Nz(2),Cos(α3)=Lx(3)*Nx(3)+Ly(3)*Ny(3)+Lz(3)*Nz(3)应该注意到,为简化描述,以上方程合并了各色彩分量的分立表达式。如果色彩空间是可加的,则独立分量共用同一形式。如果反射包括镜面反射,表达式变成C(1)=(Ka+Kd*cos(α1)))*C(1)+Ks*(cos(δ1))P*Cl,C(2)=(Ka+Kd*cos(α2)))*C(2)+Ks*(cos(δ2))P*Cl,C(3)=(Ka+Kd*cos(α3)))*C(3)+Ks*(cos(δ3))P*Cl其中Cl是光源色彩,Ks是镜面反射系数,而cos(δ1)=2*cos(α1)*cos(δ1)-cos(χ1)cos(δ2)=2*cos(α2)*cos(δ2)-cos(χ2)cos(δ3)=2*cos(α3)*cos(δ3)-cos(χ3)其中
cos(β1)=Nx(1)*Vx(1)+Ny(1)*Vy(1)+Nz(1)*Vz(1),cos(β2)=Nx(2)*Vx(2)+Ny(2)*Vy(2)+Nz(2)*Vz(2),cos(β3)=Nx(3)*Vx(3)+Ny(3)*Vy(3)+Nz(3)*Vz(3),以及cos(χ1)=Vx(1)*Vx(1)+Vy(1)*Vy(1)+Vz(1)*Vz(1),cos(χ2)=Vx(2)*Vx(2)+Vy(2)*Vy(2)+Vz(2)*Vz(2),cos(χ3)=Vx(3)*Vx(3)+Vy(3)*Vy(3)+Vz(3)*Vz(3),为使在使用零阶解法时,邻接三角形间彩色值间的差最小,对三个顶点的彩色值求平均值(该平均与三角形中央实现一阶等式的彩色值相匹配)C=0.33*(C(1)+C(2)+C(3))一阶解法导出如上所示的色值。对一阶解法,使用以上所述的相同反射方程(相对于零阶解法)。一阶解法不平均顶点色值但内插色值。本说明书在此描述对顶点颜色使用扫描线技术(见本发明的背景部分)的一种过程。根据边逻辑,首先沿每个三角形的边内插色值,然后通过三角形每一扫描线。
对二阶方程,判定三角形顶点的彩色值。这些彩色值表示每个三角形边的两个边界条件,即每条三角形边两端点的彩色值。因为二阶方程定义需要三个边界条件,对背景反射加漫反射的解决方案将法向矢量和光矢量内插在三角形顶点间三角形边上的某中间位置。以下实例假设该位置在边的中央,并且该实例假设了最坏条件,即法向矢量和光矢量在该三角形上是变化的。所以,第三边界条件,即在本实例中,确定顶占间距离的一半(见图10a)如下
Nx(4):=0.5*(Nx(1)+Nx(2)) Nx(5):=0.5*(Nx(2)+Nx(3))Nx(6):=0.5*(Nx(3)+Nx(1))Ny(4):=0.5*(Ny(1)+Ny(2)) Ny(5):=0.5*(Ny(2)+Ny(3))Ny(6):=0.5*(Ny(3)+Ny(1))Nz(4):=0.5*(Nz(1)+Nz(2)) Nz(5):=0.5*Nz(2)+Nz(3)) Nz(6):=0.5*(Nz(3)+Nz(1))而Nx(4),Ny(4),Nz(4)是第一和第二顶点间所选点的法线坐标,Nx(5),Ny(5),Nz(5)是第二和第三顶点间所选点的法线坐标而Nx(6),Ny(6),Nz(6)为第三和第一顶点间所选点的法线坐标。进一步有Lx(4):=0.5*(Lx(1)+Lx(2)) Lx(5):=0.5*(Lx(2)+Lx(3)) Lx(6):=0.5*(Lx(3)+Lx(1))Ly(4):=0.5*(Ly(1)+Ly(2)) Ly(5):=0.5*(Ly(2)+Ly(3)) Ly(6):=0.5*(Ly(3)+Ly(1))Lz(4):=0.5*(Lz(1)+Lz(2)) Lz(5):=0.5*(Lz(2)+Lz(3)) Lz(6):=0.5*(Lz(3)+Lz(1))其中Lx(4),Ly(4)和Lz(4)为第一和第二顶点间所选点开始的光矢量坐标,Lx(5)、Ly(5)和Lz(5)是第二和第三顶点间所选点开始的光矢量坐标,而Lx(6)、Ly(6)和Lz(6)是第三和第一顶点间所选点开始的光矢量坐标。计算这些矢量大小来归一化这些矢量。最好是,为节省计算时间和费用,与该大小相除的计算推迟到以下漫反射加权的计算之后cos(α4):=Lx(4)*Nx(4)+Ly(4)*Ny(4)+Lz(4)*Nz(4)/(L(4)*N(4))cos(α5):=Lx(5)*Nx(5)+Ly(5)*Ny(5)+Lz(5)*Nz(5)/(L(5)*N(5))cos(α6):=Lx(6)*Nx(6)+Ly(6)*Ny(6)+Lz(6)*Nz(6)/(L(6)*N(6))其中
L(4):=sqrt(Lx(4)*Lx(4)+Ly(4)*Ly(4)+Lz(4)*Lz(4))L(5):=sqrt(Lx(5)*Lx(5)+Ly(5)*Ly(5)+Lz(5)*Lz(5))L(6):=sqrt(Lx(6)*Lx(6)+Ly(6)*Ly(6)+Lz(6)*Lz(6))以及N(4):=sqrt(Nx(4)*Nx(4)+Ny(4)*Ny(4)+Nz(4)*Nz(4))N(5):=sqrt(Nx(5)*Nx(5)+Ny(5)*Ny(5)+Nz(5)*Nz(5))N(6):=sqrt(Nx(6)*Nx(6)+Ny(6)*Ny(6)+Nz(6)*Nz(6))中央位置的组合反射可用作第三边界条件加以确定C(4)=(Ka+Kd*cos(α4))*C(4)C(5)=(Ka+Kd*cos(α5))*C(5)C(6)=(Ka+Kd*cos(α6))*C(6)在本实例中,假设最坏情况是顶点彩色本身在三角形上变化。这样,沿多边形边的中间点的色彩为C(4)=0.5*(C(1)+C(2))C(5)=0.5*(C(2)+C(3))C(6)=0.5*(C(3)+C(1))如果组合反射包括镜面反射,则判定中央位置的眼点矢量。该实例再假设最坏情形,即,眼点矢量在三角形上变化Vx(4):=0.5*(Vx(1)+Vx(2))Vx(5):=0.5*(Vx(2)+Vx(3))Vx(6):=0.5*(Vx(3)+Vx(1))Vy(4):=0.5*(Vy(1)+Vy(2))Vy(5):=0.5*(Vy(2)+Vy(3))Vy(6):=0.5*(Vy(3)+Vy(1))Vz(4):=0.5*(Vz(1)+Vz(2))Vz(5):=0.5*(Vz(2)+Vz(3))Vz(6):=0.5*(Vz(3)+Vz(1))然后计算归一化矢量的幅度。最便宜的做法是将除以该幅度的计算推迟到镜面加权的计算之后。
cos(δ4)=2*cos(α4)*cos(β4)-cos(χ4)cos(δ5)=2*cos(α5)*cos(β5)-cos(ψ5)cos(δ6)=2*cos(α6)*cos(β6)-cos(ψ6)其中cos(β4):=(Nx(4)*Vx(4)+Ny(4)*Vy(4)+Nz(4)*Vz(4))/(N(4)*V(4))cos(β5):=(Nx(5)*Vx(5)+Ny(5)*Vy(5)+Nz(5)*Vz(5))/(N(5)*V(5))cos(β6):=(Nx(6)*Vx(6)+Ny(6)*Vy(6)+Nz(6)*Vz(6))/(N(6)*V(6))并且cos(χ4):=(Vx(4)*Lx(4)+Vy(4)*Ly(4)+Vz(4)*Lz(4))/(V(4)*L(4))cos(χ5):=(Vx(5)*Lx(5)+Vy(5)*Ly(5)+Vz(5)*Lz(5))/(V(5)*L(5))cos(χ6):=(Vx(6)*Lx(6)+Vy(6)*Ly(6)+Vz(6)*Lz(6))/(V(6)*L(6))其中V(4):=sqrt(Vx(4)*Vx(4)+Vy(4)*Vy(4)+V2(4)*Vz(4))V(5):=sqrt(Vx(5)*Vx(5)+Vy(5)*Vy(5)+Vz(5)*Vz(5))V(6):=sqrt(Vx(6)*Vx(6)+Vy(6)*Vy(6)+Vz(6)*Vz(6))镜面反射的增加,将组合反射变化为C(4):=(Ka+Kd*cos(α4)*C(4)+Ks*(cos(δ4)p)*C1C(5):=(Ka+Kd*cos(α5)*C(5)+Ks*(cos(δ5)p)*C1C(6):=(Ka+Kd*cos(α6)*C(6)+Ks*(cos(δ6)p)*C1附加的彩色值C(4)、C(5)、C(6)提供第三边界条件。
如上所述,二阶求解需要三个边界条件(见图10b),以导出二阶方程的系数(m0、m1、m2):
C(u(i))=m0(i)+m1(i)*u(i)+m2(i)*u(i)2其中0<=u(i)<=1要求解这些方程,判定三个边界条件的并列方程。该边界条件变为C(1)=m0(1)C(4)=m0(1)+0.5m1(1)+0.25m2(1)C(2)=m0(1)+m1(1)+m2(1)C(2)=m0(2)C(3)=m0(3)C(5)=m0(2)+0.5m1(1)+0.25m2(2)C(3)=m0(3)C(6)=m0(3)+0.5m1(3)+0.25m2(3)C(1)=m0(3)+m1(3)+m2(3)参数变量为υ(1):=u(1)+du(1) υ(2):=u(2)+du(2) υ(3):=u(3)+du(3)其中du(1):=1/(Py(2)-Py(1))du(2):=1/(Py(3)-Py(2))du(3):=1/(Py(1)-Py(3))一旦系数被确定,则该二阶方程简化为正向差分方程用以计算各边的彩色。
为计算三角形内的彩色,采用二阶求解,如上所示沿边内插各值以在光栅跨度每条边上形成矢量值。将该矢量值内插到跨度的中心。参考图10C,判定位于跨度中心的点的矢量Nx(xc):=0.5(Nx(xl)+Nx(xr)) Lx(xc):=0.5(Lx(xl)+Lx(xr))Vx(xc):=0.5(Vx(xl)+Vx(xt))Ny(xc):=0.5(Ny(xl)+Ny(xr)) Ly(xc):=0.5(Ly(xl)+Ly(xr))Vy(xc):=0.5(Vy(xl)+Vy(xr))Nz(xc):=0.5(Nz(xl)Nz(xr)) Lz(xc):=0.5(Lz(xl)+Lz(xr))Vz(xc):=0.5(Vz(xl)+Vz(xr))从中计算反射方程的余弦项Cos(δ×c):=2*Cos(α×c)*Cos(β×c)-Cos(χ×c)其中cos(α×c):=(Lx(xc)*Nx(xc)+Ly(xc)*Ny(xc)+Lz(xc)*Nz(xc)))/(L(xc)*N(xc))cos(β×c):=(Nx(xc)*Vx(xc)+Ny(xc)*Vy(xc)+Nz(xc)*Vz(xc))/(N(xc)*V(xc))cos(χ×c):=(Vx(xc)*Lx(xc)+Vy(xc)*Ly(xc)+Vz(xc)*Lz(xc))/(V(xc)*L(xc))以及cos(α×c):=(Lx(xc)*Nx(xc)+Ly(xc)*Ny(xc)+Lz(xc)*Nz(xc)))/(L(xc)*N(xc))cos(β×c):=(Nx(xc)*Vx(xc)+Ny(xc)*Vy(xc)+Nz(xc)*Vz(xc))/(N(xc)*V(xc))cos(χ×c):=(Vx(xc)*Lx(xc)+Vy(xc)*Ly(xc)+Vz(xc)*Lz(xc))/(V(xc)*L(xc))因此跨度中心的彩色为C(xc):=(Ka+Kd*cos(α×c))*C(xc)+Ks*cos(δ×c)p*Cl它提供了第三色值而完成边界条件(见图10C)C(xl)=m0(4)C(xc)=m0(4)+0.5m1(4)+0.25m2(4)C(xr)=m0(4)+m1(4)+m2(4)然后使用正向差分方程内插该三角形以实现完全反射方程。
该技术也可扩展到三阶方程。计算每条边的四种彩色值以说明三阶解所要求的四个边界条件。除了两个顶点颜色,判定1/3和2/3边长的彩色值。这样,边逻辑的边界条件(见图10d)变为C(1)=m0(1)C(4)=m0(1)+0.33m1(1)+0.11m2(1)+0.04m3(1)
C(5)=m0(1)+0.67m1(1)+0.44m2(1)+0.30m3(1)C(2)=m0(1)+m1(1)+m2(1)+m3(1)C(2)=m0(2)C(6)=m0(2)+0.33m1(2)+0.22m2(2)+0.04m3(2)C(7)=m0(2)+0.67m1(2)+0.44m2(2)+0.30m3(2)C(3)=m0(2)+m1(2)+m2(2)+m3(2)C(3)=m0(3)C(8)=m0(3)+0.33m1(3)+0.33m2(3)+0.04m3(3)C(9)=m0(3)+0.67m1(3)+0.44m2(3)+0.30m3(3)C(1)=m0(3)+m1(3)+m2(3)+m3(3)然后判定光栅扫描的四个边界条件。该扫描逻辑的边界条件(见图10e)变为C(xl)=m0(4)C(xm)=m0(4)+0.33m1(4)+0.11m2(4)+0.04m3(4)C(xn)=m0(4)+0.67m1(4)+0.44m2(4)+0.30m3(4)C(xr)=m0(4)+m1(4)+m2(4)+m3(4)扫描线技术是一种对三角形内插顶点属性(颜色)的方法。使用扫描线技术的优点在于,由于多边形总可简化为边间的简单的段,并可对每个段计算顶点属性,所以该技术可扩展到任何形状的多边形。然而,计算出的差分方程包括对每一段的除法计算的时间消耗过程。另外,在三角形元形元素的例子里,使用平面方程。三个边界条件是三个三角形顶点的顶点状态并可对整个元素计算差分方程。这样,将差分方程加到整个三角形。虽然平面方程容易加到三角形多边形,由于各顶点可能不共面,该平面方程可能不能用于多于三个顶点的多边形。
为使用平面方程确定浓淡,先计算三顶点的颜色。然后计算边界条件。要计算边界条件,判定三角形中心的矢量(法向,光和眼点矢量)(见图11a)。使用如上所述的反射方程将这些矢量内插到彩色值中。然后将四个彩色值代入双线性表达式C(u,v)=|1V| |m00 m01| |1||m10 m11| |u′|以及0<=u<=1,0<=v<=1而(u,v)参数变量为u:=u+du其中du=1/(Py(2)-Py(1))v:=v+du其中dv=1/(Px(2)-Px(3))一阶方程的边界条件为c(1)=m00+m01*u+m10*v+m11*u*v其中u=0,v=0c(2)=m00+m01*u+m10*v+m11*u*v其中u=1,v=1c(3)=m00+m01*u+m10*v+m11*u*v其中u=1,v=0c(4)=m00+m01*u+m10*v+m11*u*v其中u=2/3,v=1/2这样,c(1)=m00c(2)=m00+m01+m10+m11c(3)=m00+m01c(4)=m00+0.67*m01+0.5*m10+0.33*m11对(c00,c01,c10,c11)系数存在一组代数解。色彩的双线性表达式可变换为正向差分方程,该方程用于对三角形内插。扩展的平面技术可以是二阶方程。该形式为C(u,v)=|1VV| |m00 m01 m02| |1||m10 m11 m12| |u||m20 m21 m22| |u|其中0<=U<1,0<=V<=1由于二阶方程需要9个边界条件,必须决定9个位置(如图11C所示)的矢量。使用反射方程(前已说明)计算这9个位置的彩色值。然后求解(m00,m01,m22)的边界方程。所以边界条件为(参考图11d)。C(1)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=0,v=0C(2)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=1,v=1c(3)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中U=1,V=0C(4)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=1/2,v=1/2C(5)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=1,v=1/2C(6)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=1/2,v=0C(7)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=2/3,v=2/3C(8)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=2/3,v=1/3C(9)=m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v+m20*v2+m21*u*v2+m22*u2*v2其中u=1/3,v=1/3这样C(1)=1.00*m00C(2)=1.00*m00+1.00*m01+1.00*m02+1.00*m10+1.00*m11+1.00*m12+1.00*m20+1.00*m21+1.00*m22C(3)=1.00*m00+1.00*m01+1.00*m02C(4)=1.00*m00+0.50*m01+0.25*m02+0.50*m10+0.25*m11+0.12*m12+0.25*m20+0.12*m21+0.06*m22C(5)=1.00*m00+1.00*m01+1.00*m02+0.50*m10+0.50*m11+0.50*m12+0.25*m20+0.12*m21+0.25*m22C(6)=1.00*m00+0.50*m01+0.25*m02+1.00*m10+0.50*m11+0.25*m12+1.00*m20+0.50*m21+0.25*m22C(7)=1.00*m00+0.67*m01+0.44*m02+1.67*m10+0.44*m11+0.30*m12+0.40*m20+0.30*m21+0.19*m22C(8)=1.00*m00+0.67*m01+0.44*m02+0.33*m10+0.22*m11+0.15*m12+0.11*m20+0.07*m21+0.05*m22C(9)=1.00*m00+0.33*m01+0.11*m02+0.33*m10+0.11*m11+0.04*m12+0.11*m20+0.04*m21+0.01*m22然后将该颜色的双二次表达式变换为用于对三角形内插的正向差分方程。
对该二阶方程有三个例外。第一种情况涉及确保加权保持为正的函数cos(α(i)):=max(cos(α(i)),0)cos(δ(i)):=max(cos(δ(i)),0)如果发现漫反射加权为负,则判定三角形边上何处该值变为零。在该点划分三角形,将该三角形镶嵌成两个、三个或四个三角形。三角形个数取决于找到有一条、两条或三条边需有箝位值。
当表面曲度尖陡时出现第二种情形。估值cos(Φ)反映该情形。由于三阶方程可能低估三角形上法向矢量的变化,将该三角形镶嵌成多个三角形。
当光源接近该三角形时出现第三种情形。估值cos(γ)反映该情形。由于三阶方程可能低估三角形光矢量交化,将该三角形镶嵌成多个三角形。
以下讨论用于说明本发明自适应浓淡系统。该实例只包括漫散光照情形而不考虑镜面光照。因为镜面光照不予考虑,所以不必计算眼点矢量。该图象包含产生四个三角形的6个顶点构成的三角形网络。该实例假设每个顶点的彩色值c(i)是不变的,每个顶点的光矢量L(i)是不变的,但每个顶点的法矢量N(i)是变化的。法矢量数值为N(v0)=(0.000000,0.000000,.1.000000)N(v1)=(0.017450,-0.017452,0.999695)N(v2)=(0.035188,-0.034590,0.998782)N(v3)=(0.053199,-0.051396,0.997260)
N(v4)=(0.071466,-0.067857,0.995132)N(v5)=(0.089973,-0.083957,0.992399)该实例假设光矢量为L(vi)=(0,0,1)第一步是根据以下方程计算漫反射加权cos(α(v))=N(v)·L(v)该实例的数值为cos(α(v0))=1.000000cos(α(v1))=0.999695cos(α(v2))=0.998782cos(α(v3))=0.997260cos(α(v4))=0.995132cos(α(v5))=0.992399然后确定强度变化。漫反射加权之间的最大并值是预商量最大变化的估值dcos(α(t0))=max(abs(cos(α(v0))·cos(α(v1))),abs(cos(α(v1))·∞s(α(v2)))·abs(cos(α(v2))·cos(α(v0))))dcos(α(t1))=max(abs(cos(α(v0))·cos(α(v3))),abs(cos(α(v3))·cos(α(v1)))·abs(cos(α(v1))·cos(α(v0))))dcos(α(t2))=max(abs(oos(α(v1))·cos(α(v4))),abs(cos(α(v4))·cos(α(v2)))·abs(cos(α(v2))·cos(α(v1))))dcos(α(t3))=max(abs(cos(α(v0))·cos(α(v2))),abs(cos(α(v2))·cos(α(v5)))·abs(cos(α(v5))·cos(α(v0))))最大变化的数值为cosdiff(α(t0))=0.001218cosdiff(α(t1)=0.002740cosdiff(α(t2))=0.004563cosdiff(α(t3))=0.07601然后将最大变化与第一(ε1)和第二(ε2)阈值相比较。在本实例中,阈值为ε1=0.0025其中e1从1阶分离出零阶ε2=0.0050其中e2从2阶分离出1阶相对于第一三角形0<max(cosdiff(α(t0)))<e1所以使用零阶方程。为了对三个顶点漫反射加权中任何差异进行补偿,对值求平均值cos(α(t0))=0.333*(cos(α(v0))+cos(α(v1))+cos(α(v2)))然后确定该不变的颜色C(10)=(Ka+Kd*cos(α(10)))*C(t0))相对于第二和第三三角形
ε1<max(dcos(α(t1)))<ε2ε1<max(dcos(α(t2)))<ε2使用一阶方程。当用扫描线算法时,该求解需要先将三角形边的彩色值进行内插。然后将三角形左边的彩色值对右边的进行内插。例如对第二三角形,C(v0)=(Ka+Kd*cos(α(v0)))*C(t1))C(v3)=(Ka+Kd*cos(α(v3)))*C(t1))C(v1)=(Ka+Kd*cos(α(v1)))*C(t1))然后先使用扫描线逻辑内插三角形各边上的彩色值,然后对三角形内部内插。
第四三角形的最大变化为dcos(α(t3))>ε2这样,可对该三角形选择二阶方程(冯氏浓淡)。尽管本技术利用这样一个事实,即各顶点漫反射加权是现成的,所以必须传播三角形各边上法向分量。对每一步中的各分量归一化。然后传播三角形内部的法向分量,再对每个象素的法向分量归一化。然后判定每个象素的漫反射加权cos(α(x,y)=Lx(x,y)*Nx(x,y)+Ly(x,y)*Ny(x,y)+Lz(x,y)*Nz(x,y)c(x,y)=(Ka+Kd*cos(α(x,y)))*C(t3)其中假设L(x,y)为常数。
尽管已结合最佳实施例对本发明作了说明,明显的是,本领域技术人员根据前面的说明很容易理解许多变形、改进、变化及使用。具体地说,本发明可包含本说明书以外的浓淡方程。可增加阈值来增加所执行测试的数量及可利用方程阶数。此外,可以只用零阶和1阶浓淡方程或一阶和二阶方程来构造该系统。
权利要求
1.在包含中央处理器、存储器、帧缓冲器、和与帧缓冲器相连用于显示所显示的图形图象的图形显示器图形显示系统中,所述图形显示器包含一象素阵列,所述图形图象由多个象素数据定义,所述象素数据存储于帧缓冲器中,每个象素数据包含显示器上象素位置和该象素的色彩,按照帧缓冲器中存储的象素数据在显示器上显示所述图形图象,一种产生浓淡图形图象的自适应过程,根据光源对所述图形图象形成浓淡,所产生的所述浓淡图象的质量由用户规定,所述浓淡过程包含以下步骤接收定义图形图象的图形图象象素数据,按照图形图象象素数据位置进行分组,所述的组表示多边形,每个所述多边形由其各顶点位置及每个顶点法矢量所定义,所述法矢量为该顶点在多边形表面的法矢量,选择用来确定每个多边形的反射的反射方程的阶数,所述选择步骤包含按照多边形顶点法向矢量判定多边形表面曲率变化量和顶点间曲率变化量,将顶点之间曲率变化量与对应于用一阶方程产生的质量图象的最大曲率变化量的曲率阈值进行比较,如果顶点之间曲率变化量大于或等于曲率阈值,则选择二阶反射方程,判定每个顶点光矢量和顶点间光矢量变化,所述光矢量是各顶点法向矢量和光源相对于顶点位置的函数,将顶点间光矢量变化与对应于用一阶方程产生质量图象最大光矢量的变化量的光矢量阈值相比较,如果顶点间光矢量变化量大于或等于光矢量阈值,则选择二阶反射方程;判定各顶点的光矢量和顶点间光矢量变化,所述光矢量为各顶点法矢量和光源相对于该顶点位置的函数,将顶点间光矢量变化与对应于用一阶方程产生图象质量的最大矢量变化的光矢量阈值相比较,如果顶点间光矢量量变化量大于或等于光矢量阈值则选择二阶反射方程,判定顶点间曲率变化和顶点间光矢量变化中最大变化,将该最大变化与第一和第二阈值进行比较,所述一阶阈值为用零阶反射方程产生质量浓淡图象的最大变化,所述第二阈值为用一阶反射方程产生质量浓淡图象的最大变化,如果最大变化小于或等于第一阈值则选择零阶反射方程计算多边形反射,而当最大变化小于第二阈值时使用一阶反射方程计算多边形反射,判定多边形的反射,所述装置接收由选择装置判定的阶数的反射方程并使用该反射方程判定多边形反射,并产生表示浓淡多边形图象的修改后的象素数据,将表示浓淡多边形的象素数据输出到帧缓冲器,以及读出帧缓冲器中存储的修改的象素数据并以修改的象素数据所规定的色彩激活显示器上对应象素以在显示器上产生浓淡多边形图象,从而按照曲率和光源变化选择图形图象每个多边形的反射方程的阶数并使昂贵的费时的二阶反射方程用得最少,以及当测量指出顶点间测量的变化表明多边形反射大到足以有理由使用二阶方程时才使用二阶方程。
2.如权利要求1所述自适应浓淡过程,其特征在于,还包含以下步骤判定每个顶点眼点矢量和顶点间眼点矢量变化,所述眼点矢量为眼点位置相对于顶点位置的函数,将顶点间眼点矢量变化与对应于用一阶方程质量图象的最大眼点矢量变化的眼点矢量阈值加以比较,如果顶点间眼点矢量变化量大于或等于眼点矢量阈值,则选择二阶反射方程,以及所述最大变化是在顶点间曲率变化顶点间光矢量变化和顶点间眼点矢量变化中判定出的最大变化。
3.如权利要求1所述自适应浓淡过程,其特征在于多边形包含带第一、第二和第三顶点的三角形。
4.如权利要求3所述自适应浓淡过程,其特征在于所述多边形表面曲率变化和顶点间曲率变化量判定步骤包含按照下式判定顶点间最大曲率变化(cos(Φ)):cos(Φ)=min(cos(Φ(1)),cos(Φ(2)),cos(Φ(3)))其中cos(Φ(1))=Nx(1)*Nx(2)+Ny(1)*Ny(2)+Nz(1)*Nz(2)cos(Φ(2))=Nx(2)*Nx(3)+Ny(2)*Ny(3)+Nz(2)*Nz(3)cos(Φ(3))=Nx(3)*Nx(1)+Ny(3)*Ny(1)+Nz(3)*Nz(1)其中Nx(1)、Ny(1)、Nz(1)为第一顶点的顶点法矢量的x、y和z分量,Nx(2)、Ny(2)、Nz(2)为第二顶点的顶点法矢量的x、y和z分量,Nx(3)、Ny(3)、Nz(3)为第三顶点的顶点法矢量的x、y和z分量,cos(Φ(1))指出第一顶点和第二顶点间的曲率变化,cos(Φ(2))指出第二顶点和第三顶点间的曲率变化,而cos(Φ(3))指出第三顶点和第一顶点间的曲率变化,将最大曲率变化与曲率阈值相比较。
5.如权利要求3所述自适应浓淡过程,其特征在于所述各顶点光矢量和顶点间光矢量变化的判定步骤包含按照下式判定最大光矢量变化(cos(ψ))的步骤cos(ψ)=min(cos(ψ(1)),cos(ψ(2)),cos(ψ(3)))其中cos(ψ(1))=Lx(1)*Lx(2)+Ly(1)*Ly(2)+Lz(1)*Lz(2)cos(ψ(2))=Lx(2)*Lx(3)+Ly(2)*Ly(3)+Lz(2)*Lz(3)cos(ψ(3))=Lx(3)*Lx(1)+Ly(3)*Ly(1)+Lz(3)*Lz(1)其中Lx(1)、Ly(1)、Lz(1)为第一顶点的光矢量的x、y和z分量,Lx(2)、Ly(2)、Lz(2)为第二顶点的光矢量的x、y和z分量,Lx(3)、Ly(3)、Lz(3)为第三顶点的光矢量的x、y和z分量,cos(ψ(1))指出第一顶点和第二顶点间的光矢量变化,cos(ψ(2))指出第二顶点和第三顶点间的光矢量变化,而cos(ψ(3))指出第三顶点和第一顶点间的光矢量变化,从而将最大光矢量变化与光矢量阈值相比较。
6.如权利要求2所述自适应浓淡过程,其特征在于多边形包含带有第一、第二和第三顶点的三角形,所述判定各顶点眼点矢量和顶点间眼点矢量变化的步骤按照下式判定最大眼点矢量变化(cos(η)):cos(η)=min(cos(η(1)),cos(η(2)),cos(η(3)))其中cos(η(1))=Vx(1)*Vx(2)+Vy(1)*Vy(2)+Vz(1)*Vz(2)cos(η(2))=Vx(2)*Vx(3)+Vy(2)*Vy(3)+Vz(2)*Vz(3)cos(η(3))=Vx(3)*Vx(1)+Vy(3)*Vy(1)+Vz(3)*Vz(1)其中Vx(1)、Vy(1)、Vz(1)为第一顶点的眼点矢量的x、y和z分量,Vx(2)、Vy(2)、Vz(2)为第二顶点的眼点矢量的x、y和z分量,Vx(3)、Vy(3)、Vz(3)为第三顶点的眼点矢量的x、y和z分量,cos(η(1))指出第一顶点和第二顶点间的眼点矢量变化,cos(η(2))指出第二顶点和第三顶点间的眼点矢量变化,而cos(η(3))指出第三顶点和第一顶点间的眼点矢量变化,以及,从而将最大眼点矢量变化与眼点矢量阈值相比较。
7.如权利要求2所述自适应浓淡过程,其特征在于,多边形包含带有第一、第二和第三顶点的三角形,判定最大变化的步骤包括根据下式确定最大变化的步骤cos(Φψη)=min(a(Φ)*cos(Φ),a(ψ)*cos(ψ),a(η)*cos(η))其中cos(φ)为最大曲率变化,a(φ)为曲率加权,cos(ψ)为最大光矢量变化,a(ψ)为光矢量加权,而cos(η)为最大眼点矢量变化而a(η)为眼点矢量加权。
8.如权利要求1所述自适应浓淡过程,其特征在于,使用零阶、1阶和2阶的反射方程,所述零阶方程包含点积L·N,其中L为平均光矢量,而N为到该表面的平均法向矢量,所述一阶方程包含C=(Ka+Kd*cos(α))*C其中,C为象素色彩,Ka为背景加权,Kd为漫反射加权而cos(α)等于点和L·N。所述二阶方程包含C=(Ka+Kd*cos(α(x,y)))*C其中C为象素色彩,Ka为背景加权,Kd为漫反射加权,cos(α(x,y))等于L(x,y)·N(x,y),L(x,y)表示归一化光矢量,而N(x,y)表示该表面的归一化法矢量。
9.在包含中央处理器、存储器、帧缓冲器、和与帧缓冲器相连用于显示所显示的图形图象的图形显示器图形显示系统中,所述图形显示器包含一象素阵列,所述图形图象由多个象素数据定义,所述象素数据存储于帧缓冲器中,每个象素数据包含显示器上象素位置和该象素的色彩,按照帧缓冲器中存储的象素数据在显示器上显示所述图形图象,一种产生浓淡图形图象的自适应过程根据光源对所述图形图象形成浓淡,所产生的所述浓淡图象的质量由用户规定,所述浓淡过程包含以下步骤接收定义图形图象的图形图象象素数据,按照图形图象象素数据位置进行分组,所述的组表示多边形,每个所述多边形由其各顶点位置及每个顶点法矢量所定义,所述法矢量为该顶点在多边形表面的法矢量;选择用来确定每个多边形的反射的反射方程的阶数,其中最高阶的反射方程产生多边形的最高质量的反射,所述步骤包含判定每个顶点光矢量,判定每个顶点法矢量和每个顶点光矢量的点积以及各顶点的点积之间最大数值差,将各顶点的点积之间的最大差至少与第一阈值和第二阈值相比较,所述第一阈值指出至少需要使用第一预定阶的反射方程的多边形表面的反射变化,第二阈值指出至少需要使用高于第一预定阶的第二预定阶的反射方程的多边形表面的反射变化,如果各顶点的点积之间的最大差值小于第一阈值,选择低于第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第一阈值而小于第二阈值,则选择第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第二阈值,则选择第二预定阶的预定阶的反射方程,使用选择来判定多边形反射的反射方程判定多边形反射,并产生代表浓淡多边形图象的修改的象素数据,将表示浓淡多边形的象素数据输出到帧缓冲器,读出帧缓冲器中存储的修改的象素数据,并用该修改的象素数据所规定的颜色激活显示器上对应象素以在显示器上产生浓淡多边形图象,从而按曲率和光源变化选择图形图象每个多边形的反射方程的阶数并使昂贵的费时的较高阶反射方程用得最少,以及当测量指出顶点间测量的变化表明多边形反射大到足以有理由使用较高阶方程时才使用较高阶方程。
10.如权利要求9所述自适应浓淡过程,其特征在于至少使用4个阶的反射方程。
11.如权利要求9所述自适应浓淡过程,其特征在于,所用最高阶反射方程为二阶方程。
12.如权利要求9所述自适应浓淡过程,其特征在于,多边形包含带有第一、第二和第三顶点的三角形。
13.在包含中央处理器、存储器、帧缓冲器、和与帧缓冲器相连用于显示所显示的图形图象的图形显示器图形显示系统中,所述图形显示器包含一象素阵列,所述图形图象由多个象素数据定义,所述象素数据存储于帧缓冲器中,每个象素数据包含显示器上象素位置和该象素的色彩,按照帧缓冲器中存储的象素数据在显示器上显示所述图形图象,一种产生浓淡图形图象的自适应过程根据光源对所述图形图象形成浓淡,所产生的所述浓淡图象的质量由用户规定,所述浓淡过程包含以下步骤接收定义图形图象的图形图象象素数据,按照图形图象象素数据位置进行分组,所述的组表示多边形,每个所述多边形由其各顶点位置及每个顶点法矢量所定义,所述法矢量为该顶点在多边形表面的法矢量;选择用来确定每个多边形的反射的反射方程的阶数,所述步骤包含判定每个顶点眼点矢量,判定各顶点反射矢量,所述反射矢量是光反射离开多边形表面的矢量,判定每个顶点法向矢量和每个眼点矢量的点积以及各顶点的点积之间最大数值差,用于将各顶点的点积之间的最大差至少与第一阈值和第二阈值相比较,所述第一阈值指出至少需要使用第一预定阶的反射方程的多边形表面的反射变化,第二阈值指出至少需要使用高于第一预定阶的第二预定阶的反射方程的多边形表面的反射变化,如果各顶点的点积之间的最大差值小于第一阈值,选择低于第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第一阈值而小于第二阈值,则选择第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第二阈值,则选择第二预定阶的预定阶的反射方程,判定多边形反射,所述装置接收中选择装置确定阶的反射方程并使用反射方程确定多边形反射,产生表示浓度多边形图象的修改的象素数据,将表示浓淡多边形的象素数据输出到帧缓冲器,读出帧缓冲器中存储的修改的象素数据,并用该修改的象素数据所规定的颜色激活显示器上对应象素以在显示器上产生浓淡多边形图象,从而按曲率和光源变化选择图形图象每个多边形的反射方程的阶数并使昂贵的费时的二阶反射方程用得最少,以及当测量指出顶点间测量的变化表明多边形反射大到足以有理由使用二阶方程时才使用较高阶方程。
14.如权利要求13所述自适应浓淡过程,其特征在于至少使用4个阶的反射方程。
15.如权利要求13所述自适应浓淡过程,其特征在于,所用最高阶反射方程为二阶方程。
16.如权利要求13所述自适应浓淡过程,其特征在于,多边形包含带有第一、第二和第三顶点的三角形。
17.在包含中央处理器、存储器、帧缓冲器、和与帧缓冲器相连用于显示所显示的图形图象的图形显示器图形显示系统中,所述图形显示器包含一象素阵列,所述图形图象由多个象素数据定义,所述象素数据存储于帧缓冲器中,每个象素数据包含显示器上象素位置和该象素的色彩,按照帧缓冲器中存储的象素数据在显示器上显示所述图形图象,一种产生浓淡图形图象的自适应过程根据光源对所述图形图象形成浓淡,所产生的所述浓淡图象的质量由用户规定,所述浓淡过程包含以下步骤接收定义图形图象的图形图象象素数据,按照图形图象象素数据位置进行分组,所述的组表示多边形,每个所述多边形由其各顶点位置及每个顶点法矢量所定义,所述法矢量为该顶点在多边形表面的法矢量,选择用来确定每个多边形的反射的反射方程的阶数,其中最高阶的反射方程产生多边形的最高质量的反射,所述步骤包含判定每个顶点光矢量,所述光矢量是每个顶点法矢量和光源位置相对于顶点的函数,判定每个顶点法矢量和每个顶点光矢量的点积以及各顶点点积之间最大数值差,将各顶点的点积之间的最大差至少与第一阈值和第二阈值相比较,所述第一阈值指出至少需要使用第一预定阶的反射方程的多边形表面的反射变化,第二阈值指出至少需要使用高于第一预定阶的第二预定阶的反射方程的多边形表面的反射变化,如果各顶点的点积之间的最大差值小于第一阈值,选择低于第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第一阈值而小于第二阈值,则选择第一预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第二阈值,则按照多边形顶点法向矢量决定多边形表面曲率变化量和顶点间曲率变化,将顶点之间曲率变化量与指示大曲率变化量的曲率阈值进行比较,如果顶点之间曲率变化量大于或等于曲率阈值,选择最高阶反射方程,判定各顶点中光矢量变化,将顶点间光矢量变化与指示光矢量间大的变化量的光矢量阈值相比较,如果顶点间光矢量变化量大于或等于光矢量阈值,则选择最高阶数的反射方程,判定顶点间曲率变化和顶点间光矢量变化中最大变化,将该最大变化与多个用于判定所用反射方程阶数的阈值相比较,每个阈值绘出可用预定阶数的反射方程来产生质量图象的最大变化的轮廓,以及,如果最大变化小于或等于描述可将第一预定阶反射方程用于产生质量图象的最大变化的阈值而大于描述用低于第一预定阶的反射方程产生质量图象的最大变化的阈值时选择预定阶的反射方程,使用选择来判定多边形反射的反射方程判定多边形反射,并产生代表浓淡多边形图象的修改的象素数据来判定多边形反射,将表示浓淡多边形的象素数据输出到帧缓冲器,读出帧缓冲器中存储的修改的象素数据,并用该修改的象素数据所规定的颜色激活显示器上对应象素以在显示器上产生浓淡多边形图象,从而按曲率和光源变化选择图形图象每个多边形的反射方程的阶数并使昂贵的费时的较高阶反射方程用得最少,以及当测量指出顶点间测量的变化表明多边形反射大到足以有理由使用较高阶方程时才使用较高阶方程。
18.如权利要求17所述自适应浓淡过程,其特征在于,所用最高阶反射方程为二阶方程。
19.如权利要求17所述自适应浓淡过程,其特征在于,如果各顶点点积间最大差大于或等于二阶阈值,所述过程还包含以下步骤判定每个顶点眼点矢量和顶点间眼点矢量变化,所述眼点矢量为眼点位置相对于顶点位置的函数,将顶点间眼点矢量变化与指示眼点矢量之间大的变化量的眼点矢量阈值加以比较,如果顶点间眼点矢量变化量大于或等于眼点矢量阈值,则选择最高阶反射方程,以及所述最大变化判定步骤判定顶点间曲率变化顶点间光矢量变化和顶点间眼点矢量变化中的最大变化。
20.在包含中央处理器、存储器、帧缓冲器、和与帧缓冲器相连用于显示所显示的图形图象的图形显示器图形显示系统中,所述图形显示器包含一象素阵列,所述图形图象由多个象素数据定义,所述象素数据存储于帧缓冲器中,每个象素数据包含显示器上象素位置和该象素的色彩,按照帧缓冲器中存储的象素数据在显示器上显示所述图形图象,一种产生浓淡图形图象的自适应过程根据光源对所述图形图象形成浓淡,所产生的所述浓淡图象的质量由用户规定,所述浓淡过程包含以下步骤接收定义图形图象的图形图象象素数据,按照图形图象象素数据位置进行分组,所述的组表示多边形,每个所述多边形由其各顶点位置及每个顶点法矢量所定义,所述法矢量为该顶点在多边形表面的法矢量,选择用来确定每个多边形的反射的反射方程的阶数,其中最高阶的反射方程产生多边形的最高质量的反射,所述步骤包含判定各顶点眼点矢量,所述眼点矢量是眼点位置相对于顶点位置的函数,判定各顶点法向矢量和各顶点眼点矢量的点积与各顶点点积间差值,将各顶点的点积之间的最大差至少与第一阈值和第二阈值相比较,所述第一阈值指出至少需要使用第一预定阶的反射方程的多边形表面的反射变化,第二阈值指出至少需要使用高于第一预定阶的第二预定阶的反射方程的多边形表面的反射变化,如果各顶点的点积之间的最大差值小于第一阈值,选择低于第一预定阶的预定阶的反射方程,如果各顶点的点积之间的最大差值大于或等于第一阈值而小于第二阈值,则选择第一预定阶的预定阶的反射方程,如果各顶点点积之间的最大差大于或等于第二阈值,按照多边形顶点法向矢量判定多边形表面曲率变化量和顶点间曲率变化,将顶点之间曲率变化量与指示大曲变化量的曲率阈值进行比较,如果顶点之间曲率变化量大于或等于曲率阈值,则选择最高阶反射方程,判定顶点中光矢量变化,将该顶点间光矢量变化与指示光矢量间大的变化量的阈值相比较,如果顶点间光矢量变化量大于或等于光矢量阈值,则选择最高阶数的反射方程,判定顶点间眼点矢量,将顶点间眼点矢量变化与指示眼点矢量间大的变化量的眼点矢量阈值进行比较,如果顶点间眼点矢量变化量大于或等于眼点矢量阈值,则选择最高阶反射方程,在顶点间曲率变化,顶点间光矢量变化和各顶点间眼点矢量变化中的最大变化,以及将该最大变化与多个用于判定所用反射方程阶数的阈值相比较,每个阈值绘出用预定阶反射方程产生质量图象中的最大变化,如果最大变化小于或等于描述用第一预定阶反射方程产生质量图象最大变化的阈值而大于描述用低于第一预定阶的预定阶的反射方程产生质量图象最大变化的阈值时,则选择预定阶的反射方程,使用选择来判定多边形反射的反射方程来判定多边形反射并产生表示浓淡多边形图象的修改后象素数据,将表示浓淡多边形的象素数据输出到帧缓冲器,以及读出在帧缓冲器中存储的修改的象素数据并以修改的象素数据所规定的色彩激活显示器上对应象素以在显示器上产生浓淡多边形图象,从而该设备按曲率和光源变化选择图形图象每个多边形的反射方程的阶数并使昂贵的费时的较高阶反射方程用得最少,以及当测量指出顶点间测量的变化表明多边形反射大到足以有理由使用较高阶方程时才使用较高阶方程。
全文摘要
本发明的方法和设备使用自适应浓淡方法来实时产生浓淡图象。首先对多边形各顶点计算色彩和强度。然后执行系列测试判定用于对顶点间多边形内插色彩和强度的某阶方程。使用该技术,略有或没有曲率的多边形及无穷远光源(最简单浓淡形式)可使用极快的低阶方程对多边形内插。而对大曲率和(或)位置光源,如必要,则使用需要增加计算时间产生理想浓淡效果的较高阶方程。
文档编号G06T15/50GK1233030SQ9910257
公开日1999年10月27日 申请日期1999年2月26日 优先权日1990年7月26日
发明者基图尔特·威尔斯, 詹姆斯·范卢, 穆昆·巴克塔, 杰克R·麦基翁 申请人:太阳微系统有限公司