真实感和非真实感显示技术02Word格式.docx
《真实感和非真实感显示技术02Word格式.docx》由会员分享,可在线阅读,更多相关《真实感和非真实感显示技术02Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
几十年来,CAD/CAM技术的飞速发展,对许多行业的设计和生产过程产生了巨大影响,使其自动化程度达到了前所未有的高度。
在机械设计方面,传统的产品设计通常需制作实物模型来检查设计效果,尤其是那些对外形美感要求较高的产品,一般要先按图纸制作样品,再根据样品反映的问题进行多次修改,耗费大量人力、物力和时间。
若采用真实感图形显示技术,则可方便地在屏幕上显示产品在各种视角下的逼真图形,并且可直接在计算机上对设计参数进行交互修改和绘制,直到满意为止。
既可大大减少反复生产样品的时间,缩短设计周期,也节约了生产样品的资金和人力;
在建筑方面,建筑师往往要花费很大的精力绘制效果图,如果采用真实感图形绘制技术,不但可以把这方面的工作交给计算机处理,还可以结合虚拟现实技术进行建筑物体的虚拟漫游,这样,建筑师和用户在建筑物还处于设计阶段就可以非常直观地了解建成后的外观和内部空间的布置及采光效果等,做到胸有成竹。
绘制技术是计算机图形学的一个重要分支,它研究的是如何将几何定义的模型变成可视的图象。
真实感图形绘制技术是图形学绘制技术发展的结果,它的目标是根据几何场景的造型、材质和光源分布,将其转变成跟真实场景在视觉效果上非常相似的图象,使观察者有身临其境的感觉。
在近三十年的时间里,随着硬件技术和计算机图形学的高速发展,真实感图形绘制技术取得了举世嘱目的成就,并且已广泛应用于CAD/CAM、计算机动画、虚拟现实、科学计算可视化等众多领域,为社会的发展与进步做出了重大贡献。
计算机动画是真实感图形绘制技术的又一重大应用领域。
在电影和电视广告中,要达到某些特定的效果,往往需要进行许多次的试验和拍摄。
那些危险场面、破坏场面和需要动物配合的场面不但令电影工作者们非常为难,而且提高了电影的制作费用,还可能对人员造成伤害。
另外,有些事物和景象更是现实世界无法找到的,比如科幻片或者灾难片,无法实景拍摄。
通过计算机绘制出高度真实感的虚拟场景,这些困难都可以方便地解决。
可以说,真实感图形绘制技术给影视工作者和艺术家提供了一个尽情发挥想象力的舞台。
虚拟现实是当前的一个热门研究课题,它在飞行训练、战斗模拟、计算机游戏等许多领域具有十分广阔的应用前景。
真实感图形绘制技术是基于图形的虚拟现实的核心技术之一,直接关系到人机交互速度和图象输出质量。
科学计算可视化是当前的另一热门课题,它已在医学、地球科学、天文物理、化学、机械工程等许多方面取得了巨大成就,将大批工程技术人员和医务人员从大量繁琐的数据中解放出来。
真实感图形是科学计算可视化的输出手段之一,绘制质量将直接关系到工程技术人员对原始数据的理解和医务人员对病人病情和病因的判断,具有突出的现实意义。
真实感图形绘制技术的应用领域非常广阔,它的影响正迅速地向工业生和社会生活的各个领域渗透。
可以预料,在未来社会里它必将发挥更为重要的作用。
二真实感图形的绘制算法
真实感图形绘制是计算机图形学中的一个重要课题。
早在1967年,计算机绘制真实感图形就被提出,只是由于当时计算机运算速度慢,图形显示设备功能差,造价高,使其发展和应用受到了一定程度的限制。
近三十年来,随着计算机硬件技术的飞速发展,真实感图形绘制技术取得了举世嘱目的巨大成就,光照模型、绘制方程、消隐算法、光线跟踪算法、辐射度算法和体绘制算法相继被提出和完善,真实感图形绘制技术也随之日益成熟。
2.1光线跟踪算法
光线跟踪是一种真实地显示物体的方法,该方法由Appel在1968年提出。
光线跟踪方法沿着到达视点的光线的反方向跟踪,经过屏幕上每一个象素,找出与视线相交的物体表面点P0,并继续跟踪,找出影响P0点光强的所有光源,从而算出P0点上精确的光线强度,在材质编辑中经常用来表现镜面效果。
光线跟踪或称光迹追踪是计算机图形学的核心算法之一。
在算法中,光线从光源被抛射出来,当他们经过物体表面的时候,对他们应用种种符合物理光学定律的变换。
最终,光线进入虚拟的摄像机底片中,图片被生成出来。
光线跟踪基本思想可用算法形式描述如下:
for需要计算的每个象素e
{
确定通过视点V和象素e的光线R;
Ray-tracing(R,I,1);
置e的亮度为I
}
Ray-tracing(R,I,A)
/*R为当前跟踪光线,I为当前跟踪光线的亮度,A为I对总亮度的贡献系数*/
ifA<
ξ//ξ为最小贡献系数
I=0;
Else
R与景物求交,返回可见点P1;
计算P1点的局部照明亮度Ic;
ifP1所在的表面为光滑镜面
确定P1的镜面反射光线Rs;
Ray-tracing(Rs,Is,ksA);
ifP1所在的表面为透明面
确定P1的规则透射光线Rt;
Ray-tracing(Rt,It,ktA);
I=A(Ic+ksIs+ktIt);
光线跟踪算法使计算机产生图形的真实感大幅度提高,但卓越的图形绘制效果与昂贵的的计算开销形成了鲜明的对比。
为了使这一算法真正实用化,减少运算量势所必行,从此,许多人开始研究光线跟踪的加速方法。
光线跟踪中最费时的运算是线面求交,有关资料表明,如果不采取加速措施,线面求交约占整个光线跟踪时间的95%以上[Wfit80]。
因此,减少运算量的关键在于提高线面求交的速度或减少线面求交的次数。
层次包围盒方法是减少线面求交次数的重要方法。
它的基本思想是,在复杂形体外包一个容易求交的包围盒,例如长方体或球面等。
在光线与该复杂物体求交之前,先判其是否与包围盒相交,若与包围盒不相交,说明它与包围盒中的复杂形体也不相交,从而节约了时间。
只有当光线与包围盒有交时,才有必要与复杂形体进行求交运算。
若原复杂形体由多个部分组成,还可以为每个部分定义一个包围盒,从而形成一棵包围盒树。
线面求交时先从树根结点开始判断包围盒,若光线与根结点的包围盒不相交,则与原物体不相交,否则再判断光线与每棵子树的包围盒是否相交,这样可以按层次访问包围盒,免除了许多不必要的求交计算。
只有当访问到树的叶子节点时,才需进行必要的求交计算。
减少求交计算的另一种重要方法是空间剖分法。
它的基本原理是,将物体所在的空间剖分为若干个小体素,为每个体素建一张表以保存在该体素中或部分在该体素中的物体。
若一个物体在几个体素中,则每个体素的表中都要记录该物体。
光线射出后,先与其遇到的第一个体素中的所有物体求交,若有交且交点在该体素中,则此体素中的最近交点就是系统中所有物体的最近交点,这样就没有必要与其它体素中的物体求交。
若在第一个体素中无交,则再判下一个体素,直至找到交点或穿出剖分空间为止。
由于只有射线穿过的体素中的物体才可能参与求交,从而大大地减少了求交次数。
空间剖分法特别适合于离散法造型系统中的形体或由多个简单形体构成的复杂形体。
这样每个体素中的物体求交速度都很快,而且避免了绝大多数不必要的求交计算。
选点计算加速法是另一种类型的加速方法。
其理论基础是,物体表面的绝大部分颜色的过渡都是很均匀的,只是在边界部分才产生颜色突变。
由此可知,在颜色变化不大的地方没有必要逐点进行计算,只需按照某种规则选择一些点进行真正的光线跟踪计算,然后对未计算的点进行线性插值即可。
由于线性插值只包含简单的四则运算,比用光线跟踪算法计算亮度要快得多,因此能起到加速作用根据文献[Akim91]中的结论,选点计算法可将计算速度提高2~9倍。
2.2辐射度算法
辐射度(Radiosity)算法源于五十年代提出的一种热辐射工程计算方法,原方法是用于计算场景中所有面相互之间的热辐射作用。
八十年代中期,Goral等和Nishita等提出将这种方法引入到计算机图形学中[Gora84][Nish85]。
经过十多年的发展,辐射度算法成为真实感图形的一种重要生成工具,并且由于这种算法具有与视点无关的特点,在VR领域着广泛的应用前景。
相对于其它真实感图形的绘制算法,辐射度算法的主要特点在于:
1)经典的辐射度算法只处理纯漫反射封闭场景;
2)场景的辐射度计算与视点无关;
3)其它的绘制算法大都基于实践经验,而辐射度算法从一开始就建立在求解能量平衡方程组的基础上,因而从光能分布计算上讲,辐射度算法比其它真实感图形的绘制算法更为准确。
在辐射度技术刚被引入到计算机图形学中时,因为解析求解形状因子进而求解能量平衡方程组的计算量非常大,工程上的应用受到了很大的限制。
1985年,MichaelF.Cohen等人提出用半立方体方法(hemi-cube)离散地求取形状因子的近似解[Cohn85]。
Cohen等人又在1988年提出逐步求精绘制技术[Cohn88]。
这两种技术的运用大大加快了能量分布的运算,使辐射度技术在工程上的应用成为可能.此后,辐射度算法的研究主要集中在以下两个方面:
场景的划分:
场景划分的质量直接关系到辐射度运算的时间和空间复杂度、内存的要求、计算精度以及最后结果的图形质量。
非纯漫反射场景的处理:
因为经典的辐射度算法只处理纯漫反射场景,而实际日常生活中的场景一般说来都包含有非纯漫反射物体。
解决这个问题的两趟法(two-passmethod)是先计算场景的漫反射和非漫反射光能分布,然后在绘制时采用光线跟踪技术。
如果对结果要求非常高,还包括利用光线投射获得聚焦和失焦的特殊效果,这也就算所谓的多趟方法。
2.3光照模型
现实世界中,物体所表现的颜色都是光能作用的结果。
客观世界中的物体都不同程度地具有发射光线、吸收光线、反射光线和透射光线的能力。
光线照射到物体表面时,一部分被吸收并转化为热能,其余部分被则反射或透射。
正是部分反射或透射的光线被眼睛接收后,我们才感觉到物体的存在及其所特有的形状和色彩。
因此,要绘制高度真实感图形,就必须定义场景中的光源。
为了便于计算,我们必须定量地描述光的多少或强弱,亮度和强度就是用来定量描述光的两个基本概念。
物体表面光的亮度是指单位投影面积在单位立体角内发出的光的能量,它是物体表面上的小面元所具有的性质。
对点光源常用强度来代替亮度。
强度是指点光源在单位立体角内发出的光能。
同样大小的被照射面离光源越远,接收到的光能就越少。
光的传播服从反射定律和折射定律,光源与物体所表现颜色的关系可通过光照模型来模拟。
物体所表现的颜色与光源有密切的关系。
光照模型的作用就是计算物体可见表面上每个点的颜色与光源的关系,因此它是决定图形真实感的一项重要内容。
物体表面发出的光是极其复杂的,它既与环境中光源的数目、形状、位置、光谱组成和光强分布有关,也与物体本身的反射特性和物体表面的朝向有关,甚至还与人眼对光线的生理和心理视觉因素有关。
把这一切都通过计算机精确地计算出来是不现实的,我们只能用尽可能精确的数学模型——光照模型来模拟光和物体的相互作用,从而近似地计算物体可见表面每一点的亮度和颜色。
最基本的光照模型是Phong模型,它首次使光源和视点的位置可以任意选定。
Phong模型表达式如下:
I=IaKa+IiKd×
(N·
L)(r+K)+Ii×
Ks(N·
H)n/(r+K)
其中,IaKa为环境光参数
Ii为入射光强
Kd为物体表面的漫反射系数
Ks为物体表面的镜面反射系数
N为物体表面的法向
L从物体表面指向光源的向量
r光源到物体表面的距离
H视线与L的平分向量
Phong模型假设反射光线集中在反射方向(反射角等于入射角的方向)附近,并随着与反射方向夹角的增大,反射光急剧减弱。
用Phong模型计算所得的物体象塑料,镜面反射光是光源的颜色,不能反映物体表面的材料特性,而且镜面反射在入射角很大时有失真。
这个模型模拟的反射效果不理想,用它生成的图形缺乏质感。
后来Blinn,Cook,Torrance等人相继对Phong模型进行了一些修改,使图形的真实感有明显的提高。
1982年Cook和Torrance提出了一个基于物理光学的表面反射模型——Cook·
Torrance模型[Cook82],使得模型中反射光的位置和分布与实际情况非常接近,因而用它绘制的图形具有很好的质感。
Cook·
Torrance模型的表达式如下:
I=IaKaf+(Kd×
F0×
L)+Ks×
D×
F×
G/(N·
V))/Ck
其中,IaKaf为环境光参数
Kd,Ks为漫反射与镜面反射的比例,Ks+Kd=1
D为物体表面的分布函数
F是菲涅耳函数,表示入射角和材料折射率的不同引起的镜面反射率不同
G为几何衰减因子,由微平面相互遮挡
Cook模型运用了光学中的菲涅尔方程,此方程在入射光为非偏振光时是非常精确的。
利用上述光照模型,可以计算出场景中各物体每一点的颜色。
该颜色只与直接光源、物体的材料及该点的法向量有关,与它周围的物体还没有建立联系,这样的光照模型被称为局部光照(localillumination)模型。
但现实世界里的大多数物体都具有明显的反光特性(因此我们的眼睛才能感觉到它们的存在),有些物体还具有透明特性,一个物体的反射光和透射光也会对其它物体产生明显的影响。
光线跟踪算法和辐射度算法较好地解决了这方面的问题,它们被称为全局光照(globalillumination)模型。
其中光线跟踪算法解决了物体之间的镜面反射和透射的影响,能产生镜像、透明和阴影等效果,但对漫反射处理不足,辐射度
算法正好解决了这一不足,它从能量的角度出发,很好地模拟了物体之间的漫反射。
三真实感显示的消隐方法
3.1概述
在系统中,我们主要采用了两种消隐方法,它们是背面删除及Z缓冲区深度排序法。
观察现实世界中的物体可以发现,视线一般不会穿透实心物体。
近处的物体会遮住远处的物体,凹多面体物体会遮挡住自身的某些部分。
这些看起来似乎很明了、很自然的现象,但要在计算机上实现却并不简单。
一般来说,三维线框图不是很逼真,有时还存在二义性。
其中(a)是未经消隐的立方体,此时我们无法确定立方体倒底是按(b)的方向放置的还是按(c)的方向置的。
所以在计算机图形生成中,为了达到较高的逼真性,必须把观察者所不能看到的线和面从图形中消去,这一过程称为隐藏线、隐藏面的未消隐图形的二意性消除,简称消隐。
[1]
图1未消隐图的二意性
目前在计算机动画中所采用的一些主要消隐算法有Z缓冲区深度排序法、扫描线算法和窗口细分算法。
我们的动画系统中主要采用了两种消隐方法:
背面删除及Z缓冲区深度排序法。
[5]
通过这两种类型隐藏面的消隐方法就真实的3D图像。
[2]这是因为:
Z缓冲区深度排序保证了相机近处的实体会遮住远的实体,而背面删除法确保了实体背对相机的表面是不可见的。
[6]
3.2背面删除
背面删除用于处理单个3D实体,如立方体、球、锥、锲等。
它检测并删那些背对相机的表面(即背对观察者的表面)。
因为每个3D实体都是由表面构成
的,从相机的视点位置是看不到背对相机的表面的。
背面删除算法建立在平面标准方程的基础之上,这个方程用于测试相机的XYZ坐标,以判断相机位于平面
的哪一面。
[2]因为我们使用B-rep造型时,总是用实体表面顶点的XYZ坐标来描述该表面,这些顶点坐标按逆时针方向排列,实体的每个表面都是一个平面,因而确保了这种测试是可靠的。
如果标准方程指出相机位于平面的内部,那么该表面就是背对相机的,因而是不可见的;
如果标准方程指出相机位于平面的外部,那么该表面就是面对相机的,因而是可见的。
下面推导背面删除判据的数学表达形式。
设以相机与平面方向的关系为原点,空间三点的坐标分别为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3),且三点按逆时针方向排列。
现要判断相机位于过P1、P2、P3三点的平面的哪一侧。
[8]
3.3Z缓冲区深度排序
Z缓冲区深度排序法不仅要用帧缓存来存放每个像素的亮度值,而且还需要用Z缓存来存放每个像素的深度值。
开始时,各像素的Z缓存置为最大值,帧缓存置为背景色的亮度值。
此后,每一个新像素的深度值和存贮在相应Z缓存的深度值比较,若新像素的深度值小于相应Z缓存的深度值,则将该新像素的亮度写入相应的帧缓存中,深度写入相应的Z缓存中,否则不产生任何动作。
我们用Z缓冲区深度排序处理含有多个3D实体的复杂布景。
每个表面的Z坐标代表了它到相机的距离,这个距离称为深度。
将场景中的所有深度进行排序,Z缓冲区算法就可以保证作图时只画那些最近的表面。
因为在一个透视观察体中,近处的表面将遮住那些远离相机的表面。
Z缓冲区算法是人类在客观世界中视觉效果的一个很好的近似。
所谓Z缓冲区是内存中的字节数组,每个字节对应着应用程序窗口视口的一个像素。
Z缓冲区中的每一个字节都含有一个Z深度值(XYZ坐标中的Z值)。
这些深度值对应着最近表面上点的Z值。
开始时,各像素的Z缓存置为最大值。
在Z缓冲区算法对每个表面进行处理时,如果发现了一个更小的值(代表一个更近的平面),那么相应的内容将被改变,否则不产生任何动作。
当每个表面的每一个点都被处理完后,Z缓冲区中就只含有那些最近(可见)点的深度值。
[7][9]
在Z缓冲区深度排序算法计算深度值的同时,它也在管理一个帧缓冲区。
和Z缓冲区一样,帧缓冲区也是一个字节的数组,其每个字节对应着视口上的一
个像素。
开始时,帧缓存置为背景色的亮度值。
当算法写一个深度值到Z缓冲区中的一个字节时,它也向帧缓冲区中相应的字节写入一颜色值。
当每个表面的
每个点都被Z缓冲区算法处理完后,帧缓冲区中也就包含了视口中每个像素的颜色值。
我们之所以采用Z缓冲区算法,是因为它非常可靠。
无论多么复杂的背景,Z缓冲区深度排序算法总是能够产生一个正确的观察图像。
这是因为Z缓冲区法用了基于图像的算法,每一个被处理的点都确切地对应着显示器上的一个像素。
3.4Z缓冲区深度排序的分辩率
在本系统中,我们所用的Z缓冲区都是由字节构成的,Z缓冲区中的一个字节对应着窗口视口中的一个像素。
这种设计可使内存要求较小。
如:
若设视口的大小为256∃255个像素,那么一个65280字节的Z缓冲区就可以放得下布景中所有像素的深度值。
但是,由于一个字节只能存放256种深度值,Z缓冲区的分辩率被限制在0~255的范围之内。
如果3D世界深度为512个单位,那么这时Z缓冲区就不能区分只差一两个单位的两个点。
解决这种限制的办法是使用整数或浮点数构成Z缓冲区。
[10]
四非真实感的意义及简介
非真实感绘制指的是利用计算机生成不具有照片般真实感,而具有手绘风格的图形的技术。
其目标不在于图形的真实性,而主要在于表现图形的艺术特质、模拟艺术作品(甚至包括作品中的缺陷)或作为真实感图形的有效补充。
主要模拟画种有油画,水彩画,钢笔画,铅笔画,水墨画和卡通动画。
最早出现在20世纪80年代的早期论文中如:
Strassmann和Sasada。
90年SaitoandTakahashi和Haeberli在Siggraph会议上发表了两篇非常有影响力的论文。
到94年,随着几篇论文在Siggraph会议的发表和在Eurographics会议的发表,这一新领域才逐渐显现出来。
到97年Siggraph将非真实感绘制单独作为一个类别,此后非真实感绘制技术进入了一个稳步发展的时期。
近年来,对于视频、图像、三维模型的非真实感处理变得越来越热门,现在浙江大学金小刚教授和温州大学赵汉理博士,专注于这方面的研究,并已经取得了很多成果。
国内研究相对较晚,但由于中国水墨画自身特点,目前国内研究处于领先地位。
例如,天津大学孙济洲教授,浙江大学于金辉教授,厦门大学张俊松博士,辽宁师范大学唐棣教授和臧超研究生。
五基于非真实感绘制技术的实时阴影渲染
在三维场景的非真实感图形绘制中,铅笔画、水彩画、素描和油画等艺术效果的仿真绘制在艺术和娱乐领域发挥着重要作用[11]。
为了达到更逼真的效果,阴影绘制是在光照作用下场景的实时绘制过程中不可缺少的部分。
当前较为流行的实时阴影生成算法包括:
阴影图算法和阴影体算法[12];
其中,阴影图算法的效率更高,因为它只需要将整个场景渲染两遍,而不需要额外的几何处理或者网格生成。
本文主要研究应用于三维场景的铅笔画艺术效果的阴影实时绘制。
若直接采用阴影图算法进行阴影绘制,在进行第二次渲染时整个阴影区域只是描浓了的效果,效果不佳。
本文主要是将阴影线算法应用于阴影绘制,达到提高艺术效果的目的。
同时为能够使运算速度满足实时绘制的要求,采用了现代可编程图形显示硬件加速功能并使用微软的高级着色器语言(HLSL)实现了相应算法。
5.1场景绘制
这里的场景绘制采用了EmilPraun等人提出的阴影线算法。
算法原理是构建出一组2D的具有铅笔画效果的TAM(TonalArtMap)(如图1所示),利用GPU计算3D模型上某点的光照值,并据此选取TAM中的相应纹理进行混合生成3D铅笔画效果。
具体实现过程就是在顶点着色器中,通过光照方向和顶点法向量计算该点的受光亮度,然后通过这个亮度值决定使用六幅TAM纹理的权重,并记录下来。
[14]在像素着色器中,根据相应的权重值取得相应纹理的颜色,最后再合成起来。
5.2阴影绘制
5.2.1采用阴影图算法
阴影图其实就是一个浮点纹理,让观察点位于光源位置,然后将场景的深度信息渲染到一个纹理图中,就是阴影图。
当场景被渲染时,每个像素和光源的距离要同保存在阴影图中的对应距离进行比较,如果它们相等,则说明该像素没有位于阴影中;
如果阴影图中的距离小,则说明该像素位于阴影中,此时,就相应更新该像素的颜色为阴影显示颜色。
具体地说,首先在顶点着色器中将顶点坐标通过观察变换、投影变换转换为屏幕坐标;
像素着色器中根据深度值Z和齐次坐标W计算摄像机位于光源位