基于VRML与Java的交互式漫游系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

科技广场2009.3

0引言

VRML (虚拟现实建模语言,Virtual Reality Modeling Language )是一种网络上使用的三维形体和交互环境的场景描述语言。VRML 创建的是三维的逼真场景,用户可以从不同角度和距离对场景中的对象进行观察,并可与场景中的对象进行交互,因此VRML 是动态的[1]。要想构建具有真正实时、动态交互式的三维虚拟场景,仅仅依靠VRML 还不够,我们可以应用VRML 与Java 的通信原理来达到上述效果。1Java 程序和VRML 场景间的通信

1.1VRML 环境中的交互机制

虚拟现实系统中实现交互操作是通过各种信息通道进行的,在沉浸式的虚拟现实系统中人机交互操作要求采用自然方式进行。而在PC 机上则利用软件方法建立非沉浸式的虚拟现实系统,该系统中通常使用常规交互设备进行交互操作。虚拟现实系统交互模型如图一所示[2]:

VRML 虚拟现实场景与用户交互性的实现基于以下两个因素:行为和执行模式。行为是用来描述什么将要发生,即描述将要发生的行为;执行模式是一种来回传送实体的方法,它把事件作为改变工具作用于VRML 场景对象节点保持状态的字段,

VRML 场景中虚拟对象状态的改变行为是通过执行模式来实现。VRML 基本机制中的行为可以分为静态行为和动态行为。静态行为是一种预制运动行为,场景中对象状态的改变并不需要程序来实现,只需对象节点通过一个语句的结合来决定这种运动。动态行为是通过一段逻辑程序来决定事件产生,它具有询问对象状态的能力,再基于这些状态做出相应决定,在这些决定的基础上改变场景的状态。

VRML 场景的行为机制,无论是静态行为还是动态行为都是基于事件和路径两个基本特征。在VRML 中,事件被定义为字段—输出字段或显示字段。

浏览器自动检测场景中产生的事件,并将新的字段值沿路径传送到宿主(Event In Field )。VRML 这种事件机制驱动了虚拟场景中对象状态的变化,图二为VRML 的行为机制图。

1.2VRML 与Java 的结合

VRML2.0具有分布性、交互性、平台无关、真三维、多媒体集成等众多优点。但VRML 仅对静态场景的结构设计和

利用VRML 本身的事件通路构成的事件体系进行交互处理

基于VRML

与Java 的交互式漫游系统

Interactive Navigation System Based on VRML and Java Technology

胡新根Hu Xingen

(华东交通大学基础科学学院,江西南昌330013)

(School of Basic Sciences,East China Jiaotong University,Jiangxi Nanchang 330013)

摘要:本文着重就VRML 与Java 程序相结合的方式进行研究,讨论了Java 和VRML 的通信机理,利用它建立真正实时交互式的三维虚拟场景。应用基于VRML 的虚拟现实技术和Java 编程技术实现三维虚拟场景漫游系统。

关键词:VRML ;Java ;通信机制;漫游系统中图分类号:TP393

文献标识码:A

文章编号:1671-4792-(2009)3-0114-03

Abstract :The combined way based on VRML and Java program is studied in this paper.We discuss the communication mecha-nism of VRML and Java.We can establish 3D real-time interactive virtual scenes.This paper studies the realization scheme of the virtu-al navigation system based on VRML virtual reality and Java.

Keywords :VRML ;Java ;Communication Mechanism ;Navigation System 图一

虚拟现实的交互模型

114

VRML

Java

图五插入LO D节点构建的相似模型

图二V R M L行为机制

时还比较理想,而无法实现用户与场景之间的实时交互性。

作为弥补这一缺陷的方法,我们可以利用Java和VRML的

通信原理,从场景中获得用户感兴趣的数据,精确地设置场

景中的参数等高级交互功能,实时动态控制场景。Java对

VRML的支持有以下两种方式:使用Java实现VRML的脚

本—应用Java的脚本创作接口(Java Script Authoring Inter-

face即JSAI);使用Java Applet控制VRML场景。前者应用

Java提供的类来实现,后者需通过附加的封装类EAI来实

现。通过这些类,Java程序就能够访问VRML场景,接收和

发送事件,从场景中获得场景对象,实现对VRML场景的实

时动态控制。

1.3Java Applet对VRML场景的控制[3]

VRML97标准提供的外部编程接口EAI实现了Java

Applet与VRML场景的通信。EAI是SGI公司设计的高层

次的Java类包。EAI定义了外部环境怎样通过VRML现存

的事件驱动模式来访问VRML内部节点的一系列方法。

VRML与Java信息交互模型如图三所示:

Java对EAI的绑定是通过以下3个包实现的:

①vrml.external:为节点和浏览器接口提供基础类;

②vrml.external.exception:提供各种异常类;

③vrml.external.field:提供访问场景节点的域所需的类,

即事件类和事件监听接口。

使用EAI对VRML场景进行交互控制,Browser类是很

重要的一个类。该类封装了VRML场景,并提供了getNode

(…)方法用来直接获得对虚拟场景节点对象的引用。获得节

点对象后就可以通过getEventIn、getEventOut方法获得事件

输入、输出的实例,改变事件输入值相当于改变VRML场

景。在VRML中使用EAI主要有以下两个作用:增强VRML

场景与外部环境通信联系和融合能力;外部程序(即Java

Applet程序)可以使用VRML的事件模型访问和控制

VRML场景中的节点。

EAI允许一个Java Applet程序主要以下列3种方法访

问VRML场景中的节点:①发送一个事件到VRML场景中

的事件入口;②接受VRML场景节点的事件出口发出的最

新值;③当VRML场景中节点的事件出口发出一个消息后,

Applet能得到一个通知,激活callBack(…)方法。

2三维场景构建

基于VRML的虚拟现实技术构造三维虚拟场景,实现

实时三维场景漫游,主要涉及以下三项技术:三维场景建模;

虚拟场景的真实感表现;人与虚拟场景的交互技术。建立三

维虚拟场景是整个系统的第一步。由于VRML对大型场景

的建模很不方便,目前有不少很好的三维造型软件,它们大

部分支持.wrl格式。比较流行的三维造型软件3DS MAX,采

用该软件构建虚拟场景中的三维模型比较直观,所见即所

得,创建出来的场景对象比较逼真,容易创建复杂的三维模

型。因此本系统采用的方法是先用建模工具3DS MAX建立

模型,再转换成VRML格式,然后对模型进行整理和优化,

其流程如图四所示。

目前,3DS MAX支持.wrl输出格式,同时在3DS MAX

中具有直观添加VRML节点的功能,如可以直接插入场景

中不可见的或者设置空间背景、声音、大气效果等对于整个

空间有效的12种VRML节点。在构建基于VRML虚拟场

景时充分应用3DS MAX功能可以大大缩短构建场景对象

的时间。为了适应实时漫游的需求,还必须对转换后的文件

格式进行整理。构造LOD层次,应用3DS MAX在VRML场

景中插入LOD节点(如图五所示),即为每个物体建立多个

相似的模型,不同模型对物体的细节描述不同,对物体细节

的描述越精确,模型也越复杂。这样,在不同观察距离上可以

选择不同的场景对象,近处对象应用精细模型,远处对象选

用粗略模型,从而可以提高系统的交互性和图像绘制速度。

图三V R M L与Java信息交互模型

图四场景建模流程图

115

相关文档
最新文档