三维虚拟实验系统开发软件的交互方式研究

2009-07-24 08:51李凌云
中国教育信息化·高教职教 2009年6期
关键词:交互虚拟现实

李凌云

摘要:文章对现有的虚拟实验系统存在的问题作了简要分析,指出三维虚拟实验系统研究的意义。对VRML语言及其特点进行了阐述,介绍了开发三维虚拟实验系统中软件的三种常用交互方式,并指出各种交互方式的优缺点。

关键词:虚拟现实 交互 VRML Java Matlab/Simulink

中图分类号:TP311.52 文献标识码:A 文章编号:1673-8454(2009)11-0038-03

一、引言

实验教学不仅能帮助学生形成正确的概念,加深对规律的理解,而且与课堂理论教学相比,实验课程为培养和提高学生的动手能力、研究能力、创新意识提供了较好的途径。因此,实验课程在学科教学中具有不可替代的作用。随着高等教育的普及,对实验资源的需求与目前存在的实验条件不足之间的矛盾日益突出。虚拟实验系统的出现,很好地解决了这一问题。但是,目前现有的虚拟实验系统主要存在以下问题:

(1)呈现方式上以提供实验的文字和图片资料为主。这些文字和图片资料涉及实验原理、实验方法、实验仪器的介绍,学生更多的只是停留在“看”的层次上,这在一定程度上不能激发学生学习的兴趣,不利于实验动手能力的培养。

(2)用户与虚拟实验的交互性不强。虚拟实验系统多以提供实验操作过程的视频和动画为主,主要呈现演示型实验,学生参与实验操作较少。

(3)实验结果多以静态图像形式呈现,这在一定程度上影响了实验者的沉浸感。

虚拟现实(Virtual Reality)技术的发展,为利用虚拟实验系统开展教学注入了新的活力。虚拟现实技术能为学生提供生动、逼真的三维学习环境, 学生作为一名参与者操纵该环境中的实验对象。该虚拟环境具有丰富的媒体表现形式、增强的现实感,这对调动学生的学习积极性, 突破教学的重点、难点,培养学生的技能将起到积极的作用。虚拟现实建模语言VRML(Virtual Reality Modeling Language)是一种用于描述三维物体及其行为的建模语言,它可以构建虚拟世界,并集成文本、图像、音响、MPEG 影像等多种媒体类型。在VRML中虽然可以嵌入Vrmlscript、Javascript 等语言编写的程序代码,但它本身并没有直接和用户进行交互的能力,需要与其他语言结合才能实现三维场景和用户交互的要求。因此,为了构建功能强大的三维虚拟实验系统,有必要对现阶段VRML语言与其他软件的交互方式进行探讨。

二、虚拟现实建模语言及其特点

VRML是一种三维场景的描述性语言,使用它能在Web上创建可导航的、超链接的三维虚拟现实空间。虚拟现实建模语言的出现,改变了Web页面限于二维空间的表达方式,创造了交互式浏览的三维空间。VRML并不是用三维坐标点的数据来描述三维物体的,而是用类似HTML标记文本语言来描述三维场景。它以灵活多样的方式将二维、三维图形和动画、影片、声响、音乐等多种效果调和在一起,具有对内的树型场景结构和对外的分布式场景结构,提供了可重用的节点和原型,便于建模。用户在场景中可以根据不同的视点巡视,有很大的自由度。[1]VRML文件包括两大部分,场景描述部分和动态交互处理部分。场景描述部分主要通过造型(shape)结点定义了对象的几何尺寸、材质纹理,通过组(Group)结点将各个对象按一定的结构组织为场景,通过光照及声音结点在场景中模仿对象的自然特性。动态交互处理部分主要通过传感器(Sensor)结点感知用户与对象的交互,插值器(Interpolator)结点实现类似关键帧技术的插值动画,Script结点是VRML与Java、JavaScript等语言的接口,通过Script结点与其他语言的结合,能扩展VRML的功能。[2]VRML有以下特点:

1.C/S的工作模式和平台无关性。VRML的访问方式是基于C/S模式的,其中服务器提供VRML文件及图像、视频、声音等支持资源,客户通过网络下载希望访问的文件,并通过本地平台上的VRML浏览器交互式地访问该文件描述的虚拟世界。由于浏览器是本地平台提供的,从而实现了平台无关性。

2.实时3D图形渲染。实时3D着色引擎在VRML中得到了更好的体现。

3.网络传输容易。VRML适合于计算机网络的传输,并不要求很高的网络传输带宽,而且图形生成的工作可以放在性能要求不高的客户机上。

4.VRML具有可伸缩性。首先对于 VRML 浏览器来说,从理论上讲,应能处理由数亿个对象组成的分布在 Internet 上的场景。其次,VRML在高、低档的机器上都应该工作得很好,它允许浏览器为了提高性能而降低图像或仿真质量,而在硬件性能增强时质量可以变得更好。第三,VRML场景可以相对于网络性能而伸缩。

