第12讲 三维形体显示技术-2_第1页
第12讲 三维形体显示技术-2_第2页
第12讲 三维形体显示技术-2_第3页
第12讲 三维形体显示技术-2_第4页
第12讲 三维形体显示技术-2_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第12讲三维形体显示技术

——三维形体的真实感显示

12.1简单光照明模型——Phong模型12.2Z——Buffer绘制算法12.3真实感效果图生成(选学)

12.3.1全局光照模型

12.3.2光线跟踪算法

12.3.3辐射度算法12.4其它显示技术(选学)纹理映射、IBR技术本章目的

1.了解CAD系统图形真实感生成原理2、熟悉简单光照明模型——Phong模型计算方法3、熟悉Z-Buffer算法原理4、了解其它真实感图形显示技术真实感渲染显示欣赏

问题的提出实际上,显示器是用密集的像素点阵显示图像,只要知道每一个像素点的颜色就能够显示三维形体。这样问题就转化为:确定每一个像素点所对应形体上的位置(点或区域)(利用Z-Buffer算法等)计算形体上该对应点的颜色(或光强)

(光照模型,如Phong模型等)想一想,影响观察点的颜色因素有哪些?12.1简单光照明模型-Phong模型当光照射到物体表面时,物体对光会发生反射、透射、吸收、衍射、折射和干涉。Phong模型只考虑物体对直接光照的反射作用,而物体间的光反射作用用环境光(AmbientLight)来近似表示。具体表述为:Phong模型=漫反射模型

+镜面反射模型+环境光模型前述Gouraud方法用光强线性插值不能反映物体对光的反射作用。采用简单光照明模型(phong模型)模型能够模拟物体对光的反射作用。在phong模型中,假定光源为点光源,反射作用被细分为镜面反射(SpecularReflection)和漫反射(DiffuseReflection)。光照规律假设:

沿光源方向反射光强为Ip

物体表面上点P的法向为N

从点P指向光源的向量为L

两者间的夹角为1)理想漫反射模型当光源来自一个方向时,漫反射光均匀向各方向传播(如右图),与视点无关,它是由表面的粗糙不平引起的,因而可假定漫反射光的空间分布是均匀的。图

漫反射P如果kd表示物体表面漫反射系数(取01之间),则漫反射方程可描述为:(0≤≤设N为物体表面的单位法向量,L为物体表面上一点指向光源的单位矢量,则:

如果有多个光源,则光强度计算式为:图

漫反射P式中:每一点单位法矢N用扫描线线性插值计算(或精确计算),如右图。(注意:gouraud模型直接颜色插值)

2)镜面反射光

对于理想镜面,反射光集中在一个方向,并遵守反射定律。

对一般的光滑表面,反射光集中在一个范围内,且由反射定律决定的反射方向光强最大。

因此,对于同一点来说,从不同位置所观察到的镜面反射光强是不同的。镜面反射光强可表示为:Ks是与物体有关的镜面反射系数(0<kd+ks<1),例如kd

+ks=0.95意味5%的光能被吸收。

为视线方向V与反射方向R的夹角,n为反射指数,反映了物体表面的光泽程度,一般为1~200,数目越大物体表面越光滑。图

镜面反射光P

镜面反射光将会在反射方向附近形成很亮的光斑,称为高光现象,用高光指数n来反映。

镜面反射光产生的高光区域只反映光源的颜色。将V和R都格式化为单位向量,镜面反射光强可表示为:式中:

对多个光源:图

镜面反射光NLRP

3)环境光

环境光是指光源间接对物体的影响,是在物体和环境之间多次反射,最终达到平衡时的一种光。近似地认为同一环境下的环境光,其光强分布是均匀的,它在任何一个方向上的分布都相同。例如,透过厚厚云层的阳光就可以称为环境光。在简单光照明模型中,用一个常数来模拟环境光,用式子表示为:

其中:Ia

为环境光的光强

Ka为物体对环境光的反射系数(0<kd

+ka

<1)

4)Phong光照明模型综上分析,Phong光照明模型表述为:由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is

的总和,即:按R、G、B三种颜色分量展开计算得:I=Ie

+Id

+Is由此可得:P用Phong模型进行计算时,对物体表面上每个点P,均需计算光线的反射方向R,再由V计算(R·V),为减少计算,作如下假设:

a)光源在无穷远处,即光线方向L为常数;

