愛采購

發產品

  • 發布供應
  • 管理供應

虛擬水族館三維建模和漫游研究

   2012-11-05 轉載于網絡佚名3800
導讀

近年來,虛擬現實在生態信息可視化方面的應用正成為生態學者和計算機研究者共同感興趣的課題。水族館是一個展示海洋生態資源的場

近年來,虛擬現實在生態信息可視化方面的應用正成為生態學者和計算機研究者共同感興趣的課題。水族館是一個展示海洋生態資源的場所, 一座水族館通常造價昂貴而在中國每個城市中并不普及, 采用虛擬現實來實現水族館生態信息的可視化具有重要的現實意義。本文在分析國內外水族館景觀要素的基礎上,提出了建立網上三維虛擬水族館的方法。使用VRML97和3DSMAX共同建立網上虛擬水族館景觀,利用VRML強大的交互功能,在微機上實現了虛擬水族館的三維漫游和水族生物的動畫。本文的方法可以應用到水族館的景觀規劃和網上展示中。

1、引言

自然生態資源的合理開發和利用是社會可持續發展的重要組成部分,如何利用新技術開發生態資源是人們普遍關注的話題。近年來,虛擬現實技術在生態信息可視化方面正不斷取得新的應用成果。以生態旅游信息資源的利用為例,生態旅游強調對自然景觀的保護,是可持續發展的旅游。并且在生態旅游的全過程中,必須使旅游者受到生動具體的生態教育。把虛擬現實技術引入到生態旅游可以有效地克服旅游信息時間和空間的限制,從而達到更好的教育效果。

傳統旅游的局限性主要表現為:

(1)從空間角度來講。由于地域限制,很多地方沒有條件或空間開發旅游資源。特別在人口稠密地區,土地資源少,政府不易去開發較多的大型森林公園或是動物園,不居住在公園附近的人們很少有機會能利用到這些旅游資源。另外,也有很多旅游地不是常人能涉足的,但是又能引起人們興趣,如太空漫步、極地探險、海底尋寶等等。都市化生活使人們更加留戀大自然,但是由于時間、金錢、地理位置等的局限,有些人就不能經常親臨諸多旅游勝地進行實地游覽,也需要通過其他渠道獲得這一方面的旅游體驗。

(2)從時間角度來看,有些已經滅絕的物種和那些瀕臨滅絕要特別保護的物種,同樣有觀賞和學習的價值,也能引起人們廣泛的興趣和好奇心(如:恐龍時代)。但是,我們卻很難獲取相關的知識。近年來,虛擬現實技術的發展為人類觀察自然提供了新的技術手段,利用虛擬現實技術,可以構造各種虛擬旅游資源,在一定程度上彌補了現實生態旅游的不足,更能實現場景與人之間的互動,對旅游資源的開發具有重要意義,值得推廣研究。作為一種嘗試,本文提出了構造虛擬水族館的方法。水族館是一個展示水生生物的場所,集科普、教育、自然保護、觀光與一體。水族館具有很高的科技含量(如:水質處理、人工海水配置、水生生物的飼養、水族館的建造材料、照明、布景等)。水族館的發展始于18世紀后葉,1789年,法國建立了世界上第一個水族館,其后,日本、英國、美國也相繼建立。水族館在國外大致經歷了三個發展階段,即火車窗式,洄游槽式和大型綜合式。我國海域跨越熱帶、亞熱帶、溫帶三大氣候帶,海洋生物資源豐富,人們很早就意識到利用水族館來提高人們對保護海洋資源的認識。1932年,我國建立了近代第一個水族館--青島水族館,在當時屬亞洲一流水平。近年來,隨著經濟的發展,我國很多城市開始興建水族館,投資規模也不斷增加。

