计算机图形学_第十章_第1页
计算机图形学_第十章_第2页
计算机图形学_第十章_第3页
计算机图形学_第十章_第4页
计算机图形学_第十章_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十章、光照模型与面绘制算法v光源v简单光照模型v多边形绘制算法v透明及阴影v添加表面细节v纹理映射光源v定义 任一发出辐射能量的对象称为一个光源,它对场景中的其它对象的光照效果有贡献。v点光源 使用三个RGB颜色分量指定的单个颜色的点光源是发光体的最简单的模型。 场景中的点光源通过指定其位置和发射光颜色来定义光源v无穷远光源 距离场景非常远的大型光源(如太阳)也可以用一个点发光体逼近,但是在方向效果上有所不同。 远距离光源仅在一个方向上照明场景,从远距光源到场景中任意位置的光线路径接近不变。光源v辐射强度衰减 辐射光线从一点光源出发并在空间中传播,离光源距离为dl时,它的振幅将按因子1/dl

2、2进行衰减。 即接近光源的表面将得到较高的入射光强度,而较远的表面则强度较小。 生成真实感图形时,采用如下衰减因子可以通过调节a0、a1、a2的值来得到场景中不同的光照效果,例如参数a0可以用来防止d很小是f(d)很大。光源v无穷远光源及局部光源衰减系数:光源v方向光源和投射效果 一个局部光源稍加修改就可产生方向光束或投射光束 如果一个对象位于光源的方向范围之外,则该对象得不到该光源的光照,如果环境中只存在该光源,则该对象不可见。光源v角强度衰减 对于一个方向光源,可按照从点光源位置出发的光强度角计算衰减。 常用的方向光源角强度衰减函数为: 其中al是角强度衰减指数,是一个大于0的值。衰减指数

3、al值越大,在角强度衰减越大。 光源v角强度衰减的一般公式l光源VlightVobj简单光照模型v精确的光照模型按照入射光能量与对象的材料组成之间的交互结果进行计算。但是为了简化计算,通常都是使用实际物理过程的近似来进行计算的。v简单光照模型中假定光源是点光源,物体是非透明物体,且表面光滑,于是透射光和散射光将近似于零,可以忽略不计。由于被物体吸收的光不会产生视觉效果,因此简单光照模型只考虑反射光的作用。反射光由环境光、漫反射光和镜面反射光三部分组成。简单光照模型 简单光照模型v环境光 环境光不直接来自光源,而是来自周围的环境对光的反射 环境光的特点是:照射在物体上的光来自周围各个方向,又均匀

4、地向各个方向反射。可以近似地认为,同一环境下的环境光是恒定不变的,对任何物体的所有表面都相等。 环境光照强度用Ia表示。场景中每个表面都得到这个环境光的照明。环境中物体上的一点对环境光的反射强度为: 其中,Ie是环境光反射强度;Ka为物体表面对环境光的反射系数。在同一环境光的照射下,物体表面呈现的光强度未必相同,就是因为它们具有不同的Ka。简单光照模型v漫反射 一个粗糙的、无光泽的表面呈现为漫反射。当光线照射到这样的表面上时,光线沿各个方向都作相同的反射,所以从任何角度去看这种表面都有相同的亮度。 表面上任一点反射出的辐射光能量可以用朗伯余弦定理计算,因此也称为朗伯仿射体。v散射光 来自某个方

5、向,当它撞击表面时,它会均匀的向所有方向发散。因此,不管眼睛在那个位置,散射光看上去总是一样亮的。简单光照模型v朗伯余弦定理 在与对象表面法向量夹角为 的方向上,每个面积为 的平面单位所发散的光线与 成正比。NdAcosN简单光照模型 假设每一表面都按理想漫反射对待,设物体表面在P点的法矢为N,从P点指向光源的矢量为L,N和L的夹角为。由郎伯余弦定理可得点P处漫反射光的强度为: 其中, In为漫反射光反射强度,Id为P点处漫反射光入射强度;Kd为漫反射系数,且有Kd0,1,它由物体的材料属性以及入射光的波长决定;为光线的入射角。cos ,0,2nddII K 简单光照模型v镜面反射 镜面反射遵