三、三维虚拟实验系统开发软件的三种交互

虽然VRML语言具有以上优点,但由于他本身缺乏直接和用户进行交互的能力, 所以在开发三维虚拟实验系统时,常常需要将他与其他语言相结合。针对目前常用的三维虚拟实验系统开发技术,笔者对三种交互方式进行了分析。

1.VRML与Java交互

VRML作为面向对象的建模语言,长于表达三维物体的静态特征,但其VRML本身不具有与外部交互的能力,它必须和其他语言相结合才能构造出具备交互能力的三维场景。为了实现与外界更复杂的交互,VRML2.0标准提供了两种扩展VRML并和外部程序实现连接的机制,一种是通过Script节点完成复杂的交互过程,另一种是通过外部编程接口EAI实现。

(1)通过Script节点与外部交互

Script节点本身没有任何动作,其动作是由程序脚本来实现的,它是VRML与其他编程语言的接口。内嵌在Script节点中的程序脚本可用JavaScript 和Java 编写,其交互过程是,Script节点通过eventIn接口将事件传至Script节点中的程序脚本;浏览器就立即调用内嵌程序脚本将事件进行处理;被加工的信息由Script节点的eventOut字段将结果送出。

VRML浏览器捆绑了用于VRML编程的Java类包,该VRML类包主要包括vrml,vrml.node,vrml.field,还有一个可以操纵浏览器状态的Browser类。通过调用这些类包,Java程序可以实现与VRML场景的交互。虽然利用Script节点可以实现浏览者与VRML场景的动态交互,但这种交互只能按预先设定的状态进行,如果要在外界与VRML场景之间进行信息交流,Script 节点就显得力不能及了。

(2)通过EAI与外部交互

EAI(External Authoring Interface)是VRML2.0提供的介于VRML世界与外部环境的编程接口,通过此接口VRML场景可以和与其嵌在同一网页上的Java Applet程序进行交互。Java Applet可以监视VRML场景事件,并能够在节点间传递事件,实现VRML节点的动态增加和删除,同时可以在浏览者与VRML场景间传递信息,从而大大提高了外界与VRML场景的交互能力。VRML的EAI接口定义了一套针对VRML浏览器的Java类包,它由三部分组成:vrml.external,vrml.external.field,vrml.external.exception。

EAI在Java Applet与VRML场景进行通讯时,首先需要获取Browser类的实例, 通过调用封装在vrml.external包中的Browser类的静态方法getBrowser( )来实现,在Java Applet中建立Browser对象后即标识了一个VRML场景。Browser类包含获取当前浏览器环境信息的各种方法,其中通过调用getNode( )方法直接获得VRML场景中使用DEF关键字定义的节点对象,调用getEvent In( )、getEvent Out( )方法获得访问节点的入事件、出事件。

众多学者对利用VRML与Java技术混合开发的三维虚拟实验系统进行了研究。如金侠杰等人基于VRML技术与Java技术开发了网络交互式虚拟装配环境;池建斌等人通过VRML外部编程接口EAI及内嵌脚本节点编程,实现了二级圆柱齿轮减速器虚拟拆装系统;吴波等人基于VRML与Java技术在工程设计领域的应用进行了研究,提出一种新型的Web环境下3D交互仿真结构,复杂的运算和仿真在服务器上进行,从而实现服务器端装配模型和客户端显示模型的分离,并在此基础之上提出协同环境开发的系统结构。[3][4][5] 此外,杨雨标等运用VRML与Java技术在微机上进行机器人运动仿真。 [6] 分析以上系统发现,VRML技术与Java技术相结合实现三维虚拟实验系统具有较强的三维立体感和交互性,常用于虚拟装配及其他工程设计领域。

2.VRML与Matlab/Simulink交互

利用Matlab提供的虚拟现实工具箱,可以实现和VRML程序的直接交互。虚拟现实工具箱是Matlab 6.X版新增加的工具箱,能在一个三维虚拟现实环境中进行可视化操作和与动态系统进行交互提供一种有效的解决方案,这些动态系统用Matlab和Simulink来描述。[7] 虚拟现实工具箱拓展了Matlab和Simulink处理虚拟现实图像的能力。使用标准的VRML技术,可以通过Matlab和Simulink环境生成三维场景。

虚拟现实工具箱可以在Matlab接口和Simulink接口两种环境中运行,而Simulink接口更直接、更容易使用,很容易通过图形用户界面进行交互,因而可能是更适合的工作方式。通过Simulink这一接口,可以在一个虚拟的三维模型中观察动态系统的模拟。一旦在Simulink对话框中包含了虚拟现实模块,就可以选择与Simulink信号连接的虚拟世界。所有VRML节点的属性分别列在等级树样式的观察窗口中,可以选择控制的自由度。当关闭接口对话框后,虚拟现实工具箱模块自动更新在虚拟世界中与选择节点有关的输入和输出。当连接这些输入到一定的Simulink信号上时,就可以在一个支持VRML的浏览器中观察可视化的模拟。

使用Matlab的虚拟现实工具箱开发三维虚拟实验系统具有以下特点:(1)利用Matlab虚拟现实工具箱,能够将枯燥的VRML编程变为可视化编程,简化了虚拟场景的设计。(2)Matlab /Simulink是专用的计算软件,在实验数据计算方面表现出极强的优势。(3)通过Simulink接口,很容易实现与三维图形用户界面的交互。但是如果在本地机上使用实验系统,需要在本地机上安装Matlab/Simulink、虚拟现实工具箱以及VRML编辑器、Web浏览器和VRML插件。如果本地机上不能安装Matlab/Simulink,用户也可以通过远程机来观察和控制三维虚拟世界。当然,要求远程机上所有的组成部分都需要支持标准的VRML97软件。通过Matlab Web Server功能也可以实现三维虚拟实验环境的远程访问。用户可以通过客户端浏览器浏览包含有虚拟场景和相应表单的页面,浏览虚拟实验场景的同时可以在表单中修改实验参数,点击发送后,客户端的参数通过HTTP协议传送给Web服务器, 由matweb.exe将参数提取出来,再传送给指定的M文件。该M文件对matweb传送来的数据进行运算后传送到Simulink仿真模型中去,以改变虚拟场景的运行。

3.VRML、Java以及Matlab三者交互

使用VRML、Java以及Matlab软件混合开发的三维虚拟实验系统主要有两种,一是针对Matlab虚拟现实工具箱与VRML程序交互的局限性,采用Java编程扩展Matlab虚拟现实可视化交互功能。这种方案结合了前两种交互方式的优点,有效地运用Matlab虚拟现实工具箱实用的建模环境和Java 扩展的人机交互性,在三维虚拟实验系统开发中具有广阔的应用前景。二是直接采用VRML、Java以及Matlab/Simulink三种软件之间的接口编程。采用Java Applet程序和VRML构建的3D场景实现用户界面,利用Java套接字,通过部署在客户端的Java Applet和服务器端Java应用程序实现客户端与服务器端的传输。运用Matlab/Simulink进行实验建模和运算,并利用Matlab的COM接口实现与服务器端的Java连接,将客户端实验参数传送到Matlab/Simulink中进行仿真运算,运算结束后再将实验结果传送回客户端。该方案采用B/S结构,满足了网络实验教学的需要。客户端只需一个集成Java虚拟机的浏览器即可运行实验,同时由于网络虚拟实验内容存放在服务器端,易于实验功能扩展和管理。此外,该方案特别适用于复杂实验模型的仿真。

使用VRML、Java以及Matlab软件开发的三维虚拟实验系统具有以下优点,在呈现方式上采用3D技术,丰富了媒体的表现形式,增强了学生实验的临境感;由于实验模型的计算采用的是专用的计算软件,在实验数据计算方面也表现出极强的优势;系统能根据实验数据动态地显示三维实验模型的运动,并以相图等形式呈现实验结果。实验过程和实验结果的直观化、形象化,能够促进学生对实验的深入探究,提高其问题解决能力。

四、结束语

三维虚拟实验系统拓展了实验教学的时间和空间,提高了教学效率,不仅可以作为课堂实验教学的补充,而且为远程教育中实验教学的开展注入了新的活力,因而具有良好的应用前景。本文介绍了三维虚拟实验系统开发过程中常用软件的三种交互方式,对各种交互方式进行了分析,希望对广大开发者有所启发。?筅

参考文献:

[1]汪兴谦.VRML与JAVA编程实例讲解[M].北京:中国水利水电出版社,2002:7-12.

[2]黄铁军,柳键编译.VRML国际标准与应用指南[M].北京:电子工业出版社,1999:5-9 .

[3]金侠杰,邢科礼,林财兴.基于VRML-JAVA 的网络交互式虚拟装配环境构建[J].计算机仿真,2004(10):126-129.

[4]池建斌,郭海新,王晨,冯桂珍.基于VRML-JAVA的减速器虚拟拆装系统的实现[J].工程图学学报, 2008,(2):48-53.

[5]吴波,周之平,张飒兵,吴介一.基于VRML-JAVA的虚拟现实及其协同环境的开发[J].计算机工程与应用,2004(7):136-138.

[6]杨雨标,何汉武.基于VRML-JAVA的机器人运动仿真研究[J].机械科学与技术,2004,23(1):120-126.

[7]张家祥,方凌江,毛全胜.基于MATLAB 6.X的系统分析与设计[M].西安电子科技大学出版社,2002:40-112.

猜你喜欢
交互虚拟现实
REALITY BITES
虚拟现实技术向科幻小说借灵感
基于图形用户界面的多点触控交互技术综述
浅谈虚拟现实