如果置身于水族館中,就可以感受五光十色的海底世界,觀賞飄動搖曳的各種海草以及各類悠閑游弋的魚類,傾聽海流的低吟,這些會帶給人們美的享受。通常,水族館的造價昂貴,遠未普及,一般都是建在沿海城市或省城里,門票的價格也很貴。水族館建設也存在一些局限性,如資金、氣候、場地等的限制,在許多情況下,很多地方沒有條件建立水族館,如在我國北方嚴寒地區就不適合開發露天水族館。另外,即使有些城市建立了水族館,城市里的大多數人很少有機會享受水族館的資源,如何讓更多的人(特別是青少年)參觀利用水族館是人們感興趣的一個話題。本文在借鑒國內外水族館資源開發工作的基礎上,提出了虛擬水族館的概念。所謂虛擬水族館就是采用虛擬現實技術,通過在計算機上建立一個類似于真實水族館的虛擬環境,讓游覽者實現虛擬觀賞效果。虛擬水族館不僅能夠模擬真實水族館的景觀,還能夠保護珍貴的水生生物,因為水族館里所有的生物都是虛擬的。同樣,在虛擬水族館中,我們可以編制更多種類的生物,避免了由于地理位置、氣候等因素帶來的不同生物生存環境的限制。這項技術對于由于地域限制而無法開發水族館的地區是十分值得提倡的。虛擬水族館的組成主要包括:魚箱、各種魚的模型、各種海底生物、山石的模型等。還要包括背景、燈光的設置以及各種生物的行為設置等等。虛擬水族館目前在國外雖然已經得到初步開發,但價格也很昂貴,不利于普及。例如,葡萄牙里斯本海洋水族館,作為在葡萄牙第98屆世界博覽會上的一部分,一個超級圖形計算機模擬這個海洋水族館的外表和其周圍的環境以及它的內景,包括生活在海平面上下的海洋生物[7]。從觀賞的角度上分析,如果為海底生物建立類似于人工魚的行為模型,必然要增加很大的計算量,為此,可以考慮簡化海底生物的運動,從而達到可以在普通微機上開發的目標。

本文在對虛擬水族館景觀要素分析的基礎上,以普通微機作為開發工具,采用虛擬現實造型語言VRML97和 3DS MAX實現了某虛擬水族館的場景,利用VRML強大的交互功能,實現了虛擬水族館中生命體的動畫,本文的方法為開發水族館資源提供一種新的手段,水族館的游覽者不再受時空的限制,更好地實現了人與水族館的互動。本文的方法可以應用到水族館的景觀規劃和網上展示中。

2、虛擬水族館的場景設計

