基于VRML_JAVA的虚拟场景交互的实现_马万全
更新时间:2024-05-07 01:35:01 阅读量: 综合文库 文档下载
- vrml与java推荐度:
- 相关推荐
基于VRML/JAVA的虚拟场景交互的实现
马万全1,单美贤2
(1.东南大学计算机科学与工程学院,江苏南京210096;2.南京
邮电大学传媒技术学院,江苏南京210003)
摘 要:Javra是一个以EAI为基础的处理VRML场景图的Java包,克服了VRML与Java通过内
部Script节点和EAI方式进行交互的不足:用户操作实时生成的VRML事件可以在Javra中捕捉
到并加以处理。Javra和VRML浏览器的结合,使得生成3D交互应用程序更有效。 关键词:Java;VRML;EAI;Javra;场景图
中图分类号:TP311 文献标识码:A
VRML(Virtual Reality Modeling Language)虚拟现实建模语言,是一种三维造型和渲染的图形描述性语 言。通过VRML,人们可以建立丰富的三维场景,但是VRML本身并没有直接和用户进行交互的能力,它
需要与其他评议结合才能实现三维场景和用户交互的要求,Java语言提供了这种可能性。本文主要论述
VRML与Java的交互方式和Javra的使用。 1 VRML与Java之间的交互方式
VRML产生事件的方式可以归结为基于TimeSensor的静态行为和基于程序的动态行为两种,前者仅能
执行预定的决策逻辑,对于一些复杂的动画动作、实时控制事件、智能推理能力等,就需要其他编程语言(如
Java)的支持,当前主流VRML浏览器也都对Java编程提供了支持。在VRML中使用Java语言有两种方
式,即通过内部Script节点和外部编程接口(EAI)进行。 1.1 内部Script节点
图1 利用Script节点进行动画设计的框图 Script节点支持VRMLScript和 JavaScript(两者通过内置接口通信), 支持SUN公司的Java,其通过内置接 口或者专用API与VRML通信。 Script节点的URL域可以包含一段
JavaScript程序或者是链接的一个JA- VA class。利用Script节点进行动画 设计的过程可以用图1表示:①通过 eventIn将事件传至Script节点中的脚 本(Java或JavaScript);②在脚本中进 行处理;③通过eventOut将结果送回 Script节点。
通过Script实现的动态场景中的事件(输入和输出)均在VRML内部节点之间进行传递,虽然可以实现
相应浏览者的交互功能,但对于与外界的信息交流包括信息的输入和输出却显得力不从心。 1.2 外部编程接口(External Authoring Interface)EAI
Script节点从VRML场景内部提供了与Java的连接,而EAI定义了与外部HTML页面中的Applet通 信的接口。EAI技术是利用定义的一套针对VRML浏览器的Java类实现对VRML场景的控制,它的基本
思想是将Java applet与VRML置于同一web页面,在Java applet中建立browser对象以标识一个唯一的
VRML场景,并由此获得对VRML场景中已定义节点的引用,它通过直接指定引用节点的域值而达到动态 效果。这样Java applet即可控制VRML场景,也能进行与HTML等其他媒体的交互以及网络控制,从而可
以实现复杂的虚拟环境系统。 图2 EAI的交互原理图
图2是EAI的交互原理。A、Brows- er类是对VRML场景的一个Java封装, 通过getBrowser()方法获得当前浏览环 境信息;B、访问某个节点产生要用 Browser类的getNode()方法来获得一个 Node类实例;C、在获得Node类实例后, 可以通过Node类所提供的getEventIn() 和getEventOut()方法对节点进行访问; D、如果需要在Applet中实现VRML节 点的动态增加和删除,就得利用到Brows- er类的一个方法:createVrmlFromString ()。此方法的参数是一个内容符合
VRML规范的字符串,它返回一个Node
类的实例数组,这些Node实例是在VRML场景的外部环境中生成的。E、读取VRML场景中节点事件出
口所发出的最新值;F、当VRML场景中节点的事件出口发出一个事件时,能得到一个通知,激活callback方 法。
VRML浏览器通过EAI与Java程序进行通信,EAI使得程序员可以控制VRML世界,然而EAI不是
一个很方便的编程方式,因为由Java设计的节点不再能访问,或者说这些节点必须在VRML
中被激活,这
就使得用户接口变得不友善,我们可以通过Javra加以改善。 2 Javra
图3 Javra和EAI简单的关系图 Javra是一个以EAI为基础的处理
VRML场景图的Java包,VRML浏览器 处理基本的3D场景交互(如平移、旋转 等),Javra处理Java程序和VRML之间 的通信。Javra和VRML浏览器的结合, 使得生成3D交互应用程序更有效:具有 Javra的VRML场景图支持VRML节点 类和设置这些节点的方法,因为这些节点 可以完全自动生成;另外,当用户操作时 生成的VRML事件可以在Javra中捕捉 到并加以处理。
2.1 EAI与Javra的关系
图3是Javra和EAI简单的关系图。 EAI通过Node类和Browser类访问
VRML浏览器中的场景图。在Javra程序中生成本地的场景图,称之为JavraNodes,可以被其他文件或
VRML浏览器访问。在Javra程序中,场景图中的每一个JavraNode都对应着浏览器中的一个节点,当
JavraNode发生改变时,通过设置域值产生一个VRMLEvent并发送到浏览器,从而引起浏览器中相应节点
的改变。与此相似,浏览器能将VRML事件(如用户点击了场景中的物体)发送到应用程序。 2.2 JavraNode
图4 JavraNode的层次关系示意图 从Javra包中可以获得以下信息:节点
名;域(域的属性
class Box extends Geometry{ float[]get_size();
void set_size(float[]a); }
GroupingNode节点是新节点,其部分程序如下:
class GroupingNode extends ChildrenNode{ void addChildren(ChildrenNode[]a); void set_Children(ChildrenNode[]a); ...... }
3 Javra的使用
Javra节点的使用和VRML节点的使用一样,下面我们通过举例来说明如何建立、输出Javra场景图,如
何与Javra场景图进行交互。 3.1 Javra场景图的生成
在VRML中,场景图是由相关联的节点形成的,如Box基本造型的形成如下: Shape{
geometry Box{size 1 2 1} appearance Appearance{
material Material{diffuseColor 1 0 0} } }
下面一段程序是相应的Javra代码,节点之间的连接是调用相应的set_函数实现的。建立Javra场景图
需要有一定的VRML知识,一般而言,Javra场景图的生成如实地反映了VRML场景图的生成,只是VRML
中的域名XXX(如appearance)在Javra中是通过调用set_XXX(set_appearance)方法实现的。 Material m=new Material();
m.set_diffuseColor(new float[]{1,0,0}); Appearance a=new Appearance(); a.set_material(m); Box b=new Box();
b.set_size(new float[]{1,2,1}); Shape s=new Shape(); s.set_geometry(b); s.set_appearance(a); 3.2 Javra场景图的输出
Javra场景图可以输出到支持EAI接口的VRML浏览器中或一个文件中(通过调用场景图中上层节点
的print方法实现)。如果将Javra场景图输出到浏览器中,需要获得相应的浏览器句柄,可以通过调用相应
的EAI方法实现,如browser.replaceWorld(new Node[]{s.getNode(browser)});语句。ReplaceWorld方法是
再次调用browser nodes(Node[])的EAI方法,为了获得相应的节点,JavraNode通过调用getNode(browser)
方法来建立一个Node。
Javra除了可以用场景图取代虚拟世界外,Javra中的节点也可以加到已经存在的虚拟世界中,代码如下:
Node n=browser.getNode(“TOP”);
JavraNode j=JavraNodeFactory.createJavraNode(browser,n); Group g=(Group)j;
借助EAI获得一个在VRML世界中定义的浏览器节点,如“TOP”。节点n可以通过JavraNodeFactory
类的createJavraNode方法嵌入到JavraNode的j中。 3.3 与Javra场景图的交互
当场景图输出到浏览器后,场景的动态部分既可以通过Javra节点也可以通过浏览器节点使之改变。
用户与场景的交互通过浏览器实现,应用程序可以跟踪在VrmlEvents中的交互结果。Java通过EAI的
VrmlEventListener接口类来监听浏览器的接收事件。例如,对于TouchSensor传感器的touchTime事件,
Javra代码可以表示如下:
TouchSensor ts=new TouchSensor(); ts.advise(“touchTime”,listener,data);
其中参数listener是一个VrmlEventListener接口类的对象实例,data是用户指定的与该事件相关联的
对象,当该事件发生的时候,userData就会一同被返回。 4 结束语
Java的加入为VRML提供了强大的编程能力以及网络访问能力,使VRML这种描述性语言对各种需
求功能的扩充成为可能。VRML完成场景的描述和接口的定义,真正的交互和高级应用由Java来完成。
Javra和VRML浏览器的结合,使得生成3D交互应用程序更有效。正是由于Java和VRML的结合,使它们
成为创建基于网络的大规模虚拟环境的理想综合平台。 参考文献
[1] 王汝传,等.基于Java和VRML虚拟场景通信方式的研究[J].系统仿真学报,2003,(7). [2] 舍 曼,等.虚拟现实系统———接口、应用与设计[M].北京:电子工业出版社,2004. [3] (美)Burdea,等.虚拟现实技术(第二版)[M].北京:电子工业出版社,2005. [4] 韦有双,等.虚拟现实与系统仿真[M].北京:国防工业出版社,2004. Realization the Communication of Virtual Scenes Based on VRML/Java Ma Wan-Quan1,Shan Mei-Xian2
(1.Department ofComputer Science,South East University,Nanjing210096,China; 2.Nanjing UniversityofPosts and Telecommunications,Nanjing210003,China)
Abstract:Javra is a Java package for handling VRMLscene graph.Javra isbased upon the external authoring in-
terface(EAI).As programming tool between Java and VRML,Script node and EAI have some weaknesses,
which can be overcome by Javra,for example,.after a user acted,VRML events generated real-time can be
caught and handled in Javra.The combination of Javra and a VRMLbrowser forms an effective start for generat-
ing 3D interactive applications.
Key words:Java;VRML;EAI;Javra;scene graph
81第26卷 马万全,单美贤:基于VRML/JAVA的虚拟场景交互的实现
正在阅读:
基于VRML_JAVA的虚拟场景交互的实现_马万全05-07
××大学校区图书馆建设工程施工组织设计06-15
有效备课 - 备课问题诊断与解决04-06
GENESIS基本操作步骤及要点01-28
语文西师版六年级下册 推荐《黄山松》习题12-20
我们永远是朋友作文350字06-25
关于父母的爱的作文03-31
矿床地化1-8 - 图文05-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 万全
- 交互
- 场景
- 基于
- 实现
- 虚拟
- VRML
- JAVA
- 最新人教版小学二年级下册数学第三单元《图形的运动(一)》共4课
- 基于MATLAB的车牌识别研究
- 2018年上海虹口区高三一模试题(附答案)
- oracle错误一览表
- 八年级地理下册9.1自然特征与农业练习题无答案新版新人教版
- 车站信号自动控制课程设计
- 论企业战略成本管理及其在我国的应1
- 煤泥的环保能利用及其管理远距离输送新技术
- 2019年高考语文江苏卷一轮准确辨析近义实词
- 对外汉语教育学引论名词解释
- 2013中考物理基本知识总复习题
- 甘肃酒泉市金塔县成国际核废料处理基地
- 校园网络安全问题及对策-本科毕业论文
- 190537 - 303大学英语形成性考核习题(四)江开大学 2018秋
- 六年级期中质量分析
- PP第七章树脂牌号开发 - 图文
- 起重机械安全技术监察规程 - 桥式起重机(TSG - Q0002-2008)
- 化工自动化控制仪表作业安全技术实际操作考试标准
- 2018年高级汽车维修工考试题(全)
- 中南大学材料科学基础习题