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 程序运行效果