b)视点在无穷远处,即视线方向V为常数;c)为避免计算反射方向R,用(H·N)代替(R·V),这里H为L和V的平分向量,即:H=(L+V)/|L+V|(可以证明:V与R的夹角是两倍的H与N的夹角,也就是说H与N的夹角可以反映高光)注意:Phong模型对物体表面的每一点的光强进行计算,显然其计算量较大。yxzP已知P点处光源矢量(-3,4,0),法线矢量(0,2,0),视线矢量(4,3,0),沿光源反射光强度Ip为(10,5,5),环境光强度Ia为(1,1,1),物体表面漫反射系数0.2,镜面反射系数0.7,环境光反射系数0.2,高光指数为2。例1、用phong模型计算点P处的光强解:由已知条件计算得P点处:单位光源向量为L(-3/5,4/5,0)镜面反射光单位向量R(3/5,4/5,0)单位法矢向量为N(0,1,0)单位视线向量V(4/5,3/5,0)光源反射光强Ip为(10,5,5)环境光强度Ia为(1,1,1)漫反射系数Kd

=0.2镜面反射系数Ks=0.7环境光反射系数Ka=0.2高光指数n=2=cos(LN)=|-3/5|×0+4/5×1+0×0=0.8=cos(RV)=3/5×4/5+4/5×3/5+0×0=0.96Ir=1×0.2+10×0.2×0.8+10×0.7×(0.96)2=8.2512Ig=1×0.2+5×0.2×0.8+5×0.7×(0.96)2=4.2256Ib=1×0.2+5×0.2×0.8+5×0.7×(0.96)2=4.2256于是,得P点处反射到视点的光照强度为(8.25,4.22,4.22)。或者说,从视点观察到P点处的颜色为(8.25,4.22,4.22)。根据phong光照模型则,则P点的光照计算公式如下:=++Phong模型计算实例图中可以看出高光指数、漫反射及镜面系数对显示效果的影响在商用CAD系统中,一般提供材料库,一些工程常用的材料属性参数均提供常规环境下的参考参数,用户根据实际工程情况可交互修改这些参数。下图为CATIA中的铝、金材料表面的参数(用于渲染显示)。Phong模型计算演示Phong光照明模型是真实感图形学中提出的第一个有影响的光照明模型,生成图象的真实度已达到可接受程度。但在实际应用中,它是一个经验模型,还具有以下的一些问题:用Phong模型显示出的物体象塑料,没有质感;没有考虑距离对光照强度的衰减影响;环境光是常量,没有考虑物体之间相互的反射光;镜面反射的颜色是光源的颜色,与物体的材料无关;镜面反射的计算在入射角很大时会产生失真;

Phong模型是简单的局部光照模型,对物体间相互反射及折射、阴影处理欠缺等。12.2Z-Buffer绘制算法Phong光照模型可解决物体表面上光亮度和颜色的计算问题。那么如何在计算机屏幕上绘制这些具有真实感的图形。Z-Buffer算法、扫描线算法、光线跟踪算法及辐射度算法等是目前实现具有真实感图形绘制的最主要算法。通常要计算场景中各形体可见面的颜色,其基本思想是:1)根据光照模型,计算可见面投射到观察者眼中的光亮度大小和色彩组成,并将它转换成适合图形设备的颜色值;2)确定投影面上(如显示器屏幕)每一象素的颜色(如右图),最终生成三维形体的真实感图形。由于空间三维物体是连续点集。显然直接计算物体上点的颜色将无法确定计算采样点的位置和数目。事实上,我们仅能看到屏幕所能显示的区域。如果能够求得屏幕上每一个象素点所对应的物体上点的颜色,这样就可绘制整个图形。反向思维:正向思维:为了得到屏幕上某象素点所对应的物体上点的颜色,经过该象素点的作一射线,射线平行于观察视线,则射线与多面体物体可能有多个交点。如果物体不透明,则处于最前面的交点的颜色即为所求,如图所示。实现该过程最经典的算法:

——Z缓冲区(Z-Buffer)算法为计算物体表面上对应象素点的颜色,用帧缓存器存放每个象素颜色(按光照模型计算),用深度缓存空间来存放每个象素深度值Z,称为Z缓冲器(即Z-Buffer)。Z缓冲器(Z-Buffer)算法实现cz为了加快计算速度,实际计算中并非按像素顺序扫描作射线求交来计算颜色。而是以景物表面(离散三角形)为单位进行计算,这样可有效利用视线与多边形交点的相关性加快计算速度,此即Z-Buffer多边形扫描算法。Z-Buffer多边形扫描算法思路:

1)Z缓冲器中每个单元值(与屏幕像素点阵一一对应)是对应象素点所反映物体对象的z坐标值,初值取成z的极小值。

