Anchor节点实现VRML虚拟场景跳转

·88· 计算机与信息技术 经验与交流Anchor 节点实现VRML 虚拟场景跳转王昊鹏1,2,3 贾新宇1(1空

·88· 计算机与信息技术 经验与交流

Anchor 节点实现VRML 虚拟场景跳转

王昊鹏1,2,3 贾新宇1

(1空军航空大学计算机教研室 吉林 长春 130022) (2中国科学院东北地理与农业生态研究所 吉林 长春 130022)

3

(中国科学院研究生院)

摘 要 VRML 构造复杂三维场景时,通常需要多个场景的组合。因此,如何实现三维空间场景跳转十分关键。本文

结合实例讨论并给出利用Anchor 组节点实现多场景跳转的方法。

关键词 虚拟现实,锚节点,场景跳转

1 引言

虚拟现实建模语言(Virtual Reality Modeling Language,简称VRML)是一种基于WWW 的具有一定规范的描述性格式语言。VRML可以快速生成、修饰三维实体对象,并提供强大的交互、动画和编程功能等。对于复杂三维场景的处理,VRML 提供一个锚点(空间链接),即Anchor 节点将复杂三维场景链接在一起,从而实现三维场景快速流畅跳转。

eventIn 入事件。其中:

(1)eventOut出事件中包含Parameter_Changed域和Description_Changed域,用于传出参数和相关描述的变化; (2)eventIn入事件是Anchor 节点的重要事件,它主要由AddChildren 和RemoveChildren 组成,它们均为MFNode 类型,即多值节点型。AddChildren用于在Anchor 节点的Children 域中子节点序列中加入指定节点;RemoveChildren用于在Anchor 节点的Children 域子节点序列中删除指定的节点。

2 Anchor节点

VRML 空间链接绑定在三维虚拟空间中的特定造型上,当游览者对带有锚点的造型发生点击事件时,VRML浏览器将在Web 中提取目的空间场景。VRML 中的任何三维造型均可作为锚点造型。Anchor作为节点组,其中的任何一个子节点也可以作为引导到另一个空间的锚点。 2.1 Anchor节点结构

Anchor 作为编组节点包括Children 公共域、Description公共域、bBoxSize域、bBoxCenter域和Parameter 域,具体功能如表1所示。

表1 Anchor编组节点

域名

指定包含在锚

Children 公共域

点组中的子节点列表

Description 公共域 bBoxSize 域 bBoxCenter 域 Parameter 域

URL

3 程序举例

3.1 设计思路

首先,

创建2个VRML 虚拟空间场景Space1和Space2。虚拟空间场景Space1作为第一场场景由游览者浏览。然后,在虚拟空间场景Space1中创建一个三维空间造型,这里我们创建一个“门”,将此“门”作为锚点造型。当浏览者点击“门”的锚点造型时将进入虚拟空间场景Space2,从而实现场景间的跳转(设计思路如图1所示)。

功能描述

Shape 节点

指定目的Web 页面按优先级排序的URL 列表 锚点造型

描述目的Web 页面字符串 指定一个约束长方体的尺寸 指定约束长方体的中心 指定锚点造型其他信息

图1 2个虚拟空间场景的跳转

2.2 Anchor节点事件

Anchor 节点主要有2个节点事件:eventOut出事件和

,

经验与交流 计算机与信息技术 ·89·

3.2 虚拟空间场景的创建

(1)虚拟空间场景Space1

虚拟空间场景Space1中的“门”造型分“门”和“门把手”两部分。利用Box 几何节点构造“门”造型,其三维尺

#VRML V2.0 utf8

Transform {

children [

# 创建“门”造型

Transform {

children [

Anchor {

url "Space2.wrl"

description "Click here go to next space!"

children [

# 创建“门”

Shape {

appearance Appearance {

material Material {

diffuseColor 1 1 1

}

}

geometry Box {

size 3.0 6.0 0.2

}

}

# 创建“门”把手

Transform {

translation 1 0 1

children [

Shape {

appearance Appearance {

material Material {

diffuseColor 0.3 0.3 0.3

}

}

geometry Sphere {

radius 0.2

}

}

]

}

]

}

]

}

]

} 寸为[3.0 6.0 0.2]。利用Sphere 几何节点构造“门”把手,其半径为0.2;利用URL 域创建链接,链接地址为“Space2.wrl”,从而使“门”三维空间造型成为锚点造型。Description公共域显示关于锚点造型的提示信息。具体代码如下:

,

·90· 计算机与信息技术 经验与交流

(2)虚拟空间场景Space2

虚拟空间场景Space2中是一个植物的植株体。通过虚拟空间场景Space1中的锚点进入虚拟空间场景Space2。 3.3 验证运行

利用VrmlPad 或文本文档创建2个虚拟空间场景Space1和Space2,并保存在同一目录下。运行Space1.wrl,点击“门”造型后,即可跳转到Space2.wrl 虚拟空间场景中,程序运行效果如图2所示(系统中需安装VRML 插件)。

虚拟场景内部不同观察点的跳转是Anchor 节点的另一重要应用。对于一个复杂的虚拟空间,通常包含多个三维造型或子空间,当用户浏览时会出现“迷失方向”的可能。利用Anchor 节点对某一造型做锚点处理,使其作为空间导航,即可解决浏览者“迷失方向”问题。

4 小结

本文讨论了在VRML 中利用Anchor 节点实现多场景跳转的方法。Anchor 节点在VRML 构造复杂的虚拟空间中的作用十分重要,大场景或多场景的三维虚拟仿真研究中均会涉及到。如果将每个场景作为主场景的资源将严重影响程序的运行效率。利用Anchor 节点则有效实现场景间的跳转,提高了浏览器对虚拟现实建模的解释效率,也提高了其在网络中的传输。

参考文献

[1] Andreas Dietrich, Ingo Wald, Markus Wagner and Philipp Slusallek.VRML Scene Graphs on an Interactive Ray Tracing Engine[J].Computer Security.2004.5: 109-116

[2] Igor Rojdestvenski, Michael Cottam .Visualizing metabolic networks in VRML[J].Computer Security.2002

[3] 黄文丽,卢碧红,杨志刚,景宁 等.VRML语言入门与应用[M].中国铁道出版社.2003年1月

图2-1 虚拟空间场景

Space1

[4] 吴北新.虚拟现实建模语言VRML[M].高等教育出版社.2004年7月

[5] 张杰.VRML2.0交互式三维图形编程[M].汕头大学出版社.1999年1月

[6] 王昊鹏.VRML基于高程格网节点的复杂造型研究[J].微计算机信息.2006年7月年第22卷第7-1期.P211-212

收稿日期:3月22日 修改日期:4月4日

图2-2 虚拟空间场景Space2

图2 程序运行效果

标签: