首页 > 范文大全 > 正文

真实感图形应用技术

开篇:润墨网以专业的文秘视角,为您筛选了一篇真实感图形应用技术范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:本文分析了生成计算机真实感图形的主要技术:浓淡模型,光线跟踪,纹理生成和阴影处理。

关键词:真实感图形 浓淡模型 光线跟踪 纹理生成和阴影处理

引言

使用计算机图像技术,生成高度真实感图形在当前是计算机技术的一个热门领域。真实感显示广义指显示或给出的图形具有某种真实感。实行的方法有:对物体进行轴测投影、透视投影,对物体消除隐藏线和隐藏面等。狭义指使计算机能产生像照片那样的黑白图像和彩色图像,甚至产生真正三维的立体图像。这种显示又称高度真实感显示,产生的是仿真效果。它的物质基础在于高度发展的光栅显示技术。

实际的需要使得真实感图形的显示在应用中具有重要的意义,仿真显示在作战模拟、仿真训练方面起到不容忽视的作用。真实感动画的制作可以生成灵活生动的各种故事和场景;美观的产品造型、包装设计图案、艺术广告、装饰画等,在计算机辅助设计和制造中,对图形的高度真实感的要求也越来越多,图形显示经历了从线架图、消隐的线架图、浓淡图到带阴影的浓淡图及带纹理结构的更细致和更趋于真实图形的发展过程。下面介绍几种常见的技术。

一、浓淡模型

三维实体的透视图经过消除隐藏线面处理之后,就要用明暗度公式来计算和显示该形体可见面的亮度和颜色。明暗度公式必须采用光学上的光线反射原理去模拟物体表面的光效应,这样才能使三维形体的表示达到较高的逼真性。因此,明暗度公式应包含两个基本要素:表面特性和光照在表面上的照明特性。表面特性主要是指表面的反射性和透明性,而照明特性则包括光穿过表面并被吸收,然后重新发射出来的漫反射光以及由物体的外表面反射所产生的镜面反射光特性。三维景物图形产生的通真性很大程度取决能否成功地模拟浓淡或明暗效应。从理论上讲,表面反射有两种极端的情形:一种是镜面反射体,另一种是粗糙表面的理想漫反射体。事实上,绝大多数表面既不是理想的镜面反射体,也不是理想的漫反射体,而是兼而有之。因此,反射模型应由三个部分组成:泛光照射,漫反射和镜面反射。泛光照射是指光线是从周围景物散射出来的,而且在表面上各方向的反射是相等的;漫反射是由从点光源发出来,但相等地散射到各方向的光组成;镜面反射代表高光效应,即光线集中在入射光线的入射点周围,高光效应的颜色和光源的颜色相同。

浓淡处理有两种经典的算法:(1)Gouraud方法:H.Gouraud在1971年提出曲面的连续性生成浓淡的方法。将曲面用多个多边形来通近,并保存多边形的各顶点处的真正表面的法矢量。当多边形被渐次地转换为像素时,在每个顶点处取的正确的颜色被计算,这些值沿多边形进行线性的插值。Gouraud法有较好的浓淡效果,但是对多边形的通近情况会强烈地影响由镜面反射而形成的高光反射形。(2)Phong方法:BuiT. Phong和F. C. Crow在 1975年提出了曲面多边形的改进绘制算法。将沿扫描线光强作线性插值的Gouraud方法改进为:沿扫描线对法矢量作线性插值。然后按光照模型计算各点的光强。Phong的浓淡处理方法计算量大,但可解决Gouraud法所遇到的许多问题。Gouraud法和Phong法都通过由多面体逼近曲面的思想求得了曲面的仿真显示,对透明体的浓淡处理还需采用专门的方法,因为经典的光照模型和浓淡处理方法都假定到考虑的物体表面是不透明的,入射光线在透明体上发生反射和透射,透射也分为规则透射和漫透射。由Newell和San-cha提出的透明算法不考虑折射的影响,是一个最简单的透明算法:对透明的多边形或表面注以标记,若可见面是透明的,则取它与同它相距最近的另一表面光强的线性组合,并将所得光强值写入帧缓冲器,并递归地进行此算法直至遇着一个不透明的面或背景。

二、光线跟踪

许多研究集中于光学效应和光线跟踪上,研究方向主要包括透明性造型、折射造型、反射造型及使用透镜的照像机模型。光线跟踪是由Whitted在1980年为浓淡显示提出的改进照明模型中引进的,是对Appel和Goldstein、Nagel在三维可视仿真问题中使用的光线投射的改进。在光线投射中,光线从眼中出发,经过像素进入世界,光线和世界中的物体最近的交点决定了可见的面,而Whiffed在交点处又加了两条光线路径,分别沿反射方向和折射方向,这样可以精确地为反射和折射面的变形进行造型。

光线跟踪的算法基本思想是:观察者能够看见景物是由于光源发出的光照射到物体上的结果,其中一部分光到达人的眼睛引起视觉。到达观察者眼中的光可由物体表面反射而来,也可通过表面折射或透射而来,若从光源出发跟踪光线,因只有少量的光能到达观察者的眼睛,处理的效率太低,所以按反途径进行光线跟踪,即按从观察者到景物的方向。在简单的光线情形下,假定画面中的景物均已变换到图像空间,光线从观察者出发,通过光栅中像素的中心进入画面,然后沿光线路径进行跟踪以决定它与画面中的哪一物体相交。每一光线均需与画面中的每一物体进行比较,如果相交,则需求出该光线与物体的所有可能的交点,具有离观察点最近的交叉对应的面为此像素的可见面,再由光照模型可确定该像素处的显示值。完整的光线跟踪算法中用到的光照模型,除了要考虑直接来自光源的光线外,还要考虑由于其它物体的反射或折射传来的光线。

光线跟踪法生成图像的逼真度高,能反映出物体表面的光滑程度、透明性等,成为生成真实感图形最有效的方法之一。但光线跟踪法运算量和存储量巨大,算法十分费时,近年来许多工作都是围绕提高光线跟踪速度展开的,以期能调和图形的实时性与真实感之间的矛盾,解决光线跟踪的关键在于提高射线(光线)与物体求交的效率。提高求交效率的途径不外乎下面两种:一是尽量简化求交运算本身。即对一个给定的物体和射线,能够快速判断两者是否相交,如果相交,应能快速地求出交点。二是尽可能减少参与求交的物体数。场景的物体数目是一定的,但对于给定的射线,如果能迅速给出可能与它相交的物体或排除不与它相交的物体而不是逐个地进行求交运算,则求交效率自然大大提高了。

光线跟踪的两大缺点在于费用昂贵和有走样现象,对光线跟踪的研究主要有四个方向:(1)对不同的物体求取交点的算法;(2)扩展光学效应的范围,用光线跟踪捕获更多的光学效果;(3)反走样技术;(4)降低测试交点的次数。早期研究都集中于迅速在光线和复杂物体之间求取交点。

三、纹理生成

纹理生成是计算机图形真实显示技术中的一个重要内容,三维实体的真实性显示在很大程度上取决于对纹理的模拟。传统上,纹理处理技术是采用二维纹理映射的方法,假定纹理定义在纹理空间上,而曲面定义在另一个参数空间上,则通过一一映射将二者联系在一起,利用此方法可以将某些纹理图形映射到曲面上。在产生纹理映射过程中利用绘制点与纹理表的对应关系,得到相应的纹理值,在对应以外的点处的纹理值则通过对纹理表进行相应的插值得到相应的纹理值。这种方法简单,计算量小,查找方便,但在一些情况下将会产生失真:纹理效果多边形可能只占屏幕的很小一部分,使得同一个像素上有许多纹理点。

