虚拟实验室导览系统的关键技术研究

2009-02-18 09:11
现代教育技术 2009年1期
关键词:虚拟实验室

张 勇

【摘要】虚拟现实导览系统除了能实现实时交互、顺畅浏览外,还应具备场景内空间对象的信息查询功能。探讨了采用 VRML 技术构建综合型虚拟实验室的一般流程、空间对象的场景数据组织、空间网格对场景的分割方法以及浏览时的场景分割与优化。 以综合型虚拟实验室为例,实现了基于空间网格分割的信息双向查询,并给出了具体实现结果。

【关键词】虚拟实验室;导览系统;场景分割;信息查询

【中图分类号】G40-057 【文献标识码】B 【论文编号】1009—8097(2009)01—0129—04

引言

随着虚拟现实技术的发展,虚拟实验室在实验教学中得 到了越来越多的应用[1][2]。如何让更多的学习者了解和应用虚 拟实验室,已成为虚拟实验导览系统建设中的重要环节。为 了丰富和完善导览系统的功能,我们开始了综合虚拟实验室 实时导览系统的研发,设计并实现了虚拟实验室实时导览系 统原型。21 世纪信息最具代表性和发展前景的三种新技术是 多媒体、网络和虚拟现实,而这种技术的交叉点是虚拟现实 建模语言 VRML(VirtualRealityModelingLanguage)[3]。 VRML 是第二代 Web 上的关键技术,是一种三维场景的描述 性语言,也是在 Internet 网上实现虚拟现实的关键性技术。其 基本原理是用文本信息描述三维场景,在 Internet 网上传输, 经由本地机上的 VRML 浏览器解释生成三维场景,解释生成 的标准规范即是 VRML 规范。正是这种思想,使得在 Internet 上通过传输很少的数据就可浏览三维虚拟场景成为可能[4]。

可交互的实时浏览和信息查询是虚拟导览系统的基本功 能。纵观现有的虚拟现实导览系统,虽然不乏优秀的范例, 但均不同程度的存在着浏览的顺畅性及导览功能不强等问 题,特别是场景中空间对象的信息双向查询功能,未能引起 足够的关注和重视。基于二维电子地图的信息查询虽然也能 实现导览功能,但距人们所期望的自然、习惯的查询方式尚 有差距。一个综合型虚拟实验室系统包含众多的对象,如何有 序地组织场景对象的空间数据?如何在保证绘制真实的前提 下实现实时顺畅浏览?如何实现空间对象的信息双向查询? 本文以综合型实验室的导览系统为范本,重点探讨中大型虚 拟场景的空间网格分割、场景调度以及信息双向查询等问题。

一 总体设计

设计和开发综合型实验室导览系统,需要完成场景建模、场景优化、场景及对象的交互设置,以及场景的网上发布,可以借助 AutoCAD、3DS Max、VRML 等开发工具和技术来 完成。开发流程如图 1 所示。其中,开发的关键环节是场景 网格分割、场景数据的空间组织、交互式空间属性信息查询 以及浏览时的场景调度。

二 场景组织与分割

对于大中型的虚拟场景,若用单个 VRML 文件来组织, 则将导致文件量偏大,易造成下载时间冗长,解释绘制、漫 游、交互及信息查询比较困难。在具体的创建过程中,可采 用编组节点创建嵌套层次、按实际空间关系组织 VRML 文件、 使用内联节点及创建嵌套内联等方法实现对场景 VRML 文件 的有序及合理组织以加速绘制;采用代码重用(DEF/ USE)、 原型(PROTO)封装以及 LOD 技术以减少文件量。

为了便于浏览时的场景调度、减少信息查询时的计算复 杂度,采用空间网格的方法,即将场景分割为 M×N 的空间 网格,每个空间网格的大小为:X 方向,50 个 VRML 单位; Z 方向,20 个 VRML 单位;Y 方向则与摄像机的 Y 方向高度 相同。采用相同大小的空间网格来划分场景,优点是能保证 浏览器每次调入和退出的场景区域大小相同。缺陷是空间网格的文件量大小不完全一样,因为每个空间网格所包含的对 象数量及复杂度不同。

三 虚拟实验室的空间数据库组织

综合型虚拟实验室是一个规模较大的三维场景,导览系 统的设计目标,旨在为用户提供可交互的、实时的场景漫游, 以及对各个不同实验室的相关信息查询,目的是通过网络展 示和宣传实验室的建设成就和整体风貌(本文以浙江师范大 学现代教育技术实验中心为例)。考虑到真实反映实验中心的 实际情况,对实验中心内的各个对象进行建模,包括实验大 楼的外观及内部的走廊、门窗,以及实验室内部的实验台、 相关实验设备、多媒体教室、演播厅等等。通过对这些对象 的建模构建出虚拟实验室的框架。

为了便于场景数据的调用及减少查询计算时的遍历次 数,虚拟实验室空间数据库的逻辑组织结构通常根据场景 对象的实际空间关系来组织。图 2 为虚拟实验室场景的逻 辑框图,也是空间数据库的逻辑组织框图。图中有几点须 加以说明:

