您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > chap10-真实感图形绘制
计算机图形学基础华东理工大学计算机系·谢晓玲2基本概念简单光照模型基于简单光照模型的多边形绘制第十章真实感图形绘制3真实感图形绘制:通过综合利用数学、物理学、计算机以及心理学等知识在计算机图形输出设备上绘制出能够以假乱真的美丽景象。光强(度):描述物体表面朝某方向辐射光的颜色,它既能表示光能大小又能表示其色彩组成的物理量。基本概念4光照模型(Illuminationmodel),也称明暗模型,主要用于物体表面某点处的光强度计算。简单的光照模型复杂的光照模型基本概念5真实感图形绘制过程根据假定的光照条件和景物外观因素,依据一定的光照模型,计算可见面投射到观察者眼中的光强度大小,并将它转换成适合图形设备的颜色值,生成投影画面上每一个象素的光强度,使观察者产生身临其境的感觉。基本概念6真实感图形绘制步骤在计算机中进行场景造型;进行取景变换和透视变换;进行消隐处理;进行真实感图形绘制。基本概念7简单光照模型环境光漫反射光镜面反射光光强衰减颜色处理10.1简单光照模型8简单光照模型中只考虑反射光的作用。反射光由环境光、漫反射光和镜面反射光三部分组成。简单光照模型9特点:照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。P点对环境光的反射强度为环境光(BackgroundLight)PaaeKII图1环境光的反射10一个粗糙的、无光泽的表面呈现为漫反射。特点:光源来自一个方向,反射光均匀地射向各个方向。由Lambert余弦定理可得点P处漫反射光的强度为:漫反射光(DiffuseReflection)图2漫反射P点光源NL]2,0[,cosdpdKII11若L和N都已规格化为单位矢量,则有漫反射光(DiffuseReflection)图2漫反射P点光源NL)(NLKIIdpd12对于彩色漫反射光(DiffuseReflection)),,(pBpGpRpIIII)()()(NLKIINLKIINLKIIdBpBdBdGpGdGdRpRdR对于多个漫反射光源niidipdNLKII1,)(13镜面反射遵循反射定律,入射光和反射光分别位于表面法矢的两侧。如果观察者正好处在P点的镜面反射方向上,就会看到一个比周围亮得多的高光点。镜面反射光P点光源NLRV观察点图3镜面反射14镜面反射情况由Phong模型给出:镜面反射光P点光源NLRV观察点图3镜面反射cosnspsKII若R和V已规格化为单位矢量,则:nspsVRKII)(15从视点观察到物体上任一点P处的光强度I应为环境光反射光强度Ie、漫反射光强度Id以及镜面反射光的光强度Is的总和:物体表面光强计算nspdpaasdeVRKINLKIKIIIII)()(16光在传播的过程中,其能量会发生衰减。光照模型中必须考虑光强衰减,否则会影响生成图形的真实效果。光强的衰减可以采用常数衰减、一次函数衰减和二次函数衰减等。光强衰减17常用的二次衰减函数光强衰减)1,1min()(2210dcdccdfninisipiniidipiaasdeNHKIdfNLKIdfKIIIII1,1,)()()()(18选择颜色模型(colormodel)面向硬件的颜色模型:RGB、CYM面向视觉感知的颜色模型:HSI为颜色分量指定光照模型颜色19以RGB颜色模型为例环境光强度:入射光强度:环境光反射系数:漫反射系数:镜面反射系数:颜色),,(aBaGaRaIIII),,(pBpGpRpIIII),,(aBaGaRaKKKK),,(dBdGdRdKKKK),,(sBsGsRsKKKK20光强计算公式:颜色ninisBipBiniidBipBiaBaBBninisGipGiniidGipGiaGaGGninisRipRiniidRipRiaRaRRNHKIdfNLKIdfKIINHKIdfNLKIdfKIINHKIdfNLKIdfKII1,1,1,1,1,1,)()()()()()()()()()()()(21恒定光强Gouraud明暗处理Phong明暗处理10.2基于简单光照模型的多边形绘制22只用一种颜色绘制整个多边形光源在无穷远处,则多边形上所有点的L·N为常数,衰减函数也是一个常数。视点在无穷远处,则多边形上所有点的V·R为常数。多边形是景物表面的精确表示,即不是一个含曲线面景物的近似表示。恒定光强23Gouraud明暗处理方法,又称为亮度插值明暗处理,它通过对多边形顶点颜色进行线性插值来绘制其内部各点,其步骤为:计算每个多边形顶点处的平均单位法矢量;对每个顶点根据简单光照模型来计算其光强;在多边形表面上将顶点强度进行线性插值。Gouraud明暗处理24双线性插值方法Gouraud明暗处理图4Gouraud明暗处理的双线性插值Oxyy扫描线多边形ABCPST25Phong明暗处理方法,又称为法矢量插值明暗处理,它对多边形顶点的法矢量进行插值以产生中间各点的法矢量,其步骤为:计算每个多边形顶点处的平均单位法矢量;用双线性插值方法求得多边形内部各点的法矢量。最后按光照模型确定多边形内部各点的光强。Phong明暗处理26矢量双线性插值方法Phong明暗处理图5Phong明暗处理的矢量双线性插值Oxyy扫描线多边形ABCPSTNANBNCNTNSNP2710.3透明处理入射光反射光折射光透明景物入射光图6透明表面的光强包括反射光和折射光28透明处理图7简单的透明处理xzP不透明景物透明景物BA29透明处理图8光的折射入射光NLR反射光irriiT折射光LNTririri)cossin(3010.4产生阴影阴影是由于物体截断了光线而产生的,所以如果光源位于物体一侧的话,阴影总是位于物体的另一侧,也就是与光源相反的一侧。从理论上来说,从视点以及从光源看过去都是可见的面不会落在阴影中,只有那些从视点看过去是可见的,而从光源看过去是不可见的面,肯定落在阴影之内。31产生阴影产生具有阴影的图形绘制算法将视点移到光源位置,用多边形区域排序消隐算法,将多边形分成两大类:向光多边形和背光多边形。将视点移到原来的观察位置,对向光多边形和背光多边形进行消隐,并选用一种光照模型计算多边形的亮度,就可得到有阴影效果的图形。3210.5模拟景物表面细节颜色纹理:通过颜色色彩或明暗度的变化体现出来的表面细节。几何纹理:由于不规则的细小凹凸造成的。颜色纹理取决于物体表面的光学属性,而几何纹理由物体表面的微观几何形状决定。3310.5模拟景物表面细节用多边形模拟表面细节纹理的定义和映射凹凸映射34多边形模拟表面细节简单地模拟景物表面细节的方法是用多边形,称为表面图案多边形,来模拟纹理的结构和模式。处理时,首先根据待生成的颜色纹理构造表面图案多边形,然后将表面图案多边形覆盖到物体的表面上。35纹理映射和定义生成颜色纹理的一般方法,是预先定义纹理模式,然后建立物体表面的点与纹理模式的点之间的对应。当物体表面的可见点确定之后,以纹理模式的对应点参与光照模型进行计算,就可把纹理模式附到物体表面上。这种方法称为纹理映射(TextureMapping)。36纹理映射和定义纹理空间(s,t)数组坐标物体空间(u,v)表面参数像素空间(x,y)像素坐标纹理和表面变换观察和投影变换图9纹理映射中纹理空间、物体空间和像素空间的变换37纹理映射和定义图10由像素空间向纹理空间的映射像素区物体表面纹理模式观察投影变换的逆变换纹理映射变换的逆变换38凹凸映射1978年,Blinn提出了一种无需修改表面几何模型,即能模拟表面凹凸不平效果的有效方法——凹凸映射技术(BumpMapping)。3910.6整体光照模型与光线跟踪整体光照模型Whitted光照模型光线跟踪算法40整体光照模型一个完整的光照明模型应该包括由光源和环境引起的漫反射分量、镜面反射分量、规则透射分量以及漫透射分量等。仅考虑由光源引起的漫反射分量和镜面反射分量,而环境反射分量则简单地用一常数来代替,这类光照模型称为局部光照模型。能同时模拟光源和环境照明效果的光照模型称为整体光照模型。41Whitted光照模型Whitted在简单光照模型中增加了环境镜面反射光和环境规则透射光,以模拟周围环境的光投射在景物表面上产生的理想镜面反射和规则透射现象。视点NRVT图11物体表面的镜面反射和投射ttsslocalIKIKII42光线跟踪算法光线跟踪(RayTracing)方法基于几何光学的原理,通过模拟光的传播路径来确定反射、折射和阴影等。xyz投影平面O图12光线跟踪算法43光线跟踪算法步骤从视点出发,确定穿过每个像素中心的光线路径,然后,沿这束光线累计光强,并将最终值赋给相应像素。对于每一像素光线,对场景中的所有物体表面进行测试以确定其是否与该光线相交,并计算出交点的深度,深度最大(z值)的交点即为该像素对应的可见点。然后,继续考察通过该可见点的从属光线(SecondaryRays)。44光线跟踪算法步骤对每条从属光线重复过程:与场景中的所有物体求交。然后递归地在沿从属光线方向最近的物体表面上生成下一折射和反射光线。当由每个像素出发的光线在场景中被反射和折射时,逐个将相交物体表面加入到一个二叉光线跟踪树中。当树中的一束光线到达预定的最大深度或到达某光源时,就停止跟踪。45光线跟踪算法步骤RATATBABCTCRBRC(a)光线在景物中反射和折射(b)二叉光线跟踪树ABCRATARBTBTCRC图13光线跟踪及光线跟踪树46光线跟踪算法步骤可以从光线跟踪树的叶结点开始,累计光强贡献以确定某像素处的光强大小。树中每个结点的光强由树中的子结点处继承而来,但光强大小随距离而衰减。像素光强是光线树根结点处的衰减光强的总和。47光线跟踪反走样将光线跟踪算法与过采样方式结合起来,可归纳如下:(1)对每一像素的角点计算光线跟踪的光强。(2)比较像素4个角点的光强,确定要进行细分的像素。(3)对细分后新增的角点计算光线跟踪的光强。然后,重复(2)和(3),直到各角点的光强比较接近为止。(4)加权平均求出投影平面上各像素点的光强。4810.7OpenGL中的光照处理点光源全局光照表面材质透明处理49点光源在OpenGL场景描述中可以包含多个点光源,光源的各种属性设置使用下面的函数指定。voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param);50点光源pname取值默认值含义GL_AMBIENT(0.0,0.0,0.0,1.0)光源中环境光分量GL_DIFFUSE(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中漫反射光分量GL_SPECULAR(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中镜面光分量GL_POSITION(0.0,0.0,1.0,0.0)光源的坐标位置GL_SPOT_DIRECTION(0.0,0.0,-1.0)光源聚光灯方向矢量GL_SPOT_EXPONENT(0.0)聚光指数GL_SPOT_CUTOFF180.0聚光截止角GL_CONSTANT_ATTENUATION1.0固定衰减因子GL_LINEAR_ATTENUATION0.0线性衰减因子GL_QUADRATIC_ATTENUATION0.0二次衰减因子51点光源点光源的颜色点光源的位置和类型聚光灯光强度衰减52点光源在OpenGL中,必须明确启用或禁用光照。默认情况下,不启用光照,此时使用当前颜色绘制图形,不进行法线矢量、光源、光照模
本文标题:chap10-真实感图形绘制
链接地址:https://www.777doc.com/doc-6918348 .html