摘要:基于VRML(Virtual Reality Modeling Language)構造復雜三維場景時,通常需要多個場景的組合和鏈接。如何實現三維場景空間的流暢跳轉則十分關鍵。本文結合實例介紹了利用Anchor組節點實現虛擬場景間跳轉的方法,從而有效服務于網絡中復雜三維虛擬場景空間的跳轉。
關鍵詞:虛擬現實建模語言;虛擬場景;Anchor節點;跳轉
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)14-20891-02
1 引言
虛擬現實建模語言(Virtual Reality Modeling Language,簡稱VRML)是一種基于WWW的具有一定規范的描述性格式語言。VRML可以快速生成、修飾三維實體對象,并提供強大的交互、動畫和編程功能等。對于復雜三維場景的處理中,VRML提供一個錨點(空間鏈接),即Anchor節點將復雜三維場景鏈接在一起,從而實現三維場景快速跳轉,提高其在網絡中針對用戶的實時訪問、下載和傳輸性能。
2 Anchor節點
VRML空間鏈接綁定在三維虛擬空間中的特定造型上,當游覽者對帶有錨點的造型發生點擊事件時,VRML瀏覽器在Web中提取目的空間場景。VRML中的任何三維造型均可作為錨點造型。Anchor作為節點組,其中的任何一個子節點也可以作為引導到另一個空間的錨點。
2.1 Anchor節點結構
Anchor作為編組節點包括children公共域、description公共域、bBoxSize域、bBoxCenter域和parameter域,具體功能如表1所示。
2.2 Anchor節點事件
Anchor節點具體有2個典型的節點事件:eventOut出事件和eventIn入事件。其中:
(1)eventOut出事件中包含Parameter_Changed域和Description_Changed域,用于傳出參數和相關描述的變化;
(2)eventIn入事件是Anchor節點的重要事件,它主要由AddChildren和RemoveChildren組成,它們均為MFNode類型,即多值節點型。AddChildren用于在Anchor節點的Children域的子節點序列中加入指定節點;RemoveChildren用于在Anchor節點的Children域的子節點序列中刪除指定的節點。
3 程序舉例
3.1 設計思路
首先,創建2個VRML虛擬場景空間S1和S2。虛擬場景空間S1作為第一場場景由游覽者首先瀏覽。然后,在虛擬空間場景S1中創建一個三維空間造型,這里創建一個“門”造型,將此造型作為錨點造型。當瀏覽者點擊“門”的錨點造型時將跳轉到虛擬空間場景S2中,從而實現場景間一個完整的跳轉過程(原理示意如圖1所示)。
3.2 創建虛擬場景空間
3.2.1 虛擬場景空間S1
虛擬場景空間S1中的“門”造型由門和門把手組成。利用Box幾何節點構造“門”造型,其三維尺寸為[3.0 6.0 0.2]。利用Sphere幾何節點構造“門”把手,其半徑為0.2;利用URL域創建鏈接,鏈接地址為“S2.wrl”,從而使“門”三維造型成為錨點造型。Description公共域顯示關于錨點造型的提示信息。具體代碼如下:
#VRML V2.0 utf8
Transform {
children [
# 創建“門”造型
Transform {
children [
Anchor {
url \"S2.wrl\"
description \"Click here go to next space!\"
children [
# 創建“門”
Shape {
appearance Appearance {
material Material {
……}
3.2.2 虛擬場景空間S2
虛擬場景空間S2則使用Cylinder節點創建一個圓柱體。由于S2只是虛擬空間場景跳轉的延續內容,所以其代碼不做詳細說明。
3.3 效果驗證
利用VrmlPad或文本文檔創建2個虛擬場景空間S1和S2,并保存在同一目錄下。當游覽虛擬場景空間S1.wrl時,點擊“門”的三維造型后,即可跳轉到S2.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.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文