文章编号:100622475(2003)1120048203
计 算 机 与 现 代 化
JISUANJIYUXIANDAIHUA
总第99期
VRML和Java的交互及其应用
徐洪珍,周书民,汤 彬
(东华理工学院信息工程系,江西抚州 344000)
摘要:详细阐述了如何通过Script节点来实现VRML场景与外部世界的交互技术和实现方法,包括了如何从Java程序中
访问VRML场景中的数据以及如何将数据返回给VRML场景。并利用该原理设计实现了一个学生自测系统。关键词:VRML;Java;Script;交互中图分类号:TP391.9 文献标识码:A
InteractionandItsApplicationofVRMLandJava
XUHong2zhen,ZHOUShu2min,TANGBin
(DepartmentofInformationEngineering,EastChinaInstituteofTechnology,Fuzhou 344000,China)
Abstract:ThispaperdiscussestheinteractionbetweenVRMLandJavaprogramsthroughtheScriptnodeandhowtorealizeit,whichin2cludeshowtoaccessdatainVRMLscenesfromJavaprogramandhowtotransferdatafromJavatoVRMLscenes.Andastudentself2testingsystemisdesignedbythisprinciple.Keywords:VRML;Java;Script;interaction
0 引 言
随着网络技术多媒体技术和仿真技术的发展,人们越来越不满足Web上的二维空间的交互特性,而希望WWW能变成一个三维的立体空间。VR技术与Internet技术的结合产生了VRML(VirtualRealityMode2lingLanguage,虚拟现实建模语言),它是一种描述三维物体和交互环境的文件格式,可以与WWW一起使用,用来实现一个通过全球互联网和WWW的超链接而形成的虚拟世界。
VRML为三维空间(一个与现实一致或完全想象概念上的场景描述)提供了详细的说明。通过VRML技术,人们可以建立丰富的三维场景。但是VRML本身并没有直接和用户进行交互的能力,它需要与其他语言结合才能实现三维场景和用户交互的要求。Ja2va语言提供了这种可能性:VRML能够构造网点所必须的三维结构模块,Java则使三维场景具备交互能力,更加生动,更加丰富多彩。本文主要论述了VRML与Java的交互方式以及应用。
1 VRML简介
VRML是一种与Internet结合,用来描述三维交互
虚拟世界的程序语言,可应用于创建虚拟现实的对象、场景和展示模型等。VRML的基本目标是建立因特网上的交互式三维多媒体,基本特征包括分布式、三维、交互性、多媒体集成、境界逼真性等。通过浏览器,In2ternet用户可以观赏到由VRML创建的三维虚拟现实,而不再只是二维的图形或图像。
VRML主要经历了两个阶段:VRML1.0本质上是一个静态的三维场景描述语言,不具备动态交互性;VRML2.0在VRML1.0的基础上增加了Script节点。Script节点是联系VRML场景和外部行为控制的纽带,使用它可以实现与外部语言的交互。同时,VRML2.0还增加了其他一些传感器节点来扩展虚拟世界的动态行为。VRML2.0已于1997年12月成为国际标准(ISOΠIEC14772-1:1997)。目前WEB3D联盟正致力于VRML的下一代X3D的有关规范的制定。
在VRML中不能显示场景行为改变时决策的逻辑,因为它没有节点支持这种逻辑,场景就被限制在先前定义的节点路线上,沿先前的路线来传递先前的事件。所以我们的控制场景事件的程序,也只能在场景的外部,VRML为我们提供了一个与场景外的程序相结合的节点script。利用script节点,VRML就可以利用Java、Javascript或VRMLScript等外部语言来编写
收稿日期:2003202224
作者简介:徐洪珍(19762),男,江西抚州人,东华理工学院信息工程系讲师,硕士,研究方向:计算机网络与信息集成、虚拟 现实技术等;周书民(19712),男,东华理工学院信息工程系讲师,南京理工大学博士研究生,研究方向:计算机网络与信息 集成、数据库及其应用等;汤彬(19632),男,教授,博士生导师,研究方向:计算机网络与信息集成、分布式数据库技术等。
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
2003年第11期 徐洪珍等:VRML和Java的交互及其应用49
程序,实现这些复杂的控制功能。
2 VRML和Java的交互
2.1 VRML和Java的交互方法
Java作为一种Internet上具有“硬件Π软件无关性”的面向对象程序语言,与VRML有很强的互补性。前者的优势在于Internet环境下的程序设计,而后者的优势在于虚拟现实场景构建。总的来说,VRML与Java程序之间交互的执行有三类解决方法:
第一类是API的方法,执行模式是基于过程的,所谓的API就是执行模式建立在浏览器的API基础上,通过API调用一系列程序来控制场景,这种方法便于程序的编写,同时又可以简化场景,但是对于浏览器来说,它有可能无法得到足够的场景信息。
第二类是通过语言的方法,就是将VRML的3D数据完全转化为程序语言,这种方法就与API的方法完全相反,它可以使浏览器得到场景的完整信息,也具有基本语言的控制结构,但它却引起文件过大,不
cessEvent()方法中,目的是为了确定到达的事件是否是起点事件以及它的值如何。例如:
publicvoidprocessEvent(Evente){
)){Πif(e.getName().equals(″start″Π判断到达事件是否为start
ConstSFBoolv=(ConstSFBool)e.getValue();ΠΠ获取其值
(只读)
if(v.getValue()==true){ΠΠ进行处理}}}
太适用于网络传输。
第三类是基于事件的方法,它是使用事件机制和路由,即利用script节点实现VRML与Java的交互。其过程如图1所示。
(1)通过eventIn将事件传至Script节点中的脚本;(2)在Script节点中的脚本中调用相应的Java类进行处理;
(3)通过eventOut将结果送回到VRML场景以实现动画或交互。
这种方法是目前采用的最多的一种VRML和Ja2va结合以实现交互的方法。其流程图如图1所示。
图1 利用Script实现VRML和Java交互的流程图
2.2 在Java中访问VRML场景
在Java中访问VRML场景或者说从VRML传递数据到Java有以下几种方法:
(1)通过VRML的事件(Event)类和事件处理(Event-handle)类。Event类提供了三种方法获取VRML场景中的数据:
getName():返回VRML中Script节点的某个事件输入(eventIn)的名称。
getValue():返回VRML中Script节点的某个事件输入(eventIn)的值(只读),即返回一个ConstField类
型的值。
GetTimeStamp():获取eventIn发生的时间。
这三个方法主要应用在Event-handle类的pro2
(2)通过Java中Script类的方法访问VRML中Script节点的域(Field)、事件输入(eventIn)、事件输出(eventOut)。在VRML中,Script节点的域、事件输入、事件输出均可以被它们在Java中相应的Script类访问,但又各有不同。在Script类中获取的Script节点的Field是可读写的,eventOut是只写的,eventIn是只读的。获取Script节点的域、事件输入、事件输出可通过Script类的下面三种方法实现:
getField(StringfieldName):返回一个名为fieldName的Script节点的域。它可被转换为相应的Java类。
getEventIn(StringeventInName):返回一个名为eventInName的Script节点的事件输入。它可被转换为相应的Java类。
getEventOut(StringeventOutName):返回一个名为eventOutName的Script节点的事件输出。它可被转换为相应的Java类。
(3)访问VRML中其它节点。如果已经通过前面的方法(getField(StringfieldName))获取了VRML中的其它节点(此节点必须作为Script节点的一个域Field,才能访问),则此节点的任何eventIn、eventOut或ex2posedField均可以被Java程序访问。这可以通过Java中的相应节点类(而不是Script类)的下列方法实现:
getEventIn(StringeventInName):返回该节点的一个名为eventInName的事件输入。
getEventOut(StringeventOutName):返回该节点的一个名为eventOutName的事件输出。
getExposedField(StringfieldName):返回该节点的一个名为fieldName的显示域(exposedField)。2.3 从Java中传递数据回VRML场景
只有当从VRML场景中获取的域值为可写的(具体可参阅文献[6])时,才能将数据在Java中进行处理,然后写回VRML场景。这主要是通过Java中的相应类的下列方法实现:
setValue(value):将Java类型值转换为相应的VRML类型值,并在VRML中设置它。
set1Value(intindex,value):将Java类型值转换为相应的VRML类型值,并设置为第index个元素(第一个元素序号的序号为0)。
addValue(value):将Java类型值转换为相应的
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
50计 算 机 与 现 代 化2003年第11期
VRML类型值,并添加到最后一个元素后面。
insertValue(intindex,value):将Java类型值转换为相应的VRML类型值,并插入到第index个元素。
delete(intindex):删除目标对象第index个元素
值。
clear():清除目标对象的所有元素。注意,set1Value()、addValue()、insertValue()、de2lete()和clear()方法只对多值域类(MF类)有效。
3 应用实例
我们利用VRML和Java的交互实现了一个学生自测系统。其主要思想是利用VRML建立题目、答案选项、正确显示以及错误显示模型,通过捕捉鼠标的按键来触发Script节点的eventIn事件,并在Script中调用相应的Java类进行处理。我们在每个答案选项上都设置了一个TouchSensor节点,当用户点击某个答案选项时,触发Script节点的eventIn事件clickxx(xx表示某道题的某个选项),然后Script节点调用相应的Java类进行处理:首先使其字体变大,然后判断选择的是否为正确选项,当选项错误时,在VRML界面上显示一红色的×,当选项正确时,在VRML界面上显示一红色的√。显示结果分别如图2、图3所示。
图2 选择错误时显示结果
图3 选择正确时显示结果
参考文献:
[1] 杜可亮,等.WWW上的虚拟现实技术-VRML语言[M].
北京:电子工业出版社,1998.[2] 严子翔.VRML虚拟现实网页语言[M].北京:清华大学
出版社,2001.[3] AmesAL,NadeauDR,MorelandJL.VRML资源手册[M].
宗志芳译.北京:电子工业出版社,1998.[4] 张蒙,陈泽琳,温武.基于VRML和Java的虚拟现实协同
研究与设计[J].计算机工程与应用,2001,37(13):156~157,169.[5] 沈春龙,张友良.基于VRML的多用户共享虚拟环境框
架研究[J].系统仿真学报,2001,13(4):456~461.[6] ISOΠIEC14772-1:1997,VRML97InternationalStandard[S].
4 结束语
本文主要论述了VRML和Java的交互方法并利
用VRML建立模型,利用Java进行控制建立了一自测系统。VRML凭借强大的三维功能,再结合其交互性,真正将Internet变成了一个广阔的三维空间。尽管VRML存在一定的局限性,但不影响VRML的发展,它的下一代X3D结合了Java3D和XML技术,支持最新的流技术和渲染扩展,并成为三维世界的主要标准,有着广泛的应用前景。(上接第47页)
造成具有相同消费习惯的客户数量较少的结果的原因,经分析主要有以下两点:
(1)客户、特约商户样本数量少。由于取实证数据的某国有商业银行的某地级分行属于经济发达水平一般的地区,在77天的取样时间内,只有486个客户有使用信用卡的行为记录,只有49个特约商户有受卡交易的记录。
(2)客户使用信用卡的频率和特约商户受卡交易的频率又都是很不平均的。
惯的客户数太少,最多只有3人。但是对于开展完全意义上的“1对1”营销还是很有意义的。通过上节的分析发现至少有30个客户的消费习惯是有规律的。可以针对这些客户的消费行为习惯,当相关的特约商户有促销活动时,及时通知这些客户,提高客户的响应,从而获得很好的促销效果,同时又提高了客户对银行服务的满意度和忠诚度。
参考文献:[1] JiaweiHan,MichelineKamber.数据挖掘:概念和技术[M].
北京:机械工业出版社,2001.[2] 陈武,袁国忠.企业数据仓库规划、建立与实现[M].北
京:人民邮电出版社,2000.[2] 田金兰,等.用关联规则方法挖掘保险业务数据中的投
资风险规则[J].清华大学学报(自然科学版),2001,41(1):45~48.
5 基于信用卡账号的特约商户的营销
战略
通过上文对信用卡账户和特约商户之间的数据挖掘关联分析,可以得出在该取样地区不适宜开展基于大量客户群的营销活动。因为具有相同的消费习
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
因篇幅问题不能全部显示,请点此查看更多更全内容