基于虚拟现实技术的自行车漫游系统的研究与实现
虚拟环境中的每个物体包含形状和外观两个方面,用于存储虚拟环境中几何模型的模型文件应该能够提供这两方面的信息。同时还要满足虚拟建模技术的三个常用指标——交互显示能力、交互操纵能力、易于构造的能力对虚拟对象模型的要求。Open GL中很容易实现模型的各种变换、着色、光照、纹理、交互操作和动画,但是它只能提供基本几何元素的造型函数,使得复杂模型的建模相对困难。3DMAX等三维图形建模工具能方便建立各种复杂特体模型,但是很难进行程序控制。因此,笔者在3DMAX等工具中建立好复杂模型后,在Open GL中实现对其方便控制和变换。
本系统(VR-BWS)软件部分需要享用多种公开三维格式文件数据,同时还要与数据库相关联,VR-BWS数据流图如图2示。
2.3.2 三维模型的实时显示
在3DMAX等建模工具中建立好复杂模型后,可以用多种文件格式存储。考虑到Open GL提供了最基本的由多边形构造三维模型的方法,故以三角形网络方式存储。VR-BWS的软件部分是基于面向对象技术。三维图形类、渲染场景必不可少的属性类如:颜色类、纹理类、材质类、光源光等均采用面对象方法对Open GL函数进行封装(如图3所示),软件的各个组成模块使用OCX控件和COM作为标准接口。这样既可以大大节省开发时间,又能提高渲染速度。
虚拟现实最重要的特性是人可以在随意变化的交互控制下感受到场景的动态特性。而提高显示性能的技术包括硬件和软件两个方面。在硬件方面,采用了高速的DSP芯片进行数据的实时采集和传输;软件方面建立了多线程、非阻塞的漫游框架,并采用了以下方法来提高场景画面的刷新速度。
(1)双缓存机制。也为显示器建立两个视频缓冲区,一个用于后台刷新屏幕,一个用于前台绘制。当需要更新时,切换这两个缓冲区,将原来作刷新用的缓部区用于绘制新的帧,同时将原来作绘制用的缓冲区用于刷新显示。场景越复杂,采用双缓存机制时间优越性就越能得到体现。而且采用双缓冲机制可以解决画面演示过程中严重的“闪屏”现象。
(2)LOD(Level of Detail)细节层次技术。根据两种不同的判断来选取细节层次不同的模型:一是距离远近,离视点近的物体采用较高精度绘制,离视点远的物体则用较低精度绘制;二是通过自行车的速度设定不同的阈值,根据阈值选取不同精度的模型,然后通过平滑过渡技术来显示。
(3)实例技术。场景中经常需要多个相同的虚拟物体,如完全相同的树木等。对于这类需重复出现的特体,利用Open GL库中的显示列表功能,将其分别定义为单独的显示列表,预先生成三维实体;再通过几何变换得到其它位置的特体。在图形显示时,只需调用所需的显示列表即可显示相应的三维实体,大大节约内存从而提高图形显示速度。
(4)预处理技术。对一些复杂的场景模型,如路两旁的高层建筑等,在预处理阶段,只计算出显示在观察者视野范围内的场景并存放起来,在动态显示时就无需对不可见的物体及落在所定义的观察空间之外的物体进行绘制,从而大大减少在动态显示时对可见性的测试和计算。
(5)用二维纹理代替三维模型。对漫游场景中非常复杂的细节上的物体如山坡上的植被等,若用三维模型表示,将需要大量的多边形,但实际动态显示时,没必要把它们表现得十分精确,所以使用二维纹理代替三维模型。其方法是将复杂特体的图像粘贴在一个平面上并放置在场景中,在三维复杂场景的实时显示时,令该平面的法向始终指向观察点。这样,就形成了这些复杂物体随着观察方向的改变而转动,提高了场景显示的实时性。
3 立体显示技术
三维立体显示技术虚拟现实的关键技术之一。要实现三维景观的立体显示,首先必须得到符合三维特征的立体图像对。左右片对的生成可以按照以往传统的单目三维图形生成方法分别生成,即先计算左右眼的视点向量,并分别进行视点变换及首色处理,可取得左右眼的图像。但由于左右片对图像的相关性很强,物体在左右图上通常只有一个视差d,而其色彩与亮度值相差很小,可以利用这一点实现立体片对生成的快速算法。
假设场景中任意点F(x,y,z)在左右片对中分别成像为P1(xl,yl)、Pr(xr,yr),则可得:
javascript:window.open(this.src);" style="cursor:pointer;"/>
其中L代表左右焦点之间的间距,f代表焦距,d代表两眼的视差。首先分别计算得到左右眼的视点向量及其变换矩阵,而后在生成右眼图的同时,利用式(2)计算左眼图。在这一过程中,对离视点近的特体不采用式(2)计算,而用分别计算方法生成。这样可以使生成的左右片对既不失真实性,又具有快速性。
采用幅分割法进行立体显示。当显示器进行逐行扫描时,将左右图像按幅序交替显示,在计算机屏幕前用液晶方式实现图像分像,通过使用液晶眼镜并利用人眼的视觉延迟就可以获得立体视觉。立体监视器显示图像的刷新频率的高低直接关系到图像的稳定性,即所显示图像是否会出现闪烁现象。采用刷新频率为120Hz的监视器,使左、右眼视图的刷新频率保持60Hz。在本文中,水平方向采用不同视线参数的两幅透视图像的实时显示是通过软件控制实现的。
4 试验结果及结论
本文实验硬件配置为Pentium IIII 2.4GHz CPU,内存2GB,硬盘80GB,立体显示卡为Quadro4 750XGL128MB,健身车选用豪华避震式大飞轮,采用刷新频率为120Hz的优派21寸纯平显示器,配备装有红外线发射器的有源立体眼镜。操作系统为Windows 2000。立体图像生成软件和立体显示接口软件用Visual C++ 6.0编写,三维图像标准采用Open GL,三维建模工具采用3Dmax和ArcInfo8.0.2。根据本文所论述的原理和方法。成功设计并实现了基于微机平台的自行车三维景观立体漫游系统。实验表明,本系统能较好地模拟人在实际环境中骑车的感受。上述设计的原理和方法可以用于跑步机、划船机等许多方面。