6、循反射定律,入射光和反射光分别位于表面法矢的两侧。对于理想的高光泽度反射面,反射角等于入射角时,光线才会被反射,即只有在等于入射角的反射角方向上,观察者才能看到反射光,如图所示。对于这种理想的反射面,镜面反射的光强要比环境光和漫反射的光强高出很多倍,这时,如果观察者正好处在R点的镜面反射方向上,就会看到一个比周围亮得多的高光点。简单光照模型v镜面光 来自于一个特定的方向,并且倾向于从表面某个特定的方向反射。简单光照模型vPhong模型 实际上,非理想的反射面,只要其表面是光滑的,如金属或瓷器表面,在点光源的照射下,也会产生一块特别亮的区域,称为高光点或镜面光斑。尽管这时镜面反射光的强度会随角的

7、增加而急剧地减少,但观察者还是可以在角很小的情况下接受到这种改变了方向的一部分镜面反射光。这种镜面反射情况由Phong模型给出:其中,Is为镜面反射光在观察方向上的光强;Ip为P点处镜面反射光入射强度;Ks为镜面反射系数;为视点方向V与镜面反射方向R之间的夹角;n是与物体表面光滑度有关的一个常数,表面越光滑,n越大。简单光照模型v颜色 颜色模型,也称颜色空间或彩色系统,用于指定颜色的描述规范。在颜色模型中,由于大多数颜色使用3个分量进行描述,因此颜色模型的建立可以看成是一个3维的坐标系统,其中的每一个空间点表示某一种特定的颜色。简单光照模型v颜色 这里假定选择RGB颜色模型,则环境光、漫反射光

8、和镜面光的强度可以表示为:简单光照模型v颜色 而环境光反射系数Ka、漫反射系数Kd和镜面反射系数Ks可以表示为:简单光照模型v光强计算公式 反射光由环境光、漫反射光和镜面反射光三部分组成。,11()cos()coskknaaid idiip isiiiII Kf d IKf d IK简单光照模型v光强计算公式,11,11,11()cos()cos()cos()cos()cos()coskknRaRaRidR idRiipR isRiiikknGaGaGidG idGiipG isiiikknBaBaBidB idBiipB isBiiiII Kf d IKf d IKIIKf d IKf d

9、IKII Kf d IKf d IK简单光照模型 由上述公式可见,当环境光和光源的光强一定的时候,物体表面的颜色是由Ka、Kd、Ks决定的。因此当使用光照来描述物体表面,总是更强调该物体表面由具有某些反射属性的材质组成,而不强调它具有特殊的颜色。所谓材质属性,就是物体表面对环境光、漫反射光和镜面光的反射属性,每类反射属性包括了对红、绿、蓝三原色的反射率。简单光照模型的多边形绘制v恒定光强的多边形绘制 恒定光强的多边形绘制,也称恒定光强的明暗处理,是一种简单而高效的多面体绘制方法,它只用一种颜色绘制整个多边形。任取多边形上一点,利用简单光照模型计算出它的颜色,该颜色即是多边形的颜色。 在下列条件

10、都满足的情况下,恒定光强的多边形绘制方式也可以得到一个较为真实的场景:条件条件1:光源在无穷远处,则多边形上所有点的L与N的夹角为常数,衰减函数也是一个常数。条件条件2:视点在无穷远处,则多边形上所有点的V与R的夹角为常数。条件条件3:多边形是景物表面的精确表示,即不是一个含曲线面景物的近似表示。简单光照模型的多边形绘制vGouraud明暗处理 Gouraud明暗处理方法,又称为亮度插值明暗处理,它通过对多边形顶点颜色进行线性插值来绘制其内部各点。由于顶点被相邻多边形所共享,所以相邻多边形在边界附近的颜色过渡会比较光滑,可以消除恒定光强绘制中存在的光强不连续现象。简单光照模型的多边形绘制vGo

11、uraud明暗处理步骤 (1)计算每个多边形顶点处的平均单位法矢量,即在多边形各顶点处,通过将共享该顶点的所有多边形面的法向量取平均值而得到该点所对应的法矢量。 (2)对每个顶点根据简单光照模型计算其光强。 (3)在多边形表面上将顶点光强度进行线性插值。比如可以在扫描线消隐算法中,对多边形顶点颜色进行双线性插值,获得多边形内部(扫描线上位于多边形内)各点的颜色。简单光照模型的多边形绘制v双线性插值 双线性插值的方法如图所示,待绘制多边形的投影为A(xA,yA)B(xB,yB)C(xC,yC),图中,边BC与扫描线的交点为S(xS,yS),边AC与扫描线的交点为T(xT,yT),P(xP,yP)