Blinn和Newell通过使用一个标志滤波器改进了上述技术。Feibush,Levoy和Cook则推出了Gaussian滤波器,但是计算很昂贵。Wiuiams提出的滤波机制虽然并不如其他方法精确,但计算纹理是最快的了。他在不同的分辨率下保存纹理的备份并采用最合适的一个。Crow使用一张预计算表来存储整个纹理映射,使得滤波能在常效时间内完成,Norton,Rockwood和Skol-moski提出把纹理映射作为一个解析函数,预先计算光谱频率并无需改变任何高频地去重构此解析函数,从而快速计算纹理,这很适于模糊物体如云、波浪、原野等。纹理在这些物体上并不需要包括许多频率因素。

沿着一个复杂的三维物体,很难在其上包裹一个二维的纹理,这需要定义一个函数,把这个物体的空间坐标映射到三维纹理空间并使用三维空间,不管物体的形状如何,在它表面上的纹理是一致的,当纹理模型与制作物体的材料是一致时,特别有用,因为需要额外的大量的空间来存一个像素的三维数组。Peachey和Perlin提出使用“过程纹理”,但是过程纹理很难进行反走样。

纹理无需包括一个表面上的颜色。存储其他表面特性也可帮助纹理映射增强性能,Blinn提出应把表面法矢扰动存储于纹理映射中,又称颠簸映射。这可以为有折皱的表面产生逼真的模拟(通过高光正确地与表面的颤动匹配的方法)。Gardner使用解析纹理来修整椭球体的表面边界,以模拟树和云的形状。纹理技术在环境映射中使用也较多,如果物体是闪闪发亮的,那它的表面可以反射其它同在环境中的物体。计算这些反射是昂贵的,但纹理技术就可以把从一个视点看去的环境的近似图景投射到球体、圆柱体或长方体上,并把这投影存在一个纹理映射中。然后,当我们为一个点造浓淡时,在反射的方向进行纹理采样即可。

四、阴影处理

阴影显示在计算机合成图像上表示真实性的过程中起到了重要的作用。当观察方向与光源方向不重合时,就会出现阴影,它使人感到画面上景物的远近深浅,从而极大地增强了画面的真实性。

阴影算法的复杂程度与光源的模型有关。这包括光源的类型和位置的情况。阴影处理的算法很容易和光线跟踪模型结合为一体,假定光源(或多个光源)向量L在其路径上不被任何物体阻挡,如果L被阻挡,则当前表面点处于阴影中要确定其他物体是否处于L的路径上,方法是建立一条从当前点到光源的附加光线,这条光线称为阴影测试线。如果一个完全不透明的物体是处在阴影路径上,则把光线交点的亮度值减少至环境光照值;如果相交物体是半透明的,则计算出光线交点的亮度值,这时仍把L当作一个常向量(光源在无限远处)已不合适。所谓阴影测试线只是其方向就是L方向的那些光线,如果阴影测试线与半透明物体相交,则它应被折射。但是,计算方法比较复杂,阴影测试线在初始阶段是作为表面交点与光源之间的直线计算的,这项计算较简单,但要从这一点到光源的光线进行跟踪并考虑折射效果,就相当困难了。

随着光源数量的增加,用于阴影测试计算开销会很快占主要地位,因为如果有几个光源,则每个光线与表面的交点会产生几条阴影测试线,对一条阴影测试线的物体交点的开销点对一条主光线的开销是完全相同的。为了减少阴影测试的计算量,Haines和Gree-burg在1986年提出一种使用光线缓存区作为阴影测试加速器的新方法,用这个方法,可使用阴影测试次数减少至1/4至1/30,但它只能处理点光源,且需要很大存储量。

参考文献:

[1]蔡士杰等译.计算机图形学(第三版).北京:电子工业出版社,2005.6.

[2]刘振安等.Windows图形设计基础.北京:人民邮电出版社,1996.4.

[3]彭群生,梁友栋.真实感图形的计算机生成.计算机学报,1989.12(3):226-237.

[4]陈振初、蔡宣平.计算机图形显示原理(软件).国防科技大学出版社,1991. 6月版.