2)将待处理的每一个景物表面(即离散后的三角形)上的采样点变换到图像空间(用图形裁剪提高效率),计算其深度值z。

3)并根据采样点在屏幕上的投影位置,将其z值与已存贮在z缓存器中相应象素处的原可见点的深度值进行比较。

4)如果该采样点位于Z缓存器所记录的可见点之前,则计算该采样点处的表面颜色填入帧缓存器相应象素,同时用其深度值更新z缓存器存贮的深度值。否则,不写入也不更新。zcZ-Buffer多边形扫描线算法(){for(i=0,1,…,m)//m:窗口水平方向象素数目

for(j=1,…,n)//n:窗口垂直方向象素数目

{用背景色初始化帧缓存CB:CB(i,j)=背景色;

用最小Z值初始化深度缓存:ZB(i,j)=Zmin;

}

for(每一个多边形)

{将该多边形进行投影变换;

扫描转换该多边形在视平面上的投影多边形;

for(该多边形所覆盖的每个象素(i,j))

{计算该多边形在该象素的深度值Zi,j;

if(Zi,j>ZB(i,j))

{ZB(i,j)=Zi,j;

计算该多边形在该象素的颜色值Ci,j;

CB(i,j)=Ci,j;

}

}

}

}注:对投影多边形进行裁剪得到有效区域,可加快显示速度cz

早期Z-Buffer算法存在缺点:算法需要开一个与图象大小相等的缓存数组ZB,占用空间大,没有利用图形的相关性与连续性(当然现在不是问题)。前面介绍的多边形扫描算法已利用交点相关性加速。

Z-Buffer算法在象素级上以近物取代远物,形体在屏幕上的出现顺序是无关紧要的,有利于并行计算及硬件实现(显卡上GPU并行计算加速渲染),目前广泛采用。算法分析Z-Buffer算法在象素级上以近物取代远物,因此本身就是消隐算法;Z-Buffer算法象素颜色计算会出现走样现象,反走样才能提高效果。思考:数码相机图片走样产生的原因有哪些?例2、利用Z-Buffer算法及Phong模型计算颜色如图,给定坐标系OXYZ及正投影坐标系o′x′y′,且Oo′=200。在OXYZ中,已知圆球面1的圆心坐标为(0,0,0),半径为100;圆球面2的圆心坐标为(50,50,50),半径为80;正方体的一个顶点为O点,其三条边分别沿负x轴、正y轴及负z轴方向,边长为120。又已知光源在矢量(3,4,5)方向无穷远处,沿光源反射光强度为(10,5,5),环境光强度(1,1,1),物体表面漫反射系数0.2,镜面反射系数0.7,环境光反射系数0.2,高光指数为2。假设一显示器分辨率为1200*900,且屏幕一个像素间隔为1个单位长度,显示器中央(像素600,450)与投影坐标系o′点重合。试用Z-buffer算法及Phong模型,求x’=30,y’=40处像素点的颜色。Oxyzx’y’o’1)建立各形体模型及表面方程2)过像素点确定视线方向(即平行于Z轴正向)3)沿视线作射线分别与2个球面及立方体相交,并求出交点判断各交点可见性,得到最前面可见点4)计算该可见点法线矢量5)计算光源射线的反射线矢量6)按照前面Phong模型例题逐步进行计算解题思路:Oxyzx’y’o’12.3真实感效果生成(选学)12.3.1全局光照模型Phong模型是一种局部光照明模型。局部光照明模型不考虑景物间光照明影响,不能模拟光的折射、反射和阴影等,忽略了环境光的传递,很难表现自然界复杂场景的高质量真实感图形。1)透明和折射对于透明物体来说,部分光被反射,部分光透射并发生折射。当光线从一种媒质进入另一种媒质,光线产生折射。为了增加图形的真实感,必须考虑环境的漫反射、镜面反射和规则透射对景物表面产生的全局照明效果。折射对视觉产生的影响如下图所示(产生错觉,如水碗中的筷子弯曲)。对于透明物体,若不考虑折射,也不考虑漫透射(即光通过透明体时不发生模糊变型),这种透明可用一种简单透明模型(右下图)来模拟。简单透明模型:

I=(1-t)Ic+tIt0t1式中:t=0不透明,t=1为完全透明,It为透射光,Ic为反射光,用Phong模型计算。2)阴影处理阴影是指景物中那些没有被光源直接照射到的暗区。阴影分为本影和半影。真实感显示图形中阴影可以反映画面中景物的相对处置,增强图形的立体感和场景的层次感,丰富画面的真实感效果。由于半影的计算量较大,在许多场合我们只考虑本影(即假设环境由点光源或平行光源照明)。计算本影从原理上来说非常简单,因为光源在景物表面上产生的本影区域均为它们的隐藏面,若取光源为观察点,那么,在景物空间中实现的任何隐藏面算法都可用于本影的计算。3)全局光照模型——Whitted光照模型Whitted在Phong模型中增加了环境镜面反射光Is和环境规则透射光It

