光照模型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

光照模型1引言2简单光照模型3Gouraud明暗处理4Phong明暗处理5透明6阴影处理算法7纹理映射8运用光照模型的光线跟踪算法引言引言三维图形处理–第一步:消隐解决物体深度的显示及确定物体之内的相互关系–第二步:在解决了消隐问题以后,在可见面上明暗光泽的处理真实图形研究涉及物理学和生物学两个方面,本章只考虑有关物理学中的基本原理基本原理–光(称电磁能)经过周围环境传入人的眼睛,并在人的眼睛里,发生物理、化学等变化–产生人脑所能感知的电脉冲–人的眼睛是一个很复杂的系统,它是直径约为20mm的近球状体,还有可以作自动调节的晶体,它将接受到的光线在视网膜上聚焦映像,视网膜分别对强光敏感(用以分辨细节和颜色)和对微光敏感(不可分辨颜色)–光经过周围环境传入人的眼睛,并在人的眼睛里,发生物理、化学变化,然后产生人脑所能感知的电脉冲简单光照模型简单光照模型当光照射在某一物体的表面时,它将被吸收,反射或透射光照射到物体表面,主要发生:反射透射(对透明物体)部分被吸收成热能反射光,透射光决定了物体所呈现的颜色简单光照模型简单光照模型当光照射在某一物体的表面时,它将被吸收,反射或透射从物体表面反射出来的光可分为漫反射和镜面反射一个漫反射光照模型为:I=I1kdcosθ其中,I为反射光强度,I1为入射光强度,kd为物体表面的反射系数(0≤kd≤1),θ为入射角简单光照模型简单光照模型在现实生活中,总存在一些散射现象,使得背光的一面不全黑,这样简单光照模型为:I=Iaka+I1kdcosθ其中,Ia为散射光在整个场景中的入射强度,ka为散射光对该物体表面的反射系数(0≤ka≤1)考虑到光强度还与物体与视点的距离d的平方成反比,经验上用1/(d+K)代替1/d2,K为一经验常数,则简单光照模型为:I=Iaka+(I1kdcosθ)/(d+K)以上是漫反射,光强度与人的观察方向无关。简单光照模型简单光照模型在镜面反射中,光照模型为:Is=I1w(θ,λ)cosnα其中,w(θ,λ)为反射率曲线,是入射角θ和光波长λ的函数(与材料有关)α为观察角,n的取值与表面粗糙程度有关–n越大,表面越平滑(散射现象少,稍一偏离,明暗亮度急剧下降)–n越小,表面越毛糙(散射现象严重)简单光照模型可归纳为:I=Iaka+I1(kdcosθ+w(θ,λ)cosnα)/(d+K)简单光照模型简单光照模型镜面反射:光滑表面,“高光”效果;理想反射面与非理想反射面Phong模型简单光照模型简单光照模型简单光照模型简单光照模型用经验系数ks代替w(θ,λ),于是简单光照模型为:I=Iaka+I1(kdcosθ+kscosnα)/(d+K)对于多光源情况,简单光照模型为:I=Iaka+∑I1j(kdcosθ+kscosnαj)/(d+K)简单光照模型可表示为:I=Iaka+∑I1j[kd(n·L)+ks(R·S)n]/(d+K)其中,n,L分别为表面法矢量和光源方向的单位矢量,R,S分别为反射光和观察方向的单位矢量简单光照模型简单光照模型可表示为:I=Iaka+∑I1j[kd(n·L)+ks(R·S)n]/(d+K)其中,n,L分别为表面法矢量和光源方向的单位矢量,R,S分别为反射光和观察方向的单位矢量常用’代替,cos’=N.HLNLRV’HGouraud明暗处理Gouraud明暗处理原理扫描线S与平面1交于Q,R两点,求QR上任一点的光强度过程如下:对点A,B处的光强度进行插值:IQ=uIA+(1-u)IB其中,u=AQ/AB(0≤u≤1)(5-8)同样对点C,B处的光强度进行插值:IR=wIB+(1-w)IC其中,w=CR/CB(0≤w≤1)(5-9)点P处的光强度可由Q,R处光强度作线性插值求得,即IP=tIQ+(1-t)IR其中,t=QP/QR(0≤t≤1)(5-10)Gouraud明暗处理Gouraud明暗处理算法描述1.将曲面近似分割成若干个小平面。2.计算各小平面得法矢量n1,n2,……nm(m为平面总数)3.对每一平面,做以下工作,直到结束4.计算小平面相交顶点上的法线,这个法矢量为所有与其相邻的小平面法矢量的平均值,即:n=1/k∑ni5.假设光源的入射角和观察角,根据光照模型,计算各个顶点的光强度6.根据式(5-8)和(5-9)计算小平面与小平面相交边上各点的光强度7.根据式(5-10)计算个小平面中各点的光强度endofalgorithmGouraud明暗处理Gouraud明暗处理算法分析Gouraud明暗处理会造成表面上出现过亮或过暗的条纹,称为马赫带(Mach_band)效应当对曲面采用不同的多边形进行分割时会产生不同的效果。如图以扫描线2为界限,上部和下部的光强度过渡比较剧烈了。一般而言多边形边数越多这种情况越明显。对曲面用不同多边形分割,会产生不同效果Gouraud明暗处理Gouraud明暗处理算法分析以三边形和四边形为例,我们可以看出不同点:用三边形分割用四边形分割Phong明暗处理Phong明暗处理原理P处法矢量的计算可分为两步:–对A,B处法矢量作线性插值求处Q处法矢量,对B,C处法矢量作线性插值求出R处法矢量;–对Q,R处法矢量作线性插值求出P处的表面法矢量,即:nQ=unA+(1-u)nB(5-12)nR=wnB+(1-w)nC(5-13)nP=tnQ+(1-t)nR(5-14)其中,u=AQ/AB(0≤u≤1),w=BR/BC(0≤w≤1),t=QP/QR(0≤t≤1)。Phong明暗处理Phong明暗处理算法描述1.把曲面近似的分成若干个小平面2.计算各个小平面的法矢量n1,n2,……,nm(m为平面总数)3.计算各个小平面相交顶点上的法矢量的平均值,即n=(∑ni)/m4.根据式5-12和5-13计算两平面相邻边上个点法矢量5.根据式5-14计算各小平面中各点法矢量6.根据光照模型,计算所有点的光强度7.endofalgorithmPhong明暗处理Phong明暗处理原理分析Phong算法的马赫带效应比Gouraud方法要弱,但是在处理某些多边形分割的曲面时,Phong算法还不如Gouraud算法好。当用诸如ABCD这样的多边形分割曲面时,在PQ以上光强度的变化是均匀的,但在PQ以下,面S1的光强度要由AB和BC插值计算,而面S2的光强度由AD和CD插值计算,这样先计算法向量再插值求光强度,就不如先计算光强度再插值来的好。这是Phong算法不利的地方。透明透明算法原理当光线从一种媒介进入另一种媒介,会变得弯曲。根据斯涅耳(Snell)定律有:η1sinθ1=η2sinθ2其中:η1,η2分别是光线在第一,二中媒介中的折射率,θ1,θ2分别是入射角和折射角透明透明算法原理光有透射与漫透射之分,从下图可看出区别由于光的折射将对视觉产生影响:在视变换或透视变换中也会出现类似情况漫反射透射透明透明算法原理在透明算法中若不考虑折射,则上述情况都不会发生,这里也不考虑光线在媒介经过的距离对光强度的影响如果可见面是透明的,则可用它与其最靠近的物体表面光强度的线性组合表示透明面的光强度。公式如下:I=tI1+(1-t)I2(5-16)其中,I1为可见面的光强度,I2为距可见面最近表面的光强度,t为I1所在物体表面的透明度(0≤t≤1)(t=0,可见面不可见;t=1,可见面不透明)若I2所对应的面也是透明面,则可按上述过程递归处理,直到遇到不透明面为止曲面物体的处理方法,引入透明因子(基于曲面法矢量的z分量):t=tmin+(tmax-tmin)[1-(1-|nz|p)]其中,tmin和tmax分别为物体的最小和最大透明度,nz为表面的法矢量的z分量,p为透明指数,t为物体表面上任一点或屏幕上任意象素点上的透明度透明透明算法描述1.while对每一个多边形dobegin2.if多边形是透明的then将它存放于透明表中3.if多边形是不透明的andz(多边形)<Z(buffer)then该多边形光强度→光强度缓冲器,并将z(多边形)→Z(buffer)end4.while对于透明表中的每一个多边形dobegin5.ifz(多边形)<Z(buffer)then透明度→透明度缓冲器,并Ibotbo+Ictc→光强度缓冲器(其中Ibo为光强度缓冲其中的原存储值,Ic为当前多边形上的光强度,tbo为透明度缓冲器中的原存储值,tc为当前多边形的透明度)end6.Ibotbo+Ifbo(1-tbo)→光强度缓冲器(其中Ifbo为光强度缓冲器中的原存储值)7.endofalgorithm透明透明算法原理分析本方法更适合于用扫描线Z缓冲器算法实现.若考虑折射效果,可见面的计算决定于入射光.反射光和透射光,则简单光照模型的一般形式为:I=kaIa+kdId+ksIs+ktIt其中,下标a,d,s,t分别为散射、漫反射、镜面反射和透射标记,通常kt为常数,且透射光强度满足斯涅耳定律阴影处理算法阴影处理算法原理阴影是由于观察方向与光源方向不重合而造成的假如上图观察方向与光源方向重合,则会出现下图所示的情况:看不见阴影阴影处理算法阴影处理算法原理阴影分为两部分:本影和半影,如下图。中央全黑且轮廓明显的是本影;本影周围半明半暗的是半影阴影分为两类:–自身阴影–投射阴影阴影处理算法原理阴影处理算法本算法只考虑单个物体情况,物体以体矩阵形式存放。入射光线矢量以一维数组存放。视点放在Z轴上。主要步骤如下:–针对入射光线,判断物体各个面是不是自身消隐面(即对光线是否可见);–对每个非自身消隐面,求出其在基平面的投影多边形(即投影面的各个顶点);–针对视点,判断物体的各个面及投影多边形是否可见;–对物体和投影多边形做投影变换,将它们的坐标转换成屏幕坐标;–根据光照模型,依次填充物体的可见面和投影多边形。阴影处理算法原理阴影处理算法判断是否自身消隐和是否可见都用平面方程法。如一个矢量为(x,y,z),平面方程为(a,b,c,d),则通过ax+by+cz+d的符号来断定矢量与平面成钝角或锐角(不可见/可见);将非自身消隐面投影到基平面,先将入射光线矢量旋转,使之与Z轴重合,这样,将非自身消隐面投影到基平面的过程就变成了与将三维物体投影到屏幕一样的了。阴影处理算法阴影处理算法描述/*判断物体各个面是不是自身消隐面(即对光线是否可见)*/1.while对物体的每一个面,Begin2.计算其平面方程Fi=[],得到物体的体矩阵Obj=[F0,F1,…,Fn-1],其中n为物体表面个数;End3.对入射光线vec_light=[x,y,z,1],做矩阵乘法G=[vec_light]·[Obj];得到G=[g0,g1,g2,…,gn-1];4.For(i=0;i<n;i++)If(gi<0)ThenFi是自身阴影面;IsSelfshadeFace[i]=1;ElseFi是非自身阴影面;IsSelfshadeFace[i]=0;阴影处理算法阴影处理算法描述/*对每个非自身消隐面,求出其在基平面的投影多边形(即投影面的各个顶点);*/5.根据入射光线矢量,计算它绕Y轴旋转的角度Theta1,绕X轴旋转的角度Theta2,使它旋转之后与Z轴重合;6.计算绕Y轴旋转角度Theta1的变换矩阵[T1]和绕X轴旋转角度Theta1的变换矩阵[T2],并求出总的变换矩[T]=[T1]·[T2];7.计算物体的顶点矩阵[P]和基平面顶点矩阵[B];8.对[P]和[B]作如下变换:[B]·[T]=[B¢],[P]·[T]=[P¢]9.将变换后的顶点矩阵[P¢]的x,y坐标代入变换后的基平面方程,求出在基平面上投影点的z坐标;10.按照非自身阴影面,计算相应的投影多边形;11.对每个投影多边形做逆变换[T-1]:[S]=[P¢]·[T-1]其中,[S]即为最终投射阴影多边形。12.Endofalgorithm纹理纹理算法原理在计算机图形学中,物体表面的细节称为纹理。一般只考虑两种类型的纹理–一种是在光滑表

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功