基于VRML的交互技术及应用

  • 格式:pdf
  • 大小:137.38 KB
  • 文档页数:4

基于VRML的交互技术及应用

凌 宇① 唐明浩②

摘 要 本文阐述了用Script节点实现VRML世界与

Java平台之间的交互技术和实现方法。根据该原理可以实现

用户与VRML空间的互动。最后以虚拟人体的变形为例,介

绍了VRML互动技术的应用。

关键词 虚拟现实 交互技术

随着Internet的普及和计算机性能的提高,二维的、平面

的html式的虚拟空间已经渐渐不能满足人们的要求,人们希

望能够通过一种语言三维的、立体的表现现实世界,VRML

(VirtualRealityModelingLanguage)技术是人们实现这一目

的的一种良好工具。

VRML为三维空间——一个与现实一致或完全想象概

念上的场景描述——提供了详细的说明。通过VRML技术,

人们可以建立丰富的三维场景。但是VRML本身并没有直接

和用户进行交互的能力,它需要与其他语言结合才能实现三

维场景和用户交互的要求。Java语言提供了这种可能性:

VRML能够构造网点所必须的三维结构模块,Java则使三维

场景具备交互能力,更加生动,更加丰富多彩。本文主要论述

了VRML与外部世界的交互方式以及它在三维人体变形当

中的应用。

一、VRML简介

VRML定义了一种包含三维图像和多媒体的文件格式。

从概念上讲,每一个VRML文件都是一个包含可以通过不同

机制进行改变的图像和声音对象的基于时间的三维空间。每

个VRML文件都应该具备以下特点:隐式创建一个包括文件

中定义的所有物体的三维空间;显式定义和包括一系列的三

维和多媒体对象,创建到其他文件或项目的超级连接;能够定

义对象行为,内联其它VRML文件等。

VRML是一个三维造型和渲染的图形描述性语言,它把

一个“虚拟世界”看作一个“场景”,而场景中的一切都看作“对

象”(也就是“结点”),对每一个对像的描述就构成了WRL文

件;VRML的图形渲染是“实时”的;VRML是面向网络的,它

是为网络而生的,并随网络而发展的,它的巧妙之处在于避免

了在网上传输无限容量的一帧帧视频图像,而传输的是有限

容量的WRL文件,即只传送描述场景的模型,而把动画帧的

生成放在本地。二、VRML交互技术

VRML本身并不具备与外部交互的能力,它必须和其它

语言相结合才能构造出具备交互能力的三维场景。尽管

VRML组织决定VRML210不再需要任何特殊语言,这个决

定部分是基于避免“语言战争”的愿望,而且基于这样的决心:

没有一种语言能够满足VRML组织的所有要求。但是由于

Java与网络的有力和紧密的统一性,Java被大多数严肃的

VRML开发商采用。

VRML210可以通过扩展其执行模式进入Java世界,即

活动行为通过一个特殊节点来连接VRML世界和Java世

界。这个节点称为Script节点。Script节点可以象其它的

VRML210节点一样放置在场景等级中的任何地方;可以用

DEF命名它;可以从它那里移走事件,也可以把事件传给它。

但是Script节点的字段是由用户延伸的,到达这些字段的字

段会自动移到和Script节点相关程序中。

11Script节点的定义及工作机制

Script节点的详细定义:

Script

exposedFieldMFStringurl []

field SFBool directOutput FALSE

field SFBool mustEvaluate FALSE

#Andanynumberof:

eventIneventTypeeventName

fieldfieldTypefieldNameinitialValue

eventOuteventTypeeventName

}

directOutput域可以通过设定真或假来说明程序脚本的

输出是否受限制。

MustEvaluate域可以通过设定真或假来指定程序脚本是

如何进行求值的。

Field、eventIn和eventOut等分别定义了url域值显示的

在Script节点和程序脚本之间的接口。

url域值指定了一个被按照优先级区分的URL列表,它

是按优先级从高到低的顺序排列的。当浏览器找到URL指定

的文件并将其打开后,文件中的程序脚本就会被读下并用来

定义Script节点的动作;也可以直接使用脚本语言在url

域中

·42·MicrocomputerApplicationsVol.18,No.1,2002 研究与设计 微型电脑应用 2002年第18卷第1期

①②唐明浩 东华大学信息学院 副教授 上海 200051凌 宇 东华大学信息学院 硕士研究生 上海 200051

© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.写入Script节点将要执行的动作。

Script节点是外部世界与VRML世界之间交互信息的

中转站。任何要传送至Script节点的事件被封装好,并被送至

脚本。任何用Java程序写的结果都更新Script节点的字段。