虛擬水族館具有透明的玻璃幕,里面有許多浮游的虛擬魚、虛擬海草、虛擬礁石和虛擬燈光。本文采用3DS MAX作為三維建模的工具,虛擬水族館的所有景觀物體均事先在3DS MAX中繪制好(紋理通過預先拍照獲?。缓笤賹⑷S模型導成VRML97的格式。具體繪制步驟概括如下:

(1)在3DS MAX繪制虛擬水族館的水箱和建筑模型:

虛擬水族館3DMAX編輯界面  
虛擬水族館3DMAX編輯界面

虛擬水族館 
虛擬水族館

虛擬水族箱模型 
虛擬水族箱模型

(2)繪制不規則形狀的靜態物體:不規則形狀物體包括海底和礁石,可先繪制一個規則形狀的物體,然后通過在編輯過程中添加噪聲來實現不規則的效果。最后,選擇合適的貼圖來實現表面視覺效果。

(3)繪制海草:可以有多種方法繪制海草的幾何造型,為了表現海草的運動,可以設定波浪空間扭曲物體,將其扭曲影響施加給海草,實現海草的運動效果。

(4)海底生物的繪制:主要是包括虛擬海星和虛擬魚,可采用多種方式實現。虛擬魚的模型完成后,可以為其設定骨骼系統來實現運動。虛擬魚的運動包括魚尾的擺動和身體的前進。其中,魚尾的擺動通過創建骨骼、設置骨骼的運動,將魚的身體作為骨骼的蒙皮來實現。身體的前進通過路徑約束并在此基礎上調整魚的位置(設置關鍵幀)實現。如圖所示。

虛擬水族館魚的骨骼 
虛擬水族館魚的骨骼

虛擬水族館編輯魚的表皮 
虛擬水族館編輯魚的表皮

虛擬水族箱路徑約束 
虛擬水族箱路徑約束

3、虛擬水族館動態效果編程

虛擬水族館的動態效果包括以下幾個方面:

(1)設定不同的漫游視點:利用VRML的ViewPoint視點說明語句,實現不同視點的漫游效果。其中,從魚的視角觀察周圍世界需要使用動畫視點的方法,即將一個視點綁定于魚的頭部,作為魚的眼睛來觀察周圍的景物。如果魚的運動路徑已經在3ds max中設置好,可以將攝像機鏈接到魚頭部。為了提高漫游的效果,需要設置自動漫游,可以通過在3ds max設置攝像機動畫來實現。

(2)虛擬魚的動畫:在3DSMAX中預先設置魚的游動動畫,然后可以直接轉換成轉化為VRML動畫文件,可以用文本編輯器打開此文件,對其中的關鍵語句(如傳感器TimeSensor、位置插值PositionInterpolator、朝向插值OrientationInterpolator、坐標插值CoordinateInterpolator等)的參數進行修改調整。

虛擬魚和環境的碰撞檢測可以利用VRML中節點Collision來實現,但當魚的數量很多時,需要進行大量的碰撞檢測。在本文實現的原型中,出于視覺觀賞的考慮,不追求虛擬魚行為的真實感。為避免魚在水中游動時與障礙物發生碰撞,采取了比較簡單的方法,即為每一種魚設置好運動路徑,這些路徑避開靜態的障礙物,并在空間上盡量避開其他魚的運動路徑。

(3)光線的動態效果:虛擬水族館可以利用光線的變化來烘托氣氛,調動用戶的情緒。使用時間傳感器和顏色插補器來實現不同環境背景的轉換動畫。方法是在場景中選擇需要變色的光源,用顏色插補器控制光源的顏色屬性來實現不同燈光背景的顏色轉換。主要代碼為:

DEF clock TimeSensor { #時間傳感器
cycleInterval 100
loop TRUE}
DEF inter ColorInterpolator {
#顏色插補器
key [
0.0 0.33 0.67 1.0
]
keyValue [
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
1.0 0.0 0.0
]
}
ROUTE clock.fraction_changed TO inter.set_fraction
ROUTE inter.value_changed TO plr-LIGHT.set_color
ROUTE inter.value_changed TO sp. set_diffuseColor

其中,clock是定義的時間傳感器節點名,inter是定義的顏色插補器節點名,plr-LIGHT是定義過的光源節點名,sp是定義過的一個長方體(水族館)節點名。通過路由語句創建事件傳播體系,隨著時間的推移,光源和水族館表面的顏色根據顏色插補器中設置的顏色值不斷發生變化。

(4)動態交互:VRML的Script節點可以實現動態交互功能,Script節點的定義如下:

Script {
url []
directOutput FALSE
mustEvaluate FALSE
eventIn eventTypeName eventName #多個入事件、出事件和域
eventOut eventTypeName eventName
fieldTypeName fieldName initialValue
}

其中url域的值設置一個url列表,列表中的url域值可調用Java、JavaScript等腳本語言。

mustEvaluate域的值設置腳本程序何時進行處理。若該值為TRUE,則當Script節點的某個eventIn入事件接收到一個新值,瀏覽器將立即對相應的腳本程序進行處理。若為FALSE,則可推遲對該腳本程序的處理。directOutput域的值設置腳本程序的輸出是否受限制。默認情況下為FALSE,即腳本不能直接進行寫操作或對任何節點發送入事件,但可以訪問。例如,在虛擬水族館中可以實現開啟燈和音樂的動畫。具體實現是:從3ds max導出的VRML文件中插入所需要設置的聲音節點s和光源節點center-LIGHT,并在觸發對象(一個綠色小球key0)節點代碼中插入名為mouse的接觸傳感器節點,即在小球key0上捆綁了接觸傳感器使之成為一個可交互的造型,當鼠標單擊綠色小球時即可實現開啟燈和音樂的動畫。主要代碼如下

DEF s Sound { #聲音節點
source AudioClip {
url "sea.wav"
loop TRUE
}
direction 1 0 0
intensity 0.0 #表示靜音
maxBack 300
maxFront 300
minBack 150
minFront 150
spatialize FALSE #作為環境音
}
DEF center-LIGHT PointLight { #光源節點
intensity 1
color 1 1 1
location -18.72 105.4 0
on FALSE #表示燈關
radius 204.9
}
DEF key0 Transform { #開關(綠色小球)
translation -28.75 16.38 -13.41
children [
Shape { …… }
DEF mouse TouchSensor { }
]
}

接下來在VRML文件的末尾插入Script節點和路由語句,代碼如下:

DEF path Script { #Script節點
eventIn SFTime time
eventOut SFBool light
eventOut SFFloat loudsound
url "javascript:
function time(){
light = TRUE ;
loudsound = 0.5;
}"
}
ROUTE mouse.touchTime TO path.time
ROUTE path.light TO center-LIGHT.on
ROUTE path.loudsound TO s.intensity

以上Script節點共定義了一個SFTime類型的入事件time、一個SFBool類型的出事件light來控制燈的開啟、一個SFFloat類型的出事件loudsound來控制音樂的響起。通過JavaScript腳本程序為time入事件定義了一個同名函數time( ),并使用賦值語句為出事件light和loudsound賦值,從而改變場景節點的相關參數。由于場景中綠色小球捆綁了接觸傳感器,一旦使用鼠標單擊小球,傳感器就輸出touchTime事件,而Script節點的time入事件通過路由接收到傳感器輸出的事件后將自動調用time()函數進行處理,處理結果是將改變后的light和loudsound值分別通過路由輸出到光源center-LIGHT和聲音s的相關域上,使得燈開啟、音樂也隨之響起。

(5)Lod技術:Lod是一個VRML的節點,它能夠根據物體與觀察者之間的距離選擇同一對象的不同細節的版本來控制場景的復雜度。如果一個物體是接近觀察者的,那么該物體是高度細節化的,觀察者能較清楚地看到物體表面特征,越靠近越清晰;如果物體是遠離觀察者的,那么觀察者將不會發覺小的細節。Lod技術的作用能夠保證了在不降低瀏覽效果的同時提高系統的交互性和圖像繪制速度。

可以在3DSMAX中直接插入VRML節點的方式來使用Lod技術,也可以在VRML文件中直接編輯。LOD節點的語法格式為:

LOD {level []
center 0.0 0.0 0.0
range [] }

其中level域的值設置細節層次節點列表。一般將第一個層次節點設置為高細節造型,其后的層次節點程度依次降低。center域的值表示LOD節點內建立的模型中心在當前坐標系中的三維坐標。range域的值設置瀏覽者與造型間的距離列表。瀏覽器根據距離列表選定需要渲染的level域中的就節點造型。range域的值須大于等于零,且必須遞增排列。

在本文,主要針對虛擬魚造型紋理清晰度的變化來實現細節層次。即分別創建兩個VRML文件(通過3ds max導出),一個是清晰度較強的高細節造型,命名為near.wrl;另一個是缺少魚的紋理的造型文件far.wrl。再在LOD編組節點的level域中通過Inline加以引用,將兩個文件組織在一起,通過range域中合理的設置達到瀏覽效果。代碼如下:

#VRML V2.0 utf8
LOD {level [
Inline {url "near.wrl"}
Inline {url "far.wrl"}
]
range [150] }

當瀏覽者與造型的距離小于150時,看到的場景是高細節的;當這個距離值大于150時,看到的場景是相對低細節的。

4、原型系統

虛擬水族館的演示效果見圖。

虛擬水族館 
虛擬水族館

虛擬水族館 
虛擬水族館

虛擬水族館虛擬魚在游動 
虛擬水族館虛擬魚在游動

5、結 論

本文提出了建立虛擬水族館的方法,實現用瀏覽器觀看虛擬水族館的效果,利用3DSMAX和VRML的功能,初步實現了虛擬水族館的多媒體互動演示功能,游覽者可以在普通的微機上感受虛擬水族館的場景。本文提出的方法為今后水族館資源的開發提供了一種新的技術手段。

 
反對 0舉報 0 收藏 0 打賞 0評論 0
免責聲明
本文為佚名原創作品,作者: 佚名。歡迎轉載,轉載請注明原文出處:http://www.451292.com/news/show-3759.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們。
 
更多>同類資訊頭條

入駐

企業入駐成功 可尊享多重特權

入駐熱線:18682138895

請手機掃碼訪問

客服

客服熱線:18682138895

小程序

小程序更便捷的查找產品

為您提供專業幫買咨詢服務

請用微信掃碼

公眾號

微信公眾號,收獲商機

微信掃碼關注

頂部

91中文在线