12、是ST上的一点。简单光照模型的多边形绘制v双线性插值 S点的光强IS可以由B和C点的光强IB和IC通过线性插值得到: 交点T的光强IT可由A和C点的光强IA和IC通过线性插值得到: 扫描线上的点P的光强IP可由S和T点的光强IS和IT通过线性插值得到:简单光照模型的多边形绘制vGouraud明暗处理的优点 算法简单,计算量小,解决了两多边形之间亮度的不连续过渡以及多边形域内亮度单一的问题。v Gouraud明暗处理的缺点 线性光强插值会造成表面上出现过亮或过暗的条纹,即马赫带效应没有完全消除。 这种方法只考虑了漫反射,而对镜面反射,其效果不太理想,主要表现在高光域的形状不规整,高光域只能在顶点

13、周围形成,不能在多边域内形成。 由于将相邻多边形的法矢量平均值作为顶点处的法矢量,所以如果所有顶点法矢量是平行的,这样,各个顶点的亮度以及整个面的亮度都会相同。简单光照模型的多边形绘制vPhong明暗处理步骤 计算每个多边形顶点处的平均单位法矢量。这一步骤与Gouraud明暗处理方法的第一步相同。 用双线性插值方法求得多边形内部各点的法矢量。 最后按光照模型确定多边形内部各点的光强。简单光照模型的多边形绘制v双线性插值法矢量计算 法矢量双线性插值的方法如图所示,待绘制多边形的投影为A(xA,yA)B(xB,yB)C(xC,yC),边BC与扫描线的交点为S(xS,yS),边AC与扫描线的交点为T

14、(xT,yT),P(xP,yP)是ST上的一点。点S和T的法矢量NS和NT可以由A、B和C点的法矢量NA、NB和NC通过线性插值得到:简单光照模型的多边形绘制v双线性插值法矢量计算 点S和T的法矢量NS和NT可以由A、B和C点的法矢量NA、NB和NC通过线性插值得到:简单光照模型的多边形绘制v双线性插值法矢量计算 扫描线上的点P的法矢NP可由S和T点的法矢NS和NT通过线性插值得到:v优缺点 相对而言,法矢量插值的优点是结果精确,真实感强。但它的计算量大,既要通过计算各顶点的法矢量来插值计算多边形上各点的法矢量,还要用光照模型计算各点的光强值。透明与阴影v简单透明处理 简单透明处理中,投影面上

15、的点的光强由不透明的背景景物穿过透明景物的透射光强与透明表面的反射光强加权得到。投影面上P点的光强IP由不透明的背景景物光强IB与透明表面的光强IA加权得到: 式中kt(0kt1)是透明景物的透射系数,它反映多少背景光线被透射。在极端的情形,kt接近于1时,表示景物高度透明,观察者完全看到背景景物;而当kt接近于0时,表示物体几乎完全不透明,背景景物被遮挡,对当前像素点的光强度不产生影响。为了得到逼真的效果,通常只对透明和不透明多边形表面的环境光分量和漫反射光分量进行加权计算,得到的结果再加上透明景物的镜面反射分量作为像素的光强值。透明与阴影v简单透明处理 通常用Z-buffer算法来实现透明

16、效果。最简单的方法是先处理不透明物体以决定可见不透明表面的深度,然后将透明物体的深度值与先前存在的帧缓冲器中不透明面的深度值进行比较,将可见透明面的光强与其后面的可见不透明面的光强综合考虑而进行绘制。透明与阴影v阴影处理 在3D计算机图形学中,物体光照的计算与其阴影的计算是分开进行的,只有在光照计算完成后进一步计算生成阴影,才能获得相对真实的绘图效果。透明与阴影v阴影处理 阴影是由于物体截断了光线而产生的,所以如果光源位于物体一侧的话,阴影总是位于物体的另一侧,也就是与光源相反的一侧。可以将产生具有阴影的图形绘制算法分为两个基本步骤:(1)将视点移到光源位置,用多边形区域排序消隐算法,将多边形

17、分成两大类:向光多边形和背光多边形。所谓向光多边形是指那些从光源看过去是可见的多边形;而背光多边形是指那些从光源看过去是不可见的多边形,包括被其它面遮挡了的多边形和反向面多边形。向光多边形不在阴影区内,背光多边形在阴影区内。(2)将视点移到原来的观察位置,对向光多边形和背光多边形进行消隐,并选用一种光照模型计算多边形的亮度,就可得到有阴影效果的图形。透明与阴影v平面阴影生成算法 目前生成平面阴影的方法几乎都是把阴影作为物体投射到其它表面来处理。在光源是平行光的时候(例如,太阳光),可以看成是物体把阴影“投射”到另一个表面上,如下图所示 设平面方程ax+by+cz+d=0已知平面的向量表示法为N