,以模拟周围环境光投射产生的理想镜面反射和规则透射现象。Whitted模型基于下列假设:观察方向V的光亮度I由三部分组成,一是直接反射光亮度Ie;另一是r方向的环境反射光Is;最后是t方向的规则透射环境光It

(见右图)。Whittcd模型可用以下公式求出:

I=Ie

+KsIs

+KtIt式中Ks和Kt为反射系数和透射系数,它们均在0至1之间取值,Ie的计算可采用Phong模型,于是上述公式变为:+KsIs

KtItWhitted模型是一递归的计算模型,可使用光线跟踪技术进行计算。光线跟踪算法是真实感图形学中的主要算法之一,算法具有原理简单、实现方便和能够生成各种逼真的视觉效果等优点。在真实感图形学对光线跟踪算法的研究中,Whitted提出了第一个整体光照模型,并给出一般性光线跟踪算法的范例,综合考虑了光的反射、折射透射、阴影等。光线跟综过程示意图12.3.2光线跟踪算法简单光透射模型把透射光分为理想漫透射和规则透射。由光源发出的光称为直接光,物体对直接光的反射或折射称为直接反射和直接折射。把物体表面间对光的反射和折射称为间接光,间接反射,间接折射。这是光线在物体间的传播方式,是光线跟踪算法的基础。由光源发出的光到达物体表面后,产生反射和折射,简单光照明模型和光透射模型模拟了这两种现象。在简单光照明模型中,反射被分为理想漫反射和镜面反射光。最基本的光线跟踪算法是跟踪镜面反射和折射。从光源发出的光遇到物体表面,发生反射和折射而改变方向,沿反射方向和折射方向继续前进,直到遇到新的物体。但光源发出的光经反射与折射,仅少部分可以进入人眼。因此实际光线跟踪算法的跟踪方向与光传播的方向是相反的,而是视线跟踪。由视点与象素(x,y)发出一根射线,与第一个物体相交后,在其反射与折射方向上进行跟踪,如图所示。此时光线在离视点最近的景物表面交点处走向有三种可能:

1)当前交点所在的景物表面为理想漫射面。跟踪结束。

2)当前所在的景物表面为理想镜面.光线沿其镜面反射方向继续跟踪。

3)当前交点所在的景物表面为规则透射面.光线沿其规则透射方向继续跟踪。

显然,上述过程是一递归跟踪过程。对每一根穿过屏幕象素中心的光线的跟踪构成了一棵二义树。虽然光线在景物间的反射和折射可以无限地进行下,但在实际计算时不可能做无休止的光线跟踪,因而需要给出光线跟踪的终判条件。如设定跟踪层数,光亮度小于给定值等条件。光线跟踪算法-算法描述设置视点,投影平面以及窗口的参数;For(窗口内的每一条扫描线)for(扫描线上的每一个像素){确定从视点指向像素中心的光线ray;

像素的颜色=RayTracing(ray,1);}ColorRayTracing(Rayray,intdepth){求ray与物体表面最近的交点P;if(有交点){用局部光照明模型计算P点的Ic;

color=Ic;if(depth<给定的最大跟踪层次){计算ray的反射光线;

Is=RayTracing(反射光线,depth+1);if(物体是透明的){计算ray的透射光线;

It=RayTracing(透射光线,depth+1);

}

color=Ic+Is+It;}}elsecolor=black;returncolor;}开源代码Pov-Ray——RayTacing演示程序12.3.3辐射度算法辐射度方法是继光线跟踪算法后,真实感图形绘制技术的一个重要进展。光线跟踪算法成功地模拟了景物表面间的镜面反射、规则透射及阴影等整体光照效果。由于光线跟踪算法的采样特性和局部光照模型的不完善性,该方法难于模拟景物表面之间的多重漫反射效果,因而不能反映色彩渗透现象。将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果。

经过十多年的发展,辐射度方法模拟的场景越来越复杂,图形效果越来越真实。基本的辐射度算法方法其基础在于热辐射的理论,因为辐射度依赖于两个表面之间光能的传输。为了简化计算,辐射度算法假设该数值在整个面片上恒定(完全或理想漫射曲面);这意味着要计算精确的图像,场景表述的几何部分必须分解成更小的区域(面片),然后把它们组合起来得到最后的图像。在这个分解之后,光能传输的量可以通过使用已知的反射表面的反射率和两个面片的波形系数来计算。更精确的讲,辐射度是每单位时间离开曲面片的能量,是发射和反射能量的组合:式中Bi