随后,如果需要的话,Script节点将产生新的事件按照路径的

规定传送至下一个节点。这种机制如图1所示。

图1 Script节点工作机制

21从VRML的数据类型映射到Java类

所有VRML的数据类型都有一个相应的Java类,通过

这种映射一个到达Script节点的eventIn字段的事件引起Ja2

va程序的执行,Java程序可以修改Script节点的字段内容,

或者在VRML世界中添加、修改路由(Route)。

31访问VRML世界的Java方法

传入Script节点的事件会相应的传入Java平台的pro2

cessEvent()或者processEvents()(用于处理事件队列)方法

中,上述两种方法把eventIn事件当作Java平台的对象看待。

与此同时这两种方法可以通过调用getName()、getValue()

等方法返回eventIn对象的名称和类型等。VRML标准中,在

外部空间与VRML之间进行交互的过程中,用户还可以定义

如下一些方法:

initialize()方法 该方法在所有事件发生之前执行,它可

以进行一些预处理或初始化的工作。

shutdown()方法 该方法在相应的Script节点被删除或

者包含Script节点的VRML世界被卸载或被其它世界替换

时发生,在这个方法中可以进行一些收尾工作。

eventsProcessed()方法 该方法发生接受事件,以就是

说用户可以根据发生过一些事件之后VRML空间的状态来

决定是在已经受到一些事件之后,这种方法允许用户不必依

赖接受到的事件发生的顺序来否继续接受事件。

另外通过get()和set()方法用户可以访问Script节点中

的所有的字段。

上述这些方法是由VRML标准组织定义的,任何一个

VRML开发商都必须实现上述要求,目前比较成熟的VRML

浏览器都实现了上述内容,如CosmoPlayer、BlaxxonContact

等等。三、虚拟人体变形的VRML实现

11基准虚拟人体的建立

无论是希望通过Internet购买服装的用户还是服装设计

师,都希望能有一个三维虚拟人体以观察着装效果。为此我们

需要建立一个基准虚拟人体,然后根据用户的输入参数对基

准虚拟人体变形,构造符合用户人体的虚拟人体。

在VRML空间中,可以利用PointSet、IndexedLineSet、

IndexedFaceSet节点进行点线面造型,从理论上讲可以创造

出虚拟空间中任意的三维造型。在我们的研究课题中,我们使

用了IndexedFaceSet对人体进行造型。

IndexedFaceSet节点中比较常用的两个域分别是coord

和coordIndex。基中coord域提供了一个节点,这个节点列出

了构造面集中所有面的坐标;coordIndex域的值提供了一张

描述一个或多个面的周界的列表,该域中的每一个值都是整

型的索引,并且每个索引都指定了在coord域内的坐标列表

中的一个坐标。使用IndexeFaceSet节点造型就是通过描述点

的坐标来绘制多边形进而绘制整个形体。如果凭空想象来定

义coord域中的所有坐标的值,过于繁琐而且并不能取得很

好的效果,因此我们使用3DSMax进行人体建模,完成后再

把三维人体导成VRML文件,生成基准三维人体模型。

21虚拟人体变形的初始化

通过上文所述建立的虚拟人体是由相互之间具有层次结

构的不同节点构成的,如躯干、臂部、右腿上部、右臂上部等

等,本文以右臂上部为例阐述变形的方法。

首先通过getNode()方法获得右臂上部(right-upper-

arm)的IndexedFaceSet的coord域的内容,然后确定该节点

垂直方向上的坐标范围,设定切片数目、切片的作用范围、切

片的垂直方向坐标以及采样点数目。

31虚拟人体变形

首先用垂直于Y轴的截面对right-upper-arm节点切

割,也就是三角形面组与垂直于Y轴的截面作相交运算。对

于每一次切割,都得到一个与Y轴垂直的封闭多边形S。然后

求多边形S的重心,将其作为相应切片的中心,再从该中心辐

射出等角度间隔的射线(射线数目等于采样点数目),将射线

与多边形的交点作为采样点。然后分别求位于切片作用范围

的且与采样点最近的点,将其作为控制点。这样right-upper

-arm节点就是由一组三维空间点阵m3n做成,其中m为

切片数目,n为控制点数目。经过上述处理,我们就可以对

right-upper-arm节点轮廓进行分类模拟,从而实行根据用

户输入进行人体重建。

41实验

本文是在PentiumII433机器上,Windows98环境下,使

用Java和VRML实现的,以男性青年模型的右上臂为例。变

形前后的人体模型见下图2,图3

·52·MicrocomputerApplicationsVol.18,No.1,2002 研究与设计 微型电脑应用 2002年第18卷第1期

© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.