其中K是与物体有关的镜面反射系数,a为视线方向V与反射方向R的夹角,n为反射指数,反映了物体表 面的光泽程度,一般为1~2000,数目越大物体表面越光滑。镜面反射光将会在反射方向附近形成很亮的光 斑,称为高光现象。 同样的,将V和R都格式化为单位向量,镜面反射光强可表示为: 1,=1,, K,(R'n) 其中,R可由R=M2cs8-L=2M(M.L)-L 计算。对多个光源的情形,镜面反射光强可表示为 k∑l(n) 镜面反射光产生的高光区域只反映光源的颜色,如在红光的照射下,一个物体的高光域是红光,镜面反射 系数K是一个与物体的颜色无关的参数,正如我们前面已经提到的,在简单光照明模型中,我们只能通过设 置物体的漫反射系数来控制物体的颜色 3.环境光 环境光是指光源间接对物体的影响,是在物体和环境之间多次反射,最终达到平衡时的一种光。我们近似 地认为同一环境下的环境光,其光强分布是均匀的,它在任何一个方向上的分布都相同。例如,透过厚厚云 的阳光就可以称为环境光。在简单光照明模型中,我们用一个常数来模拟环境光,用式子表示为: L.=I. K a。其中:L为环境光的光强,K为物体对环境光的反射系数。 4. Phong光照明模型 综合上面介绍的光反射作用的各个部分, Phong光照明模型有这样的一个表述:由物体表面上一点P反射 到视点的光强I为环境光的反射光强I、理想漫反射光强I和镜面反射光Is的总和,即 1=1x2+l,E2(LM+1,E(R3 NITH R 图424 Phong模型中的几何量示意 5. Phong光照明模型的实现 在用 Phong模型进行真实感图形计算时,对物体表面上的每个点P,均需计算光线的反射方向R,再由V 计算(RV)。为减少计算量,我们可以作如下假设:a)光源在无穷远处。即光线方向L为常数:b)视点在无 穷远处,即视线方向V为常数:c)用(F,M)近似 。这里H为L和V的平分向量 在 这种简化下,由于对所有的点总共只需计算一次H的值,节省了计算时间。结合RGB颜色模型, Phong光照 明模型最终有如下的形式 1, =laKa +InKa(L N)+IxKs(H: N lanka +lngk dg(L, N)+ INkS(H 48=1o,Kab+Inoka(z N)+l,oksa(h Phong光照明模型是真实感图形学中提出的第一个有影响的光照明模型,生成图象的真实度已经达到可以 接受的程度:但是在实际的应用中,由于它是一个经验模型,还具有以下的一些问题:用 Phong模型显示出 十算机图形学第四章第111页共36页
计算机图形学 第四章 第 111 页 共 36 页 其中 Ks是与物体有关的镜面反射系数, 为视线方向 V 与反射方向 R 的夹角,n 为反射指数,反映了物体表 面的光泽程度,一般为 1~2000,数目越大物体表面越光滑。镜面反射光将会在反射方向附近形成很亮的光 斑,称为高光现象。 同样的,将 V 和 R 都格式化为单位向量,镜面反射光强可表示为: , 其中,R 可由 计算。对多个光源的情形,镜面反射光强可表示为: 。 镜面反射光产生的高光区域只反映光源的颜色,如在红光的照射下,一个物体的高光域是红光,镜面反射 系数 Ks是一个与物体的颜色无关的参数,正如我们前面已经提到的,在简单光照明模型中,我们只能通过设 置物体的漫反射系数来控制物体的颜色。 3.环境光 环境光是指光源间接对物体的影响,是在物体和环境之间多次反射,最终达到平衡时的一种光。我们近似 地认为同一环境下的环境光,其光强分布是均匀的,它在任何一个方向上的分布都相同。例如,透过厚厚云 层的阳光就可以称为环境光。在简单光照明模型中,我们用一个常数来模拟环境光,用式子表示为: 。其中:Ia为环境光的光强,Ka为物体对环境光的反射系数。 4.Phong 光照明模型 综合上面介绍的光反射作用的各个部分,Phong 光照明模型有这样的一个表述:由物体表面上一点 P 反射 到视点的光强 I 为环境光的反射光强 Ie、理想漫反射光强 Id、和镜面反射光 Is的总和,即 。 5.Phong 光照明模型的实现 在用 Phong 模型进行真实感图形计算时,对物体表面上的每个点 P,均需计算光线的反射方向 R,再由 V 计算 。为减少计算量,我们可以作如下假设:a)光源在无穷远处。即光线方向 L 为常数;b)视点在无 穷远处,即视线方向 V 为常数;c)用 近似 。这里 H 为 L 和 V 的平分向量, 。在 这种简化下,由于对所有的点总共只需计算一次 H 的值,节省了计算时间。结合 RGB 颜色模型,Phong 光照 明模型最终有如下的形式: 。 Phong 光照明模型是真实感图形学中提出的第一个有影响的光照明模型,生成图象的真实度已经达到可以 接受的程度;但是在实际的应用中,由于它是一个经验模型,还具有以下的一些问题:用 Phong 模型显示出
的物体象塑料,没有质感;环境光是常量,没有考虑物体之间相互的反射光:镜面反射的颜色是光源的颜色, 与物体的材料无关:镜面反射的计算在入射角很大时会产生失真等。在后面的一些光照明模型中,对上述的 这些问题都作了一定的改进 n=5 n=10 n=2 n=40 0.8/0.2 0.6/0.4 0.2/0.8 0.071.0Kd/Ks Phong光照明模型示意彩图 4.2.3增量式光照明模型 在上一节介绍的 Phong光照明模型中,由于光源和视点都被假定为无穷远,最后的光强计算公式就变为物 体表面法向量的函数,这样对于当今流形的显示系统中用多边形表示的物体来说,它们中的每一个多边形由 于法向一致,因而多边形内部的象素的颜色都是相同的,而且在不同法向的多边形邻接处,不仅有光强突变, 而且还会产生马赫带效应,即人类视觉系统夸大具有不同常量光强的两个相邻区域之间的光强不连续性。 为了保证多边形之间的光滑过渡,使连续的多边形呈现匀称的光强,我们将介绍增量式光照明模型。模型 的基本思想是在每一个多边形的顶点处计算合适的光照明强度或参数,然后在各个多边形内部进行均匀插值, 得到多边形的光滑颜色分布。它包含两个主要的算法:双线性光强插值和双线性法向插值,又被分别称为 Gouraud明暗处理和 Phong明暗处理。在该小节中,我们将对它们分别作仔细的讨论 1.双线性光强插值、 Gouraud明暗处理 双线性光强插值是由 Gouraud于1971年提出的,又被称为 Gouraud明暗处理,它先计算物体表面多边形 各顶点的光强,然后用双线性插值,求出多边形内部区域中各点的光强 它的基本算法描述如下 a)计算多边形顶点的平均法向, b)用 Phong光照明模型计算顶点的平均光强, c)插值计算离散边上的各点光强 d)插值计算多边形内域中各点的光强 下面我们分别介绍算法中的每一个步骤 顶点法向计算 尽管平面多面体本身是由曲面离散近似得到,如果用曲面几何信息计算法向,与光强插值的初衷不符,因 而我们必须仅用多边形间的几何与拓扑信息来计算顶点的法向。在这里,我们用与顶点相邻的所有多边形的 法向的平均值近似作为该顶点的近似法向量。假设顶点A相邻的多边形有k个,法向分别为 我们取顶点A的法向为 M=(M1+M2+…+M) k 而且我们发现,在一般情况下,用相邻多边形的平均法向作为顶点的法向,与该多边形物体近似的曲面的 切平面比较接近,这也是我们采用上面方法计算法向的一个重要原因。 计算机图形学第四章第112页共36页
计算机图形学 第四章 第 112 页 共 36 页 的物体象塑料,没有质感;环境光是常量,没有考虑物体之间相互的反射光;镜面反射的颜色是光源的颜色, 与物体的材料无关;镜面反射的计算在入射角很大时会产生失真等。在后面的一些光照明模型中,对上述的 这些问题都作了一定的改进。 Phong 光照明模型示意彩图 4.2.3 增量式光照明模型 在上一节介绍的 Phong 光照明模型中,由于光源和视点都被假定为无穷远,最后的光强计算公式就变为物 体表面法向量的函数,这样对于当今流形的显示系统中用多边形表示的物体来说,它们中的每一个多边形由 于法向一致,因而多边形内部的象素的颜色都是相同的,而且在不同法向的多边形邻接处,不仅有光强突变, 而且还会产生马赫带效应,即人类视觉系统夸大具有不同常量光强的两个相邻区域之间的光强不连续性。 为了保证多边形之间的光滑过渡,使连续的多边形呈现匀称的光强,我们将介绍增量式光照明模型。模型 的基本思想是在每一个多边形的顶点处计算合适的光照明强度或参数,然后在各个多边形内部进行均匀插值, 得到多边形的光滑颜色分布。它包含两个主要的算法:双线性光强插值和双线性法向插值,又被分别称为 Gouraud 明暗处理和 Phong 明暗处理。在该小节中,我们将对它们分别作仔细的讨论。 1.双线性光强插值、Gouraud 明暗处理 双线性光强插值是由 Gouraud 于 1971 年提出的,又被称为 Gouraud 明暗处理,它先计算物体表面多边形 各顶点的光强,然后用双线性插值,求出多边形内部区域中各点的光强。 它的基本算法描述如下: a)计算多边形顶点的平均法向, b)用 Phong 光照明模型计算顶点的平均光强, c)插值计算离散边上的各点光强 d)插值计算多边形内域中各点的光强。 下面我们分别介绍算法中的每一个步骤。 • 顶点法向计算 尽管平面多面体本身是由曲面离散近似得到,如果用曲面几何信息计算法向,与光强插值的初衷不符,因 而我们必须仅用多边形间的几何与拓扑信息来计算顶点的法向。在这里,我们用与顶点相邻的所有多边形的 法向的平均值近似作为该顶点的近似法向量。假设顶点 A 相邻的多边形有 k 个,法向分别为 , 我们取顶点 A 的法向为 而且我们发现,在一般情况下,用相邻多边形的平均法向作为顶点的法向,与该多边形物体近似的曲面的 切平面比较接近,这也是我们采用上面方法计算法向的一个重要原因