是面片i的辐射度,Ei

是发射的能量,Ri

是面片的反射系数。

在图形绘制场景中,景物表面的辐射度分布与视点选取无关,辐射度方法是一个视点独立(Viewindependent)的算法。由于其视点无关性,使之可广泛应用于虚拟环境的漫游(walkthrough)系统中。类似上述交互式动画及游戏场景渲染均采用实时渲染显示。适合于场景不太复杂,渲染质量要求不高,并在个人计算机上能实现的情况。无论是光线跟踪,还是辐射度算法,其渲染计算量巨大。尤其对于复杂场景(如复杂地形、大型建筑场馆)的精美动画制作,其计算更甚。为了应对这一需求,目前复杂场景动画制作渲染常借助与渲染农场(Renderfarm)模式进行渲染制作。所谓渲染农场其本质是利用“分布式并行集群计算系统”进行集群并行渲染及调度管理,其原理是利用现有主流CPU、以太网和操作系统构建的超级计算机,使之接近超级计算机的计算能力。目前典型的支撑软件有基于Windows平台的Renderfarm。国内有多家基于Renderfarm的公共服务平台。右图为Renderfarm平台构架。类似上述大规模场景的真实感渲染及动画等后期制作对硬件设备具有较高要求,设计建模完成后可将后期制作外包第三方,降低费用。

12.4其它显示技术(选学)全局光照模型虽能生成视觉上比较逼真的图片,但与现实景物仍有很大差别。引起这种差别的一个主要原因是忽略了对物体表面细节。物体表面细节一般分两种:一是表面颜色纹理,如花瓶上图案,墙面上的拼花图等;另一种是表面几何纹理,如桔皮的皱折等。颜色纹理取决于物体表面的光学属性,而几何纹理则和物体表面的微观几何形状有关。为了模拟物体表面精致的不规则的颜色纹理,可采用纹理映射(texturemapping)技术。纹理映射将给定纹理函数映射到物体表面上,在对物体表面进行光照度计算时可采用相应纹理函数值作为物体表面漫反射光亮度Ipd代入光照模型进行计算。1)纹理映射二维纹理映射实质上是从二维纹理平面到三维景物表面的一个映射(如右图)。通常,二维纹理在一个纹理空间(s,t)坐标系内的矩形区域中用光强度值来定义,其中每一点处,均定义有一灰度值或颜色值。而场景中的物体表面则在景物空间(u,v)坐标系中定义的,投影平面上的象素点是在图象空间内的直角坐标系xoy中定义的。二维纹理映射在绘制时,应用纹理映射方法可以方便地确定景物表面上任一可见点P处在纹理空间中的对应位置(s,t);而(s,t)处所定义的纹理值或颜色值即描述了景物表面在P处的某种纹理属性。把该点处的纹理颜色值作为漫反射系数代入光照模型(如简化的Phong反射模型)中进行计算,就能够生成具有纹理效果的真实感图象。(2)

映射纹理:建立纹理空间与景物空间及景物空间与屏幕图象空间之间的映射关系。纹理影射技术可分为如下两步进行:

(1)

纹理表示:

确定表面哪些部分定义成纹理,即确定纹理属性。a)二维纹理的表示方法

二维纹理最常见的表示方法就是数字化的彩色图象,其分辨率用m×n表示,颜色数用2k表示,例如,k=1表示黑白(二值)图象;用位图(BitMap)文件(BMP文件)或其它格式的图象文件(例如:PCX,TIFF或JPEG等图象文件)保存。纹理的另外一种表示方法就是用解析函数或过程来表示。例如:我们可以用三维空间中定义的共振函数(正弦函数)来生成木纹理或大理石纹理,这种纹理映射方法称为过程纹理映射。b)纹理的映射方法

大体上,实现纹理影射的方法有两类:

方法(1):将纹理模式映射到景物表面,再从景物表面映射到投影平面,即:纹理空间→景物空间→图象空间(如图a);

为简化计算,由纹理空间向景物空间映射采用线性映射,

由景物空间向图象空间变换通过平行或透视投影来实现。方法(2):将象素区域映射到景物表面,再由景物表面映射到纹理空间,即:图象空间→景物空间→纹理空间(如图b)。

这一类方法避免了象素的分割计算,并能简化反走样处理;但是它一般需要计算投

温馨提示

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

评论

0/150

提交评论