18、P+d=0,N是平面法向量N=(a,b,c),P(x, y, z)是平面上任一一点。透明与阴影v平面阴影生成算法 点光源阴影生成由于光源位置向量L、遮挡物顶点V和阴影点P位于同一条直线上,因此,存在某个数k,使: ()()()PLk VLPLk VL()0NLk VLdk()N LdNVL透明与阴影v平面阴影生成算法 平行光源阴影生成由于顶点V和阴影点P的连线与光线方向L为同一个方向,因此,存在一个数k,使: PVkLPVkL()0NVkLdkdN VN L 模拟景物表面细节模拟景物表面细节v颜色纹理与几何纹理 现实世界中的物体,其表面往往有各种纹理,即表面细节。例如,刨光的木材表面有木纹,建

19、筑物墙壁上有装饰图案,机器外壳表面有文字说明它的名称、型号等。它们是通过颜色色彩或明暗度的变化体现出来的表面细节。这种纹理称为颜色纹理。另一类纹理则是由于不规则的细小凹凸造成的,例如桔子皮表面的皱纹和未磨光石材表面的凹痕,通常称为几何纹理。颜色纹理取决于物体表面的光学属性,而几何纹理由物体表面的微观几何形状决定。模拟景物表面细节模拟景物表面细节v三种映射方法 纹理映射利用图像填充多边形,属于颜色纹理。 环境映射利用环境的图像进行纹理映射,属于颜色纹理。可以模拟高度镜面曲面。 凹凸映射在生成显示结果的过程中可以改变法向量,属于几何纹理。模拟景物表面细节模拟景物表面细节v纹理映射模拟景物表面细节模

20、拟景物表面细节v纹理映射模拟景物表面细节模拟景物表面细节v环境映射模拟景物表面细节模拟景物表面细节v凸凹映射模拟景物表面细节模拟景物表面细节v映射在什么地方处理 映射技术是在绘制流水线的最后阶段实现的,非常有效,因为在经过所有操作后,大量多边形被裁剪掉,减少了不必要的映射。模拟景物表面细节模拟景物表面细节v二维纹理 纹理:以数组形式存储在处理器内存里的二维图像,此时数组元素称为纹理(texture)。由应用程序生成或照片扫描输入。 把离散数组看成一个连续的二维矩形区域纹理图案T(s,t),独立变量s和t是纹理坐标。一般把纹理坐标缩放到0,1区间。模拟景物表面细节模拟景物表面细节v二维纹理模拟景

21、物表面细节模拟景物表面细节v线性仿射纹理映射模拟景物表面细节模拟景物表面细节v线性仿射纹理映射问题 在上面的插值中,我们做了一个错误的假设纹理坐标s、t和屏幕x和y是线性关系。我们在这个假设的基础上进行了s和t对x和y的线性插值,这样的纹理映射方式就叫做仿射纹理映射。仿射纹理映射是应用在90年代的游戏开发中的主流方式(当前的很多游戏也在一些地方使用仿射方式),因为处理简单,所以性能比较高。仿射纹理映射器在大多数情况下它都能“看起来正确”地显示(要让多边形和相机远离,让多边形显示尽可能的小)。但是,仿射纹理映射有一个最大的问题它完全是错误的。模拟景物表面细节模拟景物表面细节v线性仿射纹理映射问题

22、 在上面的算法中,我们计算sleft、sright以及tleft、tright的时候,是做了关于y的线性插值模拟景物表面细节模拟景物表面细节v线性仿射纹理映射问题 这表明在y方向上,纹理坐标s和t的变化和y的变化是按照线性、均匀的方式处理的。另外,纹理坐标s和t的扫描线步长sstep和tstep的计算,是根据扫描线的长度平均分配纹理变化量,也是按照线性、均匀的方式处理的。但是问题在于:投影平面上的线性关系,还原到空间中,就不是那么回事了,这还要从透视投影那段说起,请看下图。模拟景物表面细节模拟景物表面细节v线性仿射纹理映射问题 这张图是相机空间的一张俯视图。我们把一个多边形通过透视投影的方式变换到了投影平面上,图中红色的是空间中的多边形,蓝色的是变换到投影平面之后的多边形。可以看到,在投影平面上的蓝色线段被表示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论