1 引言
虚拟现实技术是二十世纪末才兴起的一门崭新的综合性信息技术,它融合了数字图像处理、计算机图形学、多媒体技术、传感器技术等多个信息技术分支,并且可以逼真地模拟人在自然环境中视觉、听觉、触觉及运动等行为的人机交互技术,其应用领域和交叉领域非常广泛。然而考虑到虚拟现实和交互式可视化等交互式图形应用系统要求图形生成速度达到实时(尤其是大规模的场景绘制),而计算机所提供的计算能力往往不能满足复杂三维场景的实时绘制要求,因而研究人员从软件着手(减少图形画面的复杂度)提出多种图形生成加速方法,而 LOD模型就是在虚拟现实技术中经常被采用的一种加快图形生成速度的主要方法。本文就是利用LOD模型在计算机上精确的重构了地理信息,实现具有真实感的三维地形。
2 LOD技术概况
在运用虚拟现实技术对大规模场景进行绘制时,常见的做法是用大量的三角面片来描述场景中的几何模型,随着描述场景的三角形面片的数目的增多,所绘制的图像质量会越来越高,但是绘制速度也会变得越来越慢,有时甚至会因为绘制的场景过于复杂而出现场景漫游不流畅,画面跳变等现象,这些现象都会严重影响实时绘制的效果。为了解决这一问题,从20世纪90年代初开始,研究人员就在这方面展开了大量工作,而多层次细节(Levels of Details )模型技术就是在这样的情况下提出并发展起来的。
2.1 LOD的基本原理
LOD技术作为虚拟现实技术中的图形生成加速方法,其基本原理是:在不影响画面视觉效果的条件下,通过逐次简化景物的表面细节来减少场景的几何复杂性(即对景物的细节部分用恰当地选择细节层次模型能在不损失图形细节的条件下加速场景显示,提高系统的响应能力。选择的方法可以分为如下几类:一类是侧重于去掉那些不需要用图形显示硬件绘制的细节;一类是去掉那些无法用图形硬件绘制的细节,如基于距离和物体尺寸标准的方法;另一类是去掉那些人类视觉觉察不到的细节,如基于偏心率,视野深度,运动速度等标准的方法;此外还有一种方法考虑的是保持恒定帧率。
3 利用LOD技术进行大规模三维地形的绘制
3.1 数据预处理
在进行三维地形绘制之前,我们首先要对已有的原始高程数据进行处理。本文所采用地形高程差数据是按照一维矩阵格式存储,各个数据空间信息以一种隐含的关系给出。在规则的矩形网格中,数据按照从北到南,从东到西顺序存放。如图1所示,数据在一维序列中的位置与经纬度的关系为:
图1
由于以文本格式存储的原始数据数据量较大,为了缩短数据预处理的时间开销,所以本文采用内存映射的方法来打开文件,将文本格式的原始数据转换为二进制格式存储的数据文件,并且以二维数组的形式存放,以便于计算机在实时绘图过程中调用数据。
3.2 LOD建模的方法
所谓的LOD建模,其实质就是采用一定的算法思想将原有的网格地形数据进行重组,得到一种更加便于实时绘制使用的数据结构。现在应用比较广泛的LOD建模方法有:基于二叉树的LOD建模,基于四叉树的LOD建模,基于八叉树的LOD建模。本文所采用的是基于四叉树的LOD建模方法。
3.2.1 基于四叉树的LOD建模方法
基于四叉树的LOD建模,就是按照一定的评价系统(标准)利用四叉树这种数据结构方式对原来的网格数据进行重新划分和组合。
3.2.2 网格地形的四叉树分层
在利用四叉树方法进行LOD建模的过程中,其关键就在于怎样对原有的网格数据进行四叉树分层。本文所采用的四叉树分层方法是:从整个完整的地形出发,递归的把地形不断的分割(Sub-divide)成相等的四个区域,分割的深度越大,则得到的分辨率越高。如图2所示是一个地形的四叉树表示,下图中每一个正方形为四叉树的一个节点。每个节点保存了一定区域的信息,包括:经纬度,中心点的高度,边节点的高度等。
图2
在网格地形的四叉树分层过程中,我们还必须建立一个节点评价系统来决定哪一个节点需要被继续进行分割,哪一个节点已经不需要再分割了。这里我们采用两种评价标准,一个是基于视点的节点评价标准,另一个是基于曲率度量的评价标准。对于基于视点的节点评价标准而言,其基本原理就是根据观察者的视点到节点的距离来判断节点是否要被继续划分。例如距离观察者近的地方细节越多,反之则越少。我们可以利用公式(3.1):
L/dn(n为一个可以调节的因子) (3.1)
来判定一个节点何时需要被继续分割,何时被直接丢弃。其中L为节点的中心位置到视点的距离,d为节点的大小, n为一个可以调节的因子,n越大,细节越多。反之则细节越少。当n、d、l满足这个公式的时候,节点需要继续分割。反之,节点就不用继续分割了。而基于曲率度量的评价标准,则是在用三角网格描述物体的表面时,根据曲率来区分表面的一些特征(如地形数据中的峰、谷、脊),以决定三角网格是否需要继续细分。即平滑的区域可以采用较少的大三角片来表现,变化幅度较大的区域采用较多的小三角片来逼近。
3.2.3 四叉树分层的标准
在进行四叉树分层的过程中我们还需要注意以下几点:首先,由于四叉树分层是针对(2n+1)×(2n+1)的规则网格而言的,所以我们所采用的数据格式应尽量满足(2n+1)×(2n+1)的规则网格的要求,即网格数据必须是一间隔均匀的正方形区域。如果网格数据的大小不满足该条件,则需要扩展其几何图形,让其大小尽可能接近(2n+1)×(2n+1),扩展部分的像素用空值填充。其次在四叉树分层过程中,还必须满足以下规则,即四叉树中相邻的两个节点的层次最大不能相差1,否则在LOD模型连续拼接的地方就会出现裂缝。图3表示的就是四叉树分层过程中,其中a是合法的分层,b是非法的分层。
图3
3.3 网格的渲染
地形网格的渲染最终是通过一个递归的过程来实现的。首先对整个四叉树进行深度遍历,确定当前视点所在的网格,然后从当前网格所在的节点(可能是整个四叉树的根节点也可能不是)一直遍历到四叉树的叶子节点(即一个节点不再被分割的时候),当遍历结束时再将当前网格的所有节点数据信息存储起来。之后,利用OpenGL中的glBegin (GL_TRIANGLE_FAN)函数把这些节点所组成的三角片绘制出来,形成用三角片连接起来的三维地形,网格渲染的效果图如图4所示。
图4
4 结束语
LOD技术具有广泛的应用领域。目前在实时图像通信、交互式可视化、虚拟现实、地形绘制、飞行模拟、碰撞检测、限时图形绘制等领域都得到了广泛的应用,并且已经逐步成为提高图形绘制速度的一项关键技术。很多造型软件和VR开发系统都开始支持LOD模型表示。随着气象三维动态预报分析技术的兴起,LOD技术将会更多的运用到模拟复杂气象要素的可视化中去。本文采用四叉树算法建立的动态LOD模型,在VC/OpenGL开发平台上绘制具有真实感的三维地形图,在图形生成质量损失较小的情况下,较好的保证了地形的生成速度有了较大的提高。因而LOD技术在气象和战场仿真的大规模绘制,尤其是在实时场景绘制方面有着较为广阔的前景。
参考文献
1 唐泽圣. 三维数据可视化[M]. 北京:清华大学出版社,1999
2石教英.虚拟现实基础及实用算法. 科学出版社,2002