(1) 虚拟实验室主场景是指进入实验大楼门厅的场景, 也是整个浏览的初始场景。

(2) 特效(Effect)是指场景中的 Sound节点、Light 节点、Fog 节点等;感知器(Sensor)是指因场景交互需要, 设计时安排 在场景中的 TouchSensor 、 CylinderSensor 、 TimeSensor 、 PositionInterpolator 、 ProximitySensor 以及 VisibilitySensor 等节点。这些特效和感知器用于丰富场景的表 现、实现场景的交互设定,它们与场景中由 Group 或 Transform 节点组织起来的每个楼层(包括走廊及门窗)造型、单个实 验室造型,实验室内部的实验台、座椅、相关实验设备等等, 共同构成了一个完整的虚拟实验室场景。

(3) “支持实验室对象的底层信息”是指与各个实验 室对应的属性信息。这些信息包括实验室名称、实验室负责 人、实验项目、服务对象等等。

空间数据库的两个重要特征是拓扑关系和复杂对象,而拓扑关系和复杂对象的表达要求层次结构和对象嵌套,并且涉及一对多的关系。如,VRML 中用于创建三维对象的造型 Shape 节点、Group 节点、Transform 节点等等。这种一对多 的对象嵌套关系,显然不能用关系数据模型直接表达,因为用关系方法处理空间数据效率是不高的。目前,大部分商用 的虚拟现实系统都将空间数据直接用文件方式表达和管理。 我们在虚拟实验室的应用开发中也采用这一方法。

四 空间对象的信息双向查询

在本系统中,我们将显示于虚拟世界中的每一个实体都 看作对象,一个复杂的实体对象可抽象地分解为若干个相对简 单对象,换言之,若干个相对简单的实体对象能组合成为一个 更高层次的复杂对象,每一个对象都有其自身的性质和相对应 的功能,以及区别于其他对象的标识(OID)。这样,系统在进 行查询时,根据用户所提出的查询条件,通过 OID 搜索管理器 搜索满足条件的对象的 OID。一旦获得了某个复杂对象的 OID, 就等于得到了与此对象相对应实体的全部信息。

1三维对象的捕捉

利用面向对象数据结构对空间实体对象进行三维模型重建,经过几何、投影变换、确定光照模型、纹理映射等一系 列步骤后,即可实现三维透视图的显示。三维对象的捕捉是 在计算机屏幕上实施的,而计算机屏幕是二维的,在二维计 算机屏幕上点选图形,选取对应的空间实体对象,则是三维 图形显示的逆过程。要在三维透视图上捕捉空间对象,首先 要根据投影变换的原理解算鼠标所选取的屏幕点所对应空间 点的空间坐标,其实质就是透视投影成像的逆过程。即从该 屏幕像点出发,逆向投影光线得出对象点(第一个交点)的空间 位置坐标[5]。

根据计算机三维图形学的知识,某—空间对象点 P(X, Y, Z)经过几何和投影变换后显示在计算机二维屏幕上所对应的 平面点 p′(x,y)除了具有平面坐标(x,y),还包含一个重 要的信息,那就是深度值 z_buffer,所以平面点应表示为 p′(x, y,z_buffer)。只要我们获取平面点的 z_buffer 值和图形显示时 的几何和投影变换逆矩阵,就可通过逆矩阵的作用,根据计算 机屏幕坐标系上鼠标点击处的二维坐标 p′(x,y,z_buffer), 求出对应的三维空间坐标 P(X, Y, Z)[6]。

2建立网格索引表

在三维场景中进行信息的查询和分析,需在交互方式下,利用鼠标点击需要拣取的对象,根据三维透视投影变换关系, 将鼠标的屏幕坐标解算为空间坐标,从而根据坐标匹配拣取 出所要查询的对象。在场景比较大、场景中数据较多时,如 果遍历数据库中所有对象数据以拣取所要查询的对象,则将 耗费较长时间,减慢信息查询的速度。因而查询系统需建立 场景的索引表,以提高对象检索速度。在此将整个场景划分 为一个 m 行 n 列的矩形格网,每一格网对应着区域检索表的 一行(如图 3 所示)。

因为每一格网所包含的场景对象的个数是不确定的,如果区域索引表的每一行长度是固定的,则每一行设置长度过 长,必然有大量的单元空置无用,造成内存空间的浪费;如 果设置长度过短,当一个格网区域中的场景对象较多时就容 纳不下。

分配 m×n 个存储单元对应 m 行 n列格网,每个存储单元存储该格网内的第一个对象的指针, 而在系统读取其他对象的数据时,除了为每个对象数据分配 存储空间,同时为该对象设置一个后向指针,该指针指向同 一格网内的下—个对象,从而将一个格网内的所有场景对象 按指针链接起来。

