Anchor節(jié)點(diǎn)實(shí)現(xiàn)VRML虛擬場景跳轉(zhuǎn)
·88· 計(jì)算機(jī)與信息技術(shù) 經(jīng)驗(yàn)與交流Anchor 節(jié)點(diǎn)實(shí)現(xiàn)VRML 虛擬場景跳轉(zhuǎn)王昊鵬1,2,3 賈新宇1(1空
·88· 計(jì)算機(jī)與信息技術(shù) 經(jīng)驗(yàn)與交流
Anchor 節(jié)點(diǎn)實(shí)現(xiàn)VRML 虛擬場景跳轉(zhuǎn)
王昊鵬1,2,3 賈新宇1
(1空軍航空大學(xué)計(jì)算機(jī)教研室 吉林 長春 130022) (2中國科學(xué)院東北地理與農(nóng)業(yè)生態(tài)研究所 吉林 長春 130022)
3
(中國科學(xué)院研究生院)
摘 要 VRML 構(gòu)造復(fù)雜三維場景時(shí),通常需要多個(gè)場景的組合。因此,如何實(shí)現(xiàn)三維空間場景跳轉(zhuǎn)十分關(guān)鍵。本文
結(jié)合實(shí)例討論并給出利用Anchor 組節(jié)點(diǎn)實(shí)現(xiàn)多場景跳轉(zhuǎn)的方法。
關(guān)鍵詞 虛擬現(xiàn)實(shí),錨節(jié)點(diǎn),場景跳轉(zhuǎn)
1 引言
虛擬現(xiàn)實(shí)建模語言(Virtual Reality Modeling Language,簡稱VRML)是一種基于WWW 的具有一定規(guī)范的描述性格式語言。VRML可以快速生成、修飾三維實(shí)體對(duì)象,并提供強(qiáng)大的交互、動(dòng)畫和編程功能等。對(duì)于復(fù)雜三維場景的處理,VRML 提供一個(gè)錨點(diǎn)(空間鏈接),即Anchor 節(jié)點(diǎn)將復(fù)雜三維場景鏈接在一起,從而實(shí)現(xiàn)三維場景快速流暢跳轉(zhuǎn)。
eventIn 入事件。其中:
(1)eventOut出事件中包含Parameter_Changed域和Description_Changed域,用于傳出參數(shù)和相關(guān)描述的變化; (2)eventIn入事件是Anchor 節(jié)點(diǎn)的重要事件,它主要由AddChildren 和RemoveChildren 組成,它們均為MFNode 類型,即多值節(jié)點(diǎn)型。AddChildren用于在Anchor 節(jié)點(diǎn)的Children 域中子節(jié)點(diǎn)序列中加入指定節(jié)點(diǎn);RemoveChildren用于在Anchor 節(jié)點(diǎn)的Children 域子節(jié)點(diǎn)序列中刪除指定的節(jié)點(diǎn)。
2 Anchor節(jié)點(diǎn)
VRML 空間鏈接綁定在三維虛擬空間中的特定造型上,當(dāng)游覽者對(duì)帶有錨點(diǎn)的造型發(fā)生點(diǎn)擊事件時(shí),VRML瀏覽器將在Web 中提取目的空間場景。VRML 中的任何三維造型均可作為錨點(diǎn)造型。Anchor作為節(jié)點(diǎn)組,其中的任何一個(gè)子節(jié)點(diǎn)也可以作為引導(dǎo)到另一個(gè)空間的錨點(diǎn)。 2.1 Anchor節(jié)點(diǎn)結(jié)構(gòu)
Anchor 作為編組節(jié)點(diǎn)包括Children 公共域、Description公共域、bBoxSize域、bBoxCenter域和Parameter 域,具體功能如表1所示。
表1 Anchor編組節(jié)點(diǎn)
域名
指定包含在錨
Children 公共域
點(diǎn)組中的子節(jié)點(diǎn)列表
Description 公共域 bBoxSize 域 bBoxCenter 域 Parameter 域
URL
3 程序舉例
3.1 設(shè)計(jì)思路
首先,
創(chuàng)建2個(gè)VRML 虛擬空間場景Space1和Space2。虛擬空間場景Space1作為第一場場景由游覽者瀏覽。然后,在虛擬空間場景Space1中創(chuàng)建一個(gè)三維空間造型,這里我們創(chuàng)建一個(gè)“門”,將此“門”作為錨點(diǎn)造型。當(dāng)瀏覽者點(diǎn)擊“門”的錨點(diǎn)造型時(shí)將進(jìn)入虛擬空間場景Space2,從而實(shí)現(xiàn)場景間的跳轉(zhuǎn)(設(shè)計(jì)思路如圖1所示)。
功能描述
Shape 節(jié)點(diǎn)
指定目的Web 頁面按優(yōu)先級(jí)排序的URL 列表 錨點(diǎn)造型
描述目的Web 頁面字符串 指定一個(gè)約束長方體的尺寸 指定約束長方體的中心 指定錨點(diǎn)造型其他信息
圖1 2個(gè)虛擬空間場景的跳轉(zhuǎn)
2.2 Anchor節(jié)點(diǎn)事件
Anchor 節(jié)點(diǎn)主要有2個(gè)節(jié)點(diǎn)事件:eventOut出事件和
,經(jīng)驗(yàn)與交流 計(jì)算機(jī)與信息技術(shù) ·89·
3.2 虛擬空間場景的創(chuàng)建
(1)虛擬空間場景Space1
虛擬空間場景Space1中的“門”造型分“門”和“門把手”兩部分。利用Box 幾何節(jié)點(diǎn)構(gòu)造“門”造型,其三維尺
#VRML V2.0 utf8
Transform {
children [
# 創(chuàng)建“門”造型
Transform {
children [
Anchor {
url "Space2.wrl"
description "Click here go to next space!"
children [
# 創(chuàng)建“門”
Shape {
appearance Appearance {
material Material {
diffuseColor 1 1 1
}
}
geometry Box {
size 3.0 6.0 0.2
}
}
# 創(chuàng)建“門”把手
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 幾何節(jié)點(diǎn)構(gòu)造“門”把手,其半徑為0.2;利用URL 域創(chuàng)建鏈接,鏈接地址為“Space2.wrl”,從而使“門”三維空間造型成為錨點(diǎn)造型。Description公共域顯示關(guān)于錨點(diǎn)造型的提示信息。具體代碼如下:
,·90· 計(jì)算機(jī)與信息技術(shù) 經(jīng)驗(yàn)與交流
(2)虛擬空間場景Space2
虛擬空間場景Space2中是一個(gè)植物的植株體。通過虛擬空間場景Space1中的錨點(diǎn)進(jìn)入虛擬空間場景Space2。 3.3 驗(yàn)證運(yùn)行
利用VrmlPad 或文本文檔創(chuàng)建2個(gè)虛擬空間場景Space1和Space2,并保存在同一目錄下。運(yùn)行Space1.wrl,點(diǎn)擊“門”造型后,即可跳轉(zhuǎn)到Space2.wrl 虛擬空間場景中,程序運(yùn)行效果如圖2所示(系統(tǒng)中需安裝VRML 插件)。
虛擬場景內(nèi)部不同觀察點(diǎn)的跳轉(zhuǎn)是Anchor 節(jié)點(diǎn)的另一重要應(yīng)用。對(duì)于一個(gè)復(fù)雜的虛擬空間,通常包含多個(gè)三維造型或子空間,當(dāng)用戶瀏覽時(shí)會(huì)出現(xiàn)“迷失方向”的可能。利用Anchor 節(jié)點(diǎn)對(duì)某一造型做錨點(diǎn)處理,使其作為空間導(dǎo)航,即可解決瀏覽者“迷失方向”問題。
4 小結(jié)
本文討論了在VRML 中利用Anchor 節(jié)點(diǎn)實(shí)現(xiàn)多場景跳轉(zhuǎn)的方法。Anchor 節(jié)點(diǎn)在VRML 構(gòu)造復(fù)雜的虛擬空間中的作用十分重要,大場景或多場景的三維虛擬仿真研究中均會(huì)涉及到。如果將每個(gè)場景作為主場景的資源將嚴(yán)重影響程序的運(yùn)行效率。利用Anchor 節(jié)點(diǎn)則有效實(shí)現(xiàn)場景間的跳轉(zhuǎn),提高了瀏覽器對(duì)虛擬現(xiàn)實(shí)建模的解釋效率,也提高了其在網(wǎng)絡(luò)中的傳輸。
參考文獻(xiàn)
[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語言入門與應(yīng)用[M].中國鐵道出版社.2003年1月
圖2-1 虛擬空間場景
Space1
[4] 吳北新.虛擬現(xiàn)實(shí)建模語言VRML[M].高等教育出版社.2004年7月
[5] 張杰.VRML2.0交互式三維圖形編程[M].汕頭大學(xué)出版社.1999年1月
[6] 王昊鵬.VRML基于高程格網(wǎng)節(jié)點(diǎn)的復(fù)雜造型研究[J].微計(jì)算機(jī)信息.2006年7月年第22卷第7-1期.P211-212
收稿日期:3月22日 修改日期:4月4日
圖2-2 虛擬空間場景Space2
圖2 程序運(yùn)行效果