基于VRML与JAVA实现场景交互初探
时间:2020-12-13 08:06:57 来源:柠檬阅读网 本文已影响 人
(呼伦贝尔学院 计算机科学与技术学院,内蒙古 呼伦贝尔 021000)
摘 要:文章介绍了VRML和JAVA技术的基本概念,利用它 们进行三维交互的原理,并对三维实体的动态实现作了详细分析。
关键词:虚 拟现实;
VRML;
JAVA;
三维交互
中图分类号:TP311 文献标识码:A 文章编号:1007—6921(2009)24—0128—02
在现代的远程教育中,网上虚拟实验是发展现代网上教育的一个瓶颈,而其中最关键的问题是 交互性没能较好地解决。在这里, 提出结合利用VRML和JAVA来实现三维虚拟场景中的交互问 题。利用VRML和JAVA技术进行三维虚拟实验室的开发[1],基本原理是用文本信息 描述三维场景,在Internet网上传输,在本地机上由VRML 的浏览器解释生成三维场景,解释生 成的标准规范就是VRML规范。这种思想使得在Internet上传输很少的数据,就可以在Web上实 现三维虚拟场景成为可能。
1 基本概念
1.1 VRML 虚拟现实建模语言
VRML虚拟现实建模语言是一种三维场景的描述性语言,也是在Internet网上实现虚拟现实的 关键性技术,具有平台无关性,是目前Internet上基于WWW的三维互动网站制作的主流语言。V RML浏览器可以是一个独立的程序[2] ,也可以是某个Web页的附件和插件。它具有 界面真实感强、浏览方便、信息量大、交互性能优越等特点,是实现网上教学、模拟战场、 网上实习、网上实验的利器。
1.2 JAVA技术
JAVA语言是一种使用与网络编程的语言,它的基本结构与 C + +极为相似,但却简单得多。JAVA具有简单、面向对象、分布式、解释型、健壮、安全跨 平台以及可移植等多种特性,用JAVA开发的软件具有可视化、可听化、可操作化的特点。JAV A 是一种跨平台的编程语言,通过JAVA 编写的Applet(小应用程序) 在网上可以直接运行,非 常适合于Internet 上虚拟现实环境。
2 VRML和JAVA 的交互方法
JAVA 是一种跨平台的语言, 能很好的支持网络环境下的编程, 而VRM L 的优势在于构建虚拟现实场景.解决VRML 与JAVA 程序之间的交互, 主要有3类方法:①是 通过语言的方法, 就是将VRML 的3D 数据完全转化为程序语言, 它可以使浏览器得到 场景的完整信息,也具有基本语言的控制结构,但文件过大,不适用于网络传输。②是E AI 的方法, EAI 是一种应用程序接口, 是基于VRML 和JAVA 小应用之间事件传递而提出的 一种规则, 用于实现JAVA Applet 与VRML中虚拟场景之间的相互通信[2]。EAI 包 含浏览器脚本接口的全部功能, 例如查询浏览器状态, 增删路由等,若需集成多种媒体, 进 行复杂的网络控制, 多采用EAI 方法进行。③是SAI的方法, 它是使用事件机制和路 由, 即利用script 节点、事件发生器、dff/use 命名规则和路由route, 连接VRML 场景中 对应的节点和域, 实现VRML 与JAVA 的交互[2, 3]。首先通过eventIn 将事件传至 Script 节点中的URL 字段; 再在Script节点中的脚本中调用相应的JAVA 类进行处理; 最后 通过Script 节点的eventOut事件将结果送回到VRML 场景, 用以实现动画或交互。这种方法 是目前采用的最多的一种VRML 和JAVA 结合以实现交互的方法,其流程图如图1所示。VRML 着重于虚拟场景中对象的特征,不太考虑对象行为;而JAVA 主要讨论对象行为,很少涉及外部 特征,二者相互作了很好的补充,因此VRML 与JAVA 的结合,是实现较复杂动态场景控制等高 级交互功能的有效方法。VRML 中使用JAVA 有两种方式, 即通过脚本编程接口SAI(Script A uthoring Interface) 访问和通过外部授权接口EAI ( Ex2ternal Authoring Interface) 访问。JAVA能够自由运用于3D 场景[3],获得了一个结合VRML 世界和JAVA世界的机 制。VRML 世界通过其扩展执行模式进入JAVA世界,即活动行为通过一个特殊结点( Script结 点)来连接两个模块。
3 JAVA 程序与VRML 场景间的连接
JAVA 对VRML 的扩展和支持是通过JAVA 的附加封装类( class)而实现的。类是所有相似对 象的状态变量与行为构成的模板(template)或原型(prototype)。而每一个类和界面的名字 又包含在可以避免冲突出现的包(package)中。通过这些类, VRML 中的场景,在接受和发送 事件等各个环节都可以被JAVA 访问。目前, JAVA 对VRML 场景的访问控制有以下2种方式
3.1 SAI( script Authoring Interface) 脚本编程接口方式
在此方式中, JAVA 充当javascript 或VRMLSCRIPT 等脚图1 利用Script 实现VRML 和JAVA 交互的流程图
本语言。其所在的SCRIPT 节点定义如下:
Script{eventIn eventType eventName <定义输入事件eventOut eventType eventName〈定 义输出事件field fieldTypeName fieldName initialValue〈定义私有域URL " example.cl ass" 〈程序模块列表}在Script 节点中, 事件输入( eventIn)和事件输入(eventOut)主要 用来接受和发送事件的处理值; 私有( 域(field)是标识VRML 场景里被JAVA 所访问控制的 节点; URL 域值设置了用JAVA 语言编写的类example.class, 在这个类中定义了intialize 、shutdown#enentProcessed#processEvent#processEvent 五个特定的成员函数, 浏览器会 自动调用这几个函数: 保护getField 和getEventOut 函数来获取节点的私有域和事件输出 。开发者只需要提供域或事件的名称, 这些函数就能给出Field 派生类的实例。另外, 调用 Browser 类定义的createVrmlFromString 等标准成员函数,都可以实现动态、改变节点、事 件路由生成的功能。
3.2 EAI(External Authoring Interface)外部编程接口来访问
这种 方式主要用于Applet 和VRML 场景都内置在HTML( 超文本标记语言) 页面上时的连接。在此 情况下, Applet 主要利用封装在Vrml.external 包中的Broseser 类来控制访问场景Browse r 类的基类IBroser 的接口类, 它封装有VRML 场景中除了SAI 可使用的函数外, 还有getNo de( )函数直接获得场景中使用DEF 语句定义的节点。与SAI 方式类似, EAI 中也可调用get EventOut、getEventIn 来获取那些事件的输入、输出的实例, 从而引起场景的变化。
随着JAVA 技术和VRML 技术的不断完善和发展, JAVA 和VRML 的交互将越来越多的运用到日 常的生活和学习当中来。比如利用JAVA 和VRML 的交互为基础可以构建虚拟现实的实验环境 ,构建网络虚拟课件系统等,基于JAVA 和VRML的技术及相应的各方面的成果必将受到越来 越多的关注。
[参考文献]
[1] 赛博科技工作室. VRML 与JAVA 编程技术[M]北京:人民邮电出社,2002.
[2] 汪兴谦,牛燕明,邓谆谆. VRML 与JAVA 编程实例讲解[M].北京:中国水利水 电出版社,2002.
[3] 王汝传,姚旭敏,王海艳,刘丽. 基于JAVA 和VRML 虚拟场景通信方式的研究[J ]. 系统仿真学报,2003,(7):986~990.
[4] 伍晓平. VRML 与JAVA 的接口技术[J].计算机时代,1999 ,(3) :12~14.
[5] 吴艳梅,张广萍用VRML实现虚拟实验室的设计方法1微型机与应用, 2001; (1 2) : 17~19.