在建立起场景对象数据的区域索引表后,如果要查询某 个对象的信息,只需在一个小区域内搜索该对象,避免了遍 历整个场景对象数据而造成的时间损耗。当然,索引表的建 立也消耗了一定的存储空间,另外区域格网大小的划分要根 据场景对象数据的具体情况而定。如果每个格网区域划分过 大,则失去建立索引表的优越性;如果每个格网区域划分过 小,又会出现一个较大对象占据过多格网区域的情况,造成 存储空间的浪费。这里以真实的实验室作为网格的划分依据。

3确立空间对象外接盒

一个复杂空间对象通常是由若干简单空间对象所构成,每个相对简单的空间对象又是由若干三角面构成的,每个三 角面包含三个顶点。如果要选取场景中的空间对象,一般是 根据鼠标点选的坐标与数据库中对应分块区域所有空间对象 的坐标进行匹配;如果鼠标点选的坐标包含于某一空间对象 的坐标点集,则认为选中的是该空间对象。

由于复杂的空间对象是由相当多的三角面构成,因而构 成它的顶点是非常多的,如果将每个空间对象的所有顶点都 与鼠标点击坐标进行匹配,这会造成过多的计算量,从而影 响对象选取和信息查询的速度。为此,我们为每个实验室对 象建立空间外接盒(如图 4 所示),这种外接盒设计为一个长 方体,各个面与实验室的相应各面相切。在选取空间对象时, 只需判断鼠标点选的坐标是否位于实验室对象的空间外接盒 内,从而决定是否选中对象。

4属性数据向空间数据的查询

在完成场景分割和空间外接盒等工作后,就可实现属性数据向空间数据的查询了。首先,给出一定的查询条件,通 过 SQL查询操作在属性数据库记录中搜索出满足条件的记 录,然后通过 OID 与空间数据库中的空间对象关联,以一定 的与其他对象相区别的显示方式将这些满足条件的对象显 示。查询流程如图 5 所示。

5空间数据向属性数据的查询

用户通过鼠标等交互工具选取三维场景中的实体对象,通过 ODBC 引擎搜索空间数据库,提取所选择对象的 OID,然后 根据 OID 查找属性库中该对象的属性记录,并将该记录输出显 示,使用户获得所感兴趣的信息。查询流程如图 6 所示。

五 实现结果

根据上述讨论的相关技术及方法,实现了虚拟实验室三 维场景中对目标对象的实时信息双向查询。具体如下:

1由属性信息查询空间位置

在查询输入框中选择实验室名称,如图 7 所示。

单击“查询”确认后,系统根据属性信息用内联节点(Inline)调出查询结果,界面就被切换到被查询实验室的内 景,给出如图 8 所示的场景显示。

2由空间位置查询属性信息

当鼠标落在计算机网络实验室所在区域并单击右键时,实验室的属性信息,如实验室名称、实验室负责人、实验项 目、服务对象等,将在弹出的对话框中显示,如图 9 所示。

实验室内部浏览,只要单击门上的任意位置,门打开后即可进入室内浏览。

六 结束语

真三维的图形显示能给用户的感观带来全新的体验。我 们所设计的虚拟实验室导览系统,除了实现视点的前进、后 退、左右水平旋转、仰视、俯视,以及背景音乐开关控制等 漫游的基本功能外,还实现了属性数据与空间数据之间的双 向查询,使得导览系统具有更好的交互性和友善性,也使得 虚拟实验室的使用变得更加简单、直观和方便。下一步的工 作,将在现有工作的基础上,进一步改善浏览的顺畅性问题, 使综合型虚拟实验室更好地为广大师生和不同层次的学习者 服务。笔者所采用的设计和开发方法,希望能为同类实验室 和学习系统的开发提供一种新的思路和启迪,籍此共同促进 实验教学的改革。

参考文献

[1] Rajkumar Buyya, KimBranson, Jon Giddy and David Abramson. The Virtual Laboratory: a toolset to enable distributedmolecularmodelingfordrugdesignonthe World-Wide Grid [J]. Concurrency Computer: Pract. Exper.2003, (15): 1-25.

[2] Chen Yao-chon,Naughton J M.An undergraduate laboratory platform for control system design[J].IEEE Control Systems Magazine,2000:12-20.

[3] 黄铁军, 柳健译.VRML 国际标准与应用指南[M].北京:电 子工业出版社, 1999:1-10.

[4] Sandy Ressler. Using VRML to Access Manufacturiag data[EB/OL]

[5] 徐青.地形三维可视化技术[M].北京:测绘出版社, 2000.

[6] 陈国华. 三维连续图形变换的一类算法与实现[J]. 中国图 像图形学报, 2001,6 (12): 1240-1243.

猜你喜欢
虚拟实验室
网络虚拟实验室的设计
构建中医院校基础医学实验教学虚拟实验室
基于物联网的图形化虚拟仿真实验平台设计
虚拟实验室在食品专业仪器分析实验教学中的应用
虚拟实验室在生物实验教学中的应用
电子技术仿真设计系统探究
基于VR的农业虚拟实验室设计和研究
合理使用虚拟教学手段,促进高等教育的教学质量
单片机原理与应用教学探讨