




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
虛擬現(xiàn)實技術(shù)及應(yīng)用第1章虛擬現(xiàn)實技術(shù)概論第二章VRML根底知識第三章VRML高級造型節(jié)點第四章視點與導(dǎo)航第五章造型外觀
第六章光照
第七章聲音背景
第八章動感造型
第九章傳感器節(jié)點
第十章腳本節(jié)點
第十一章自定義節(jié)點第1章虛擬現(xiàn)實技術(shù)概論1.1 虛擬現(xiàn)實技術(shù)的開展史1.2 虛擬現(xiàn)實技術(shù)的概念1.3 虛擬現(xiàn)實技術(shù)的特征1.4 虛擬現(xiàn)實系統(tǒng)的分類1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.6 虛擬現(xiàn)實技術(shù)的研究現(xiàn)狀虛擬現(xiàn)實技術(shù)虛擬現(xiàn)實技術(shù)〔VirtualReality〕簡稱VR技術(shù),是20世紀末逐漸興起的一門綜合性信息技術(shù),融合了數(shù)字圖像處理、計算機圖形學、人工智能、多媒體、傳感器、網(wǎng)絡(luò)以及并行處理等多個信息技術(shù)分支的最新開展成果。1.1 虛擬現(xiàn)實技術(shù)的開展史1929年,EdwardLink設(shè)計出用于訓(xùn)練飛行員的模擬器,,使乘坐者的感覺和坐在真的飛機上是一樣的。。1956年,MortonHeilig開發(fā)出摩托車仿真器Sensorama,Sensorama具有三維顯示及立體聲效果,并能產(chǎn)生振動和風吹的感覺。1.1 虛擬現(xiàn)實技術(shù)的開展史1965年,IvanSutherland發(fā)表論文“UltimateDisplay〞〔終極的顯示〕1965年,IvanSutherland在篇名為?TheUltimateDisplay?〔終極的顯示〕的論文中首次提出了包括具有交互圖形顯示、力反響設(shè)備以及聲音提示的虛擬現(xiàn)實系統(tǒng)的根本思想,從此,人們正式開始了對虛擬現(xiàn)實系統(tǒng)的研究探索歷程。1966年,美國的MIT林肯實驗室在海軍科研辦公室的資助下,研制出了第一個頭盔式顯示器(HMD),隨后又將模擬力和觸覺的反響裝置參加到系統(tǒng)中。1967年,美國北卡羅來納大學開始了Grup方案,研究探討力反響(ForceFeedback)裝置。該裝置可以將物理壓力通過用戶接口引向用戶,可以使人感到一種計算機仿真力。1968年,IvanSutherland研制成功了帶跟蹤器的頭盔式立體顯示器〔HeadMountedDisplay,HMD〕1.1 虛擬現(xiàn)實技術(shù)的開展史1972年,NolanBushnell〔IvanSutherland學生〕開發(fā)出第一個交互式電子游戲Pong,在一臺機器上模擬乒乓球,1977年,DanSandin、TomDeFanti和RichSayre研制出第一個數(shù)據(jù)手套——SayreGlove20世紀80年代,美國國家航空航天局〔NASA〕組織了一系列有關(guān)VR技術(shù)的研究:1984年,NASAAmes研究中心的M.McGreevy和J.Humphries開發(fā)出用于火星探測的虛擬環(huán)境視覺顯示器;1987年,JimHumphries設(shè)計了雙目全方位監(jiān)視器〔BOOM〕的最早原型。1.1 虛擬現(xiàn)實技術(shù)的開展史1990年,在美國達拉斯召開的Siggraph會議上,明確提出VR技術(shù)研究的主要內(nèi)容包括實時三維圖形生成技術(shù)、多傳感器交互技術(shù)和高分辨率顯示技術(shù),為VR技術(shù)的開展確定了研究方向。從20世紀90年代開始,VR技術(shù)的研究熱潮也開始向民間的高科技企業(yè)轉(zhuǎn)移。著名的VPL公司〔發(fā)出第一套傳感手套命名為“DataGloves〞,第一套HMD命名為“EyePhones〞。20世紀90年代,迅速開展的計算機軟件、硬件系統(tǒng)使得基于大型數(shù)據(jù)集合的聲音和圖像的實時動畫制作成為可能,越來越多的新穎、實用的輸入輸出設(shè)備相繼進入市場,而人機交互系統(tǒng)的設(shè)計也在不斷創(chuàng)新,這些都為虛擬現(xiàn)實系統(tǒng)的開展打下了良好的根底。其中,利用虛擬現(xiàn)實技術(shù)設(shè)計波音777獲得成功,是近幾年來又一件引起科技界矚目的偉大成果。1994年3月在日內(nèi)瓦召開的第一屆WWW大會上,首次正式提出了VRML這個名字。后來又出現(xiàn)了大量的VR建模語言,如:X3D,Java3D等。1994年,BurdeaG和Coiffet出版了虛擬現(xiàn)實技術(shù)一書,在書中他用3I〔Imagination、Interaction、Immersion〕概括VR的三個根本特征。進入21世紀后,VR技術(shù)更是進入軟件高速開展的時期,
一些有代表性的VR軟件開發(fā)系統(tǒng)不斷在開展完善,如MultiGenVega、OpenSceneGraph、Virtools等。1.2 虛擬現(xiàn)實技術(shù)的概念虛擬現(xiàn)實技術(shù)是指利用計算機生成一種模擬環(huán)境,并通過多種專用設(shè)備使用戶“投入〞到該環(huán)境中,實現(xiàn)用戶與該環(huán)境直接進行自然交互的技術(shù)。VR讓用戶使用人的自然技能對虛擬世界中的物體進行操作,并能提供視覺聽覺觸覺等直觀自然的實時感知。1.2 虛擬現(xiàn)實技術(shù)的概念個完整的虛擬現(xiàn)實系統(tǒng)由虛擬環(huán)境、以高性能計算機為核心的虛擬環(huán)境處理器、以頭盔顯示器為核心的視覺系統(tǒng)、以語音識別、聲音合成與聲音定位為核心的聽覺系統(tǒng)、以方位跟蹤器、數(shù)據(jù)手套和數(shù)據(jù)衣為主體的身體方位姿態(tài)跟蹤設(shè)備,以及味覺、嗅覺、觸覺與力覺反響系統(tǒng)等功能單元構(gòu)成。。虛擬現(xiàn)實交互設(shè)備
在VR系統(tǒng)中,有許多有趣的、功能不同的專用設(shè)備,下面選一些代表性的設(shè)備加以介紹。顯示設(shè)備:頭盔顯示器BOOM可移動式顯示器:它是一種半投入式視覺顯示設(shè)備。使用時,用戶可以把顯示器方便地置于眼前,不用時可以很快移開。BOOM使用小型的陰極射線管,產(chǎn)生的像素數(shù)遠遠小于液晶顯示屏,圖像比較柔和,分辨率為1280×1024像素,彩色圖像。Crt終端-液晶光閘眼鏡大屏幕投影液晶光閘眼鏡2.操作設(shè)備數(shù)據(jù)手套力矩球操縱桿觸覺反響力學反響TELETACT手套它是一種用于觸覺和力覺反響的裝置,利用小氣袋向手提供觸覺和力覺的刺激。這些小氣袋能被迅速地加壓和減壓。當虛擬手接觸一件虛擬物體時,存儲在計算機里的該物體的力模式被調(diào)用,壓縮機迅速對氣袋充氣或放氣,使手部有一種非常精確的觸覺。數(shù)據(jù)衣為了讓VR系統(tǒng)識別全身運動而設(shè)計的輸入裝置。數(shù)據(jù)衣對人體大約50多個不同的關(guān)節(jié)進行測量,包括膝蓋、手臂、軀干和腳。通過光電轉(zhuǎn)換,身體的運動信息被計算機識別。通過BOOM顯示器和數(shù)據(jù)手套與虛擬現(xiàn)實交互數(shù)據(jù)衣1.3 虛擬現(xiàn)實技術(shù)的特征VR技術(shù)的三角形交互性〔Interactivity〕沉浸感〔Immersion〕想象力〔Imagination〕1.3 虛擬現(xiàn)實技術(shù)的特征VR技術(shù)的交互性:指用戶對虛擬環(huán)境中對象的可操作程度和從虛擬環(huán)境中得到反響的自然程度〔包括實時性〕。主要借助于各種專用設(shè)備〔如頭盔顯示器、數(shù)據(jù)手套等〕產(chǎn)生,從而使用戶以自然方式如手勢、體勢、語言等技能,如同在真實世界中一樣操作虛擬環(huán)境中的對象。1.3 虛擬現(xiàn)實技術(shù)的特征VR技術(shù)的沉浸感:又稱臨場感,是指用戶感到作為主角存在于虛擬環(huán)境中的真實程度。VR技術(shù)最主要的特征。VR的“沉浸感〞特性使它與一般的交互式三維圖形有較大的不同:用戶可以沉浸于數(shù)據(jù)空間,可以從數(shù)據(jù)空間向外觀察,從而可以使用戶能以更自然、更直接的方式與數(shù)據(jù)交互。利用沉浸功能,使用戶暫時與現(xiàn)實隔離,投入到虛擬環(huán)境中去,從而能更真實地注視數(shù)據(jù)。VR界面也可以給技術(shù)人員及創(chuàng)作人員提供真實數(shù)據(jù),以便正確創(chuàng)立虛擬環(huán)境,這樣有助于用戶更快、更全面地分析理解數(shù)據(jù)。因此,VR技術(shù)將從根本上改變?nèi)伺c計算機系統(tǒng)的交互操作方式。1.3 虛擬現(xiàn)實技術(shù)的特征VR技術(shù)的想象力:指用戶在虛擬世界中根據(jù)所獲取的多種信息和自身在系統(tǒng)中的行為,通過邏輯判斷、推理和聯(lián)想等思維過程,隨著系統(tǒng)的運行狀態(tài)變化而對其未來進展進行想象的能力,隨意設(shè)想客觀不存在或不可能發(fā)生的環(huán)境。對適當?shù)膽?yīng)用對象加上虛擬現(xiàn)實的創(chuàng)意和想象力,可以大幅度提高生產(chǎn)效率、減輕勞動強度、提高產(chǎn)品開發(fā)質(zhì)量。1.4 虛擬現(xiàn)實系統(tǒng)的分類
1.4.1桌面式VR系統(tǒng)〔DesktopVR〕1.4.2沉浸式VR系統(tǒng)〔ImmersiveVR〕1.4.3增強式VR系統(tǒng)〔AugmentedVR〕1.4.4分布式VR系統(tǒng)〔DistributedVR〕1.4 虛擬現(xiàn)實系統(tǒng)的分類
1.4.1桌面式VR系統(tǒng)使用個人計算機和低級工作站來產(chǎn)生三維空間的交互場景。用戶會受到周圍現(xiàn)實環(huán)境的干擾而不能獲得完全的沉浸感,但由于其本錢相對較低,桌面式VR系統(tǒng)仍然比較普及,與一般用戶接過。最大的優(yōu)點:廉價。1.4 虛擬現(xiàn)實系統(tǒng)的分類
1.4.2沉浸式VR系統(tǒng)利用頭盔顯示器、洞穴式顯示設(shè)備和數(shù)據(jù)手套等交互設(shè)備把用戶的視覺、聽覺和其他感覺封閉起來,而使用戶真正成為VR系統(tǒng)內(nèi)部的一個參與者,產(chǎn)生一種身臨其境、全心投入并沉浸其中的體驗。系統(tǒng)中有個用戶的替身。用戶在系統(tǒng)外面,用戶與替身在感覺上有一個距離,這個距離越小。沉浸感超強,當用戶與替身完全重合是。用戶就完全進入到系統(tǒng)中了與桌面式VR系統(tǒng)相比,沉浸式VR系統(tǒng)的主要特點在于高度的實時性和沉浸感。1.4 虛擬現(xiàn)實系統(tǒng)的分類
1.4.3增強式VR系統(tǒng)允許用戶對現(xiàn)實世界進行觀察的同時,將虛擬圖像疊加在真實物理對象之上。為用戶提供與所看到的真實環(huán)境有關(guān)的、存儲在計算機中的信息,從而增強用戶對真實環(huán)境的感受,又被稱為疊加式或補充現(xiàn)實式VR系統(tǒng)。可以使用光學技術(shù)或視頻技術(shù)實現(xiàn)。1.4 虛擬現(xiàn)實系統(tǒng)的分類
1.4.4分布式VR系統(tǒng)指基于網(wǎng)絡(luò)構(gòu)建的虛擬環(huán)境,將位于不同物理位置的多個用戶或多個虛擬環(huán)境通過網(wǎng)絡(luò)相連接并共享信息,從而使用戶的協(xié)同工作到達一個更高的境界。主要被應(yīng)用于遠程虛擬會議、虛擬醫(yī)學會診、多人網(wǎng)絡(luò)游戲、虛擬戰(zhàn)爭演習等領(lǐng)域。1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域
1.5.1 教育與訓(xùn)練1.5.2 設(shè)計與規(guī)劃1.5.3 科學計算可視化1.5.4 商業(yè)領(lǐng)域1.5.5 藝術(shù)與娛樂1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.5.1 教育與訓(xùn)練虛擬現(xiàn)實技術(shù)能使學習者能直接、自然地與虛擬對象進行交互,以各種形式參與事件的開展變化過程,并獲得最大的控制和操作整個環(huán)境的自由度。1、仿真教學與實驗2、特殊教育3、多種專業(yè)訓(xùn)練4、應(yīng)急演練和軍事演習1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.5.2 設(shè)計與規(guī)劃虛擬現(xiàn)實已被看作是設(shè)計領(lǐng)域中唯一的開發(fā)工具。它可以防止傳統(tǒng)方式在原型制造、設(shè)計和生產(chǎn)過程中的重復(fù)工作,有效的降低本錢,應(yīng)用領(lǐng)域包括汽車制造業(yè)、城市規(guī)劃、建筑設(shè)計等。1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.5.3科學計算可視化科學可視化的功能就是將大量字母、數(shù)字數(shù)據(jù)轉(zhuǎn)換成比原始數(shù)據(jù)更容易理解的各種圖像,并允許參與者借助各種虛擬現(xiàn)實輸入設(shè)備檢查這些“可見的〞數(shù)據(jù)。它通常被用于建立分子結(jié)構(gòu)、地震以及地球環(huán)境等模型。計算機中的海量數(shù)據(jù)都是抽象的。從這些數(shù)據(jù)是看不出什么結(jié)果來的。但是如果把這些數(shù)據(jù)通過VR建立一個直觀的模型呢。1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.5.4商業(yè)領(lǐng)域VR技術(shù)被逐步應(yīng)用于網(wǎng)上銷售、客戶效勞、電傳會議及虛擬購物中心等商業(yè)領(lǐng)域。它可以使客戶在購置前先看到產(chǎn)品的外貌與內(nèi)在,甚至在虛擬世界中使用它,因此對產(chǎn)品的推廣和銷售都很有幫助。如現(xiàn)在網(wǎng)上購物,我們看到的是都是照片,可能有好多張,正面的,側(cè)面的,最多可能是多了幾段視頻。但這些可能都是平面的。如衣服,但如果用VR呢,我們就可以全方面的了解所購物品發(fā)概貌,如衣服還可以把它穿在一個替身身上,如同在商店的模特一樣,比商店更高的是這個模特是活的,就如同自己穿在身上一樣馬上就可以看到效果。再如購房,一種方法就是一家一家樓盤跑,如果是現(xiàn)房還可以看到房子,如果是期房的話,就只能看到模型了,如果使用VR不管是現(xiàn)房還是期房,都可以看到實際效果了1.5 虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域1.5.5 藝術(shù)與娛樂VR技術(shù)所具有的身臨其境感及實時交互性還能將靜態(tài)的藝術(shù)〔如油畫、雕刻等〕轉(zhuǎn)化為動態(tài)的形式,使欣賞者更好地欣賞作者的思想藝術(shù),包括虛擬畫廊、虛擬音樂廳、文物保護等方面。游戲娛樂可能是VR最廣泛的一個應(yīng)用領(lǐng)域了,從最初的文字MUD游戲,到二維游戲、三維游戲,再到網(wǎng)絡(luò)三維游戲,游戲在保持其實時性和交互性的同時,逼真度和沉浸感正在一步步地提高和加強…玩游戲最重要的就是實時與互動,而虛擬現(xiàn)實可能就是游戲的最高境界了,市場上已經(jīng)推出了多款VR環(huán)境下的電腦游戲,帶給游戲者強烈的感官刺激。1.6 虛擬現(xiàn)實技術(shù)的研究現(xiàn)狀
1.6.1國外的研究現(xiàn)狀美國是VR技術(shù)的發(fā)源地,有美國宇航局〔NASA〕、麻省理工學院〔MIT〕媒體實驗室、華盛頓大學人機界面技術(shù)實驗室〔HITLab〕等許多知名的研究機構(gòu)。美國在虛擬現(xiàn)實領(lǐng)域的根底研究主要集中在感知、用戶界面、后臺軟件和硬件四個方面。1.6 虛擬現(xiàn)實技術(shù)的研究現(xiàn)狀
1.6.1國外的研究現(xiàn)狀英國主要有四個從事VR技術(shù)研究的中心,包括Windustries公司、BritishAerospace公司、DimensionInternational公司、DivisonLTD公司等。日本主要致力于建立大規(guī)模VR知識庫和人機接口方面的研究工程上,在VR游戲方面的研究也處于領(lǐng)先地位。此外,國外還研制出多個用于開發(fā)應(yīng)用程序的VR軟件開發(fā)平臺,例如美國Sense8公司的WorldToolKit〔WTK〕,愛荷華州立大學虛擬現(xiàn)實應(yīng)用中心的VRJuggler,DenebRobotics公司的ENVISION,英國Superscape公司的VRT,Division公司的dVISE等。1.6 虛擬現(xiàn)實技術(shù)的研究現(xiàn)狀
1.6.2國內(nèi)的研究現(xiàn)狀我國從20世紀80年代起開始研究VR技術(shù)。雖然起步較晚,但近年來政府有關(guān)部門非常重視,制定了開展VR技術(shù)的研究方案,并將其列入國家重點研究工程。國內(nèi)的一些科學家和重點院校也已積極投入了對這一領(lǐng)域的研究。北京航空航天大學是國內(nèi)最早進行VR技術(shù)研究、最有權(quán)威的單位之一。它于2000年8月成立了虛擬現(xiàn)實新技術(shù)教育部重點實驗室。1.6 虛擬現(xiàn)實技術(shù)的研究現(xiàn)狀
1.6.2 國內(nèi)的研究現(xiàn)狀清華大學對虛擬現(xiàn)實及其臨場感等方面進行了大量研究,比方球面屏幕顯示和圖像隨動、克服立體圖閃爍的措施及深度感實驗測試等。浙江大學的CAD&CG國家重點實驗室開發(fā)出了一套桌面型虛擬建筑環(huán)境實時漫游系統(tǒng),還研制出了在虛擬環(huán)境中一種新的快速漫游算法和一種遞進網(wǎng)格的快速生成算法。西安交通大學信息工程研究所對虛擬現(xiàn)實中的關(guān)鍵技術(shù)——立體顯示技術(shù)進行了研究,提出一種基于JPEG標準壓縮編碼新方案,獲得了較高的壓縮比、信噪比以及解壓縮速度。1.7虛擬現(xiàn)實關(guān)鍵技術(shù)虛擬現(xiàn)實是多種技術(shù)的綜合,其關(guān)鍵技術(shù)和研究內(nèi)容包括以下幾個方面:1、環(huán)境建模技術(shù)即虛擬環(huán)境的建立,是整個虛擬現(xiàn)實系統(tǒng)的根底,目的是獲取實際三維環(huán)境的三維數(shù)據(jù),并根據(jù)應(yīng)用的需要,利用獲取的三維數(shù)據(jù)建立相應(yīng)的虛擬環(huán)境模型。2、立體聲合成和立體顯示技術(shù)在虛擬現(xiàn)實系統(tǒng)中消除聲音的方向與用戶頭部運動的相關(guān)性,同時在復(fù)雜的場景中實時生成立體圖形。3、觸覺反響技術(shù)在虛擬現(xiàn)實系統(tǒng)中讓用戶能夠直接操作虛擬物體并感覺到虛擬物體的反作用力,從而產(chǎn)生身臨其境的感覺。4、交互技術(shù)虛擬現(xiàn)實中的人機交互遠遠超出了鍵盤和鼠標的傳統(tǒng)模式,利用數(shù)字頭盔、數(shù)字手套等復(fù)雜的傳感器設(shè)備,三維交互技術(shù)與語音識別、語音輸入技術(shù)成為重要的人機交互手段。5、系統(tǒng)集成技術(shù)由于虛擬現(xiàn)實系統(tǒng)中包括大量的感知信息和模型,因此系統(tǒng)的集成技術(shù)為重中之重:包括信息同步技術(shù)、模型標定技術(shù)、數(shù)據(jù)轉(zhuǎn)換技術(shù)、識別和合成技術(shù)等等。數(shù)字仿真地理勘測數(shù)字城市規(guī)劃地理勘測虛擬手術(shù)產(chǎn)品展示虛擬游覽數(shù)字虛擬校園虛擬天獅學院第二章VRML根底知識2-1什么是VRML
VRML〔VirtualRealityModelingLanguage〕即虛擬現(xiàn)實建模語言。是一種用于建立真實世界的場景模型或人們虛構(gòu)的三維世界的場景建模語言,也具有平臺無關(guān)性。是目前Internet上基于WWW的三維互動網(wǎng)站制作的主流語言。2-2vrml開展歷史1993.12
Parisi和Pesce開始開發(fā)第一個VRML測覽器;
1994.03
首屆WWW大會在日內(nèi)瓦召開,提出VRML;
1994.06
開始VRML郵件列表;
1994.10
產(chǎn)生了基于SGI的OpenInventor文件格式的VRMLl·0第一稿;
1996.03
VRML結(jié)構(gòu)組通過MovingWorld,并就VRML2·0標準進行投票;
1996.08
通過VRML2·0標準。1998年12vrml組織-web3dvrml+java+xml->x3d2.3vrml工作原理Vrml的設(shè)計是從WEB上欣賞實時3D圖象開始的,VRML可以是一個瀏覽器插件,也是一個獨立的應(yīng)用程序,它與傳統(tǒng)的虛擬現(xiàn)實中使用同樣的3D著色引擎,使它從三維建模和動畫別離出來,三維建模與動畫應(yīng)用中可以預(yù)先對場景著色。但是不能選擇方向。而VRML提供6+1個自由度。可以三個方向移動也可以轉(zhuǎn)動,還可以與其它3D超鏈接。VRML定義一個把3D圖形與多媒體集成一起文件格式。從語法角度看。VRML定式定義組織
3D多媒體對象。又語義看:VRML描述的基于時間的交互式3D多媒體信息抽象功能行為。這個3D空間就稱為虛擬境界。VRML使用場景圖來建立3D境界,它是一種代表所有3d世界靜態(tài)特征的節(jié)點等級:幾何關(guān)系材質(zhì)紋理轉(zhuǎn)換光線視點等幾乎所有3D廠家無論CAD動畫建模VR,它們的核心都有場景圖。VRMLWORLD中的對象屬性用節(jié)點來描述。節(jié)點按一定規(guī)那么構(gòu)成場景圖。場景圖有二類節(jié)點:一是用于視覺與聽覺角度表現(xiàn)對象,反映空間結(jié)構(gòu),另一類對于事件和路由。確定虛擬世界隨時間動態(tài)變化。VRML對三維虛擬世界描述建模渲染交互動畫細節(jié)及碰撞超鏈接2-4VRML瀏覽器Cortona3dCosmoPlayer
BitmanagmentBimanagment2.5VRML工具VRMLPAD2.6VRML文件結(jié)構(gòu)VRML文件主要包括VRML文件頭、造型、路由、腳本、原型等體系元素。1.VRML文件類型:VRML文件是由通用文本編輯系統(tǒng)或?qū)S肰RML開發(fā)工具編輯的ASCII文件格式的場景描述性語言,其文件類型擴展名為.wrl或.wrz,一般使用.wrl文件擴展名。2.VRML文件頭#VRMLV2.0utf8VRML文件頭由四局部組成,各局部意義說明如下:1)VRML文件頭由“#〞字符起始,“#〞字符說明后為一個文本型的說明字符串.(2)VRML文件頭的第二局部是“VRML〞字符串,該字符串提示瀏覽器該文件是一個VRML文件.(3)VRML文件頭的第三局部是“V2.0〞字符串,該字符串提示瀏覽器該VRML文件遵循VRML標準2.0版本.(4)VRML文件頭的第四局部是“utf8〞字符串,該字符串提示瀏覽器該VRML文件是一個使用國際標準UTF-8字符集的文件.UTF-8的英文全稱是UCSTransformFormat,而UCS是UniversalCharacterSet的縮寫.通過VRML建模的虛擬環(huán)境專業(yè)上又稱之為場景圖。場景圖由一系列無序節(jié)點組成,節(jié)點那么用以描述環(huán)境中的對象及其屬性。VRML節(jié)點:VRML場景圖由節(jié)點嵌套構(gòu)成組成,是最根本的組成要素VRML節(jié)點由域組成。每個域又有域值。這些域值說明了場景的特征。格式:field數(shù)值類型域名缺省值VRML節(jié)點名稱[DEF節(jié)點]節(jié)點名稱{body}節(jié)點引用use節(jié)點名稱#VRMLV2.0utf8WorldInfo{
title"Example1"}DEFFBOXShape{
appearanceAppearance{
materialMaterial{diffuseColor00.50}}
geometryBox{}}NodeField(usesdefaultvalues)#VRMLV2.0utf8#NamingandreusingobjectsDEFballShape{ appearanceAppearance{ materialMaterial{} } geometrySphere{ radius0.5#radiusinunits} } }Transform{translation200children[USEball]}Transform{translation-200children[USEball]}defnode.wrlVRML中的所有節(jié)點都可以有零個或多個域(Field).每個域取域值,不同的域?qū)?yīng)不同的域值類型.VRML定義了20種根本數(shù)據(jù)類型,也分為兩類:以SF開頭的是單值類型,該類型只有一個單一的數(shù)或數(shù)組;以MF開頭的是多值類型,該類型指定一個數(shù)或數(shù)組的列表SFBool,SFColor,MFColor,SFFloat,MFFloat,SFImage,SFInt32,MFInt32,SFNode,MFNode,SFRotation,MFRotation,SFString,MFString,SFTime,MFTime,SFVec2f,MFVec2f,SFVec3f,MFVec3f.SFBool一個SFBool域只含有一個Bool值。TRUE和FALSE〔不帶引號也不帶任何標點符號〕是SFBool域僅有的兩個有效值。SFBool輸出事件的初始值是FALSE。注意:一般的程序設(shè)計重用1和0表示True和False值,在VRML中不允許。SFColor和MFColorSFColor域是只有一個顏色值的單值域。SFColor值和RGB值一樣,由一組三個浮點數(shù)組成。每個數(shù)都是從,極值包括在內(nèi),分別表示構(gòu)成顏色的紅綠藍三個分量。MFColor域是一個多值域,包含任意數(shù)量的RGB顏色值。例如:[1.00.00.0,010,001]
表示三種顏色紅綠藍的組成。SFColor域的輸出事件的初始值是〔0,0,0〕。而MFColor域的輸出事件的初始值是[]。SFFloat和MFFloat一個SFFloat域含有一個ANSIC格式的單精度浮點數(shù)。一個MFFloat域含有零個或多個ANSIC格式的單精度浮點數(shù)。即允許空白,不賦任何值。SFFloat域輸出事件的初始值為0.0。MFFloat域輸出事件的初始值為[]。SFImage一個SFImage域含有非壓縮的二維彩色圖像或灰度圖像。一個SFImage域,首先列出三個整數(shù)值,前兩個表示圖片的寬度和高度,第三個整數(shù)表示構(gòu)成圖像格式的元素個數(shù)〔1--4〕,隨后,按〔寬度x高度〕的格式列出一組16進制數(shù),數(shù)與數(shù)之間以空格分隔,每一個16進制數(shù)表示圖像中一個單獨的像素。圖像格式的元素個數(shù)表示這張圖像是灰度圖還是彩色圖,以及是否包括透明像素或半透明像素。單元素圖像中的每一個像素用一個16進制的字節(jié)表示,所表示的是一個像素的亮度。例如:0XFF表示最高亮度〔白色〕,而0X00表示最低亮度〔黑色〕。雙元素圖像用兩個字節(jié)表示一個像素。第一個字節(jié)表示亮度,第二個字節(jié)表示透明度。表示透明度時,字節(jié)為0xFF表示完全透明,而0x00表示不透明。所以0x40C0表示1/4亮度〔暗灰〕和3/4透明度。三元素圖像的每個像素有三個字節(jié)表示,每個字節(jié)表示像素顏色中紅綠藍分量〔所以0xFF0000表示紅色〕。四元素圖像是在紅綠藍三色的值之外再加一個表示透明度的字節(jié)〔所以0x0000FF80表示辦透明的藍色〕。和雙元素圖像一樣,透明度字節(jié)為0xFF表示完全透明,而0x00表示完全不透明。為了提高可讀性,最好把所有的16進制字節(jié)都寫全,包括前導(dǎo)0。然而,寫出每個字節(jié)有時是不必要的。例如可以把一個三元素圖像的藍色像速寫成0xFF而不是0x0000FF。像素的排列規(guī)定從左到右、從底到頂?shù)捻樞颉5谝粋€16進制數(shù)描述一個圖像最左下角的像素,最后一個那么描述右上角的像素。例:1210XFF0X00
一個像素寬,兩個像素高的灰度圖像,底部像素是白的,頂部像素是黑的。2430XFF00000X00FF0000000XFFFFFF0XFFFF00
兩個像素寬,四個像素高的RBG圖像,左下角像素是紅色,右下角像素是綠色,中間兩行是黑色,左上角像素是白色,右上角像素是黃色。在任何腳本節(jié)點或原型內(nèi)都可以使用這種類型的域,但是,使用的具體地點只能在PiexlTexture〔像素紋理〕節(jié)點。
SFImage域的輸出事件的初始值為〔0,0,0〕。SFInt32和MFInt32一個SFInt32域含有一個32位整數(shù)。一個SFInt32值是由一個十進制或十六進制〔以O(shè)X開頭〕格式的整數(shù)構(gòu)成。
一個MFInt32域是多值域,由任意數(shù)量的以逗號或空格分隔的整數(shù)組成。例如:[17,-0xE20,-518820]SFInt32域的輸出事件的初始值為0,MFInt32域的輸出事件的初始值為[]。SFNode和MFNode一個SFNode域含有一個單節(jié)點,必須按標準節(jié)點句法寫成。一個MFNode域包含任意數(shù)量的節(jié)點。例:[Transform{translation100},
DEFPANDORAbox{},
USEPANDORA]一個SFNode允許包含一個關(guān)鍵字NULL,此時,表示它不包含任何節(jié)點。注意:一個組或一個變換的children域也就是列出一組節(jié)點的MFNode域。把SFNode域放入一個腳本節(jié)點,就使節(jié)點的腳本可以直接存取列在SFNode域的節(jié)點,而不需要一個ROUTE語句。SFNode域的輸出事件的初始值為NULL,MFNode域的輸出事件的初始值為[]。SFRotation和MFRotationSFRotation域規(guī)定一個繞任意軸的任意角度的旋轉(zhuǎn)。SFRotation值含有四個浮點數(shù),各數(shù)之間以空格分隔。前三個數(shù)表示旋轉(zhuǎn)軸〔從原點到給定點的向量〕;第四個數(shù)表示圍繞上述軸旋轉(zhuǎn)多少弧度。例:繞y軸旋轉(zhuǎn)180度;
表示為
0103.1416
MFRotation域可包含任意數(shù)量的這類旋轉(zhuǎn)值。注意:視點的旋轉(zhuǎn)是從缺省的視點方向開始的,該方向是從〔0,0,10〕沿-z軸觀察。SFRotation域的輸出事件的初始值為〔0010〕,MFRotation域的輸出事件的初始值為[]。SFString和MFStringSFString域包含一串字符,各字符遵照UTF-8字符編碼標準〔ASCII是UTF-8的子集,可以由于SFString域〕SFString值含有雙引號括起來的UTF-8octets字符串。任何字符〔包括“#〞和換行符〕都可在雙引號中出現(xiàn)。為了在字符中使用雙引號,在它之前加一個反斜杠“\〞。為了在字符串中使用反斜杠,連續(xù)打兩個反斜杠“\\〞。例如:"One,Two,Three,123."
Heasked,\"Whois#1?\""MFString域含有零個或多個單值,每個單值都和SFString值的格式一樣。SFString域的輸出事件的初始值為“〞,MFString域的輸出事件的初始值為[]。SFTime和MFTimeSFTime域含有一個單獨的時間值。每個時間值是一個ANSIC格式的雙精度浮點數(shù),表示的是從1970年1月1日〔GMT,格林威治平均時〕子夜開始計時,延續(xù)當前時間的秒數(shù)。MFTime域包含任意數(shù)量的時間值。SFTime域的輸出事件的初始值為-1,MFTime域的輸出事件的初始值為[]。SFVec2f和MFVec2fSFVec2f域定義了一個二維向量。SFVec2f的值是兩個由空格分隔的浮點數(shù)。
MFVec2f域是多值域,包含任意數(shù)量的二維向量值。例如:[00,1.23.4,98.6-4e1]SFVec2f域的輸出事件的初始值為(00〕,MFVec2f域的輸出事件的初始值為[]。SFVec3f和MFVec3fSFVec3f域定義了一個三維空間的向量。一個SFVec3f值包含三個浮點數(shù),數(shù)與數(shù)之間以空格分隔。該值表示從原點到所給定點的向量。
MFVec3f域包含任意數(shù)量的三維向量值。例如:[000,,98.6-461451]SFVec3f域的輸出事件的初始值為(000〕,MFVec3f域的輸出事件的初始值為[]。VRML事件、路由、事件.節(jié)點除具有域?qū)傩酝猓€具有事件(event)屬性。事件是VRML實現(xiàn)用戶交互與場景動態(tài)變化的最主要內(nèi)容。事件為節(jié)點提供了接收外界信息以及外界發(fā)送信息的能力。節(jié)點通過事件入口〔eventIN〕接收入事件,通過事件出口(eventout)發(fā)送出事件。入事件要求節(jié)點改變自己某個域的取值,而出事件那么要求改變其他節(jié)點的域值。VRML對節(jié)點的說明中經(jīng)常包含標有〞exposedField〞的公共域,該類型域隱含著與下面兩種系統(tǒng)缺省定義的事件相關(guān)。路由〔route〕:節(jié)點用來變化場景圖,用來用戶交互,也可以說是消息傳遞,事件一旦產(chǎn)生,可以不受場景變換層次影響送到達目標節(jié)點,目標節(jié)點的響應(yīng)或者改變節(jié)點狀態(tài),或者產(chǎn)生其它消息傳遞其它節(jié)點。VRML腳本為使VRML具有更強的人機交互能力和可控性,可以在事件發(fā)生器與事件接收器之間插入腳本(Script)節(jié)點。腳本節(jié)點實際上是一個外殼,它包含一組利用腳本描述語言,如Java,JavaScript編寫的函數(shù)或方法。VRML原型用戶可以通過VRML原型機制擴充VRML標準節(jié)點類型集。原型節(jié)點定義應(yīng)對其中需要使用的域、入事件和出事件分別加以說明,原型定義既可以在引用該原型的文件中進行,也可以在外部文件中定義而后在其他的場景文件中引用。程序注釋:為VRML文件添加注釋要求以〞#〞字符開頭,并結(jié)束于該行的末尾。VRML空間VRML的場景建設(shè)默認情況下使用VRML系統(tǒng)缺省空間坐標系,用戶也可以使用Transform節(jié)點對缺省空間進行變換,以形成相對于父坐標系的子坐標系。1.VRML空間坐標系。VRML系統(tǒng)默認的坐標系為一個立體三維的空間坐標系。該坐標系的原點位于VRML平面瀏覽器的中心位置,X軸正向由原點指向屏幕右側(cè),Y軸正向由原點指向屏幕上方,Z軸正向由原點垂直指向用戶。2.VRML空間計量單位。VRML造型大小、方位均使用VRML空間計量單位。空間計量單位又分為長度計量單位和角度計量單位兩種。長度計量單位也之為VRML單位,用來度量造型的空間位置及大小尺寸。并不同于我們通常所說的米制單位,在vRML中用一個角度單位用以計量VRML空間變換坐標系的旋轉(zhuǎn)角度。VRML的角度使用常規(guī)的弧度計量單位比例。
座標系統(tǒng)VRML時間體系Vrml場景中。時間推移通過時間檢測器(timesensor)隨時間流逝產(chǎn)生事件,每一個事件隨帶有一個時間戳〔timestamp〕,用于標志事件產(chǎn)生的時間,瀏覽器根據(jù)時間對事件決定對事件處理順序。時間0.0等于格林尼治時間1970.1.100:00:00.時間戳為t的事件產(chǎn)生大于或等于t事件。VRML的關(guān)鍵字
DEF:給后續(xù)的節(jié)點命名,這個名字就是節(jié)點名,典型格式為:DEF節(jié)點名節(jié)點USE:引用DEF定義的節(jié)點名,典型格式為:USE節(jié)點名TRUE:表示“真〞,“1〞,“是〞等,用于給SFBool域賦值。FALSE:表示“假〞,“0〞,“否〞等,用于給SFBool域賦值。NULL:表示空值,用于給SFNode域賦空值。PROTO:用于聲明自定義節(jié)點的原型,典型格式為:
PROTO節(jié)點名稱[域的自定義〔包括其缺省值〕事件的自定義]{節(jié)點實體}EXTERNPROTO:用于預(yù)解釋引用的外部定義節(jié)點的原型,典型格式為:
EXTERNPROTO節(jié)點名稱{域的自定義〔不包括其缺省值〕事件的自定義]外部節(jié)點的資源定位
其中域、事件的類型和名稱必須與引用的外部節(jié)點中的定義一樣。外部節(jié)點的資源定位格式為:
"URL/URN"或["URL/URN","URL/URN",···]。資源定位可以為URL或URN格式,當使用"URL/URN"或["URL/URN","URL/URN",···]的數(shù)組形式時,瀏覽器使用數(shù)組中第一個正確尋獲的資源。資源的形式也可以寫為:URL/URN#externProtytypeName,externProtytypeName為引用的外部節(jié)點的名稱,這時候,可以使用與外部節(jié)點定義的名稱不同的節(jié)點名稱。VRML的關(guān)鍵字ROUTE:構(gòu)成事件通路。典型格式為:
ROUTEfromNode.fromEventTOtoNode.toEvent
fromNode為發(fā)出事件的節(jié)點的名稱。
fromEvent為事件輸出的名稱。
toNode為接受事件的節(jié)點的名稱。
toEvent為事件輸入的名稱。TO:見ROUTE的說明。eventIn:定義事件輸入,典型格式為:
eventIn數(shù)值類型事件名eventOut:定義事件輸出,典型格式為:
eventOut數(shù)值類型事件名
field:定義私有域,典型格式為:
field數(shù)值類型域名缺省值
exposedField:定義公共域,典型格式為:
exposedField數(shù)值類型域名缺省值
IS:用于原型聲明中,把自定義的域和事件與執(zhí)行體中節(jié)點的域和事件等同起來。典型格式為:
執(zhí)行體中節(jié)點的域或事件IS自定義的域或事件
2.7VRML根本幾何造型空間造型:VRML可見形體根本構(gòu)成模塊是造型,由節(jié)點和域描述構(gòu)成。空間造型節(jié)點定義幾何形體的形狀任何一個VRML虛擬場景中的空間造型都必須使用Shape節(jié)點加以創(chuàng)立,場景造型包括根本幾何造型(立方體、球體、圓柱體、圓錐體),文本造型以及點、線、面方式構(gòu)造的任意幾何造型。Shape節(jié)點(1)Shape節(jié)點語法格式如下:Shape{appearanceNULL#exposedFieldSFNodegeometryNULL#exposedFieldSFNode}Shape節(jié)點由兩個重要的屬性組成,即造型的外觀屬性和幾何屬性。Shape節(jié)點造型的外觀屬性由appearance域的域值設(shè)置:指定另一個外觀節(jié)點Appearance節(jié)點,缺省為NuLL,表示不包含任何外觀節(jié)點,此時系統(tǒng)使用缺省的造型外觀屬性(白色發(fā)光)。造型的幾何屬性由geometry域的域值設(shè)置:指定另一個造型節(jié)點,如Box、Sphere節(jié)點等,其缺省為NULL,表示不包含任何造型節(jié)點,即不創(chuàng)立任何造型。Shape節(jié)點的功能在于創(chuàng)立geometry域設(shè)置的造型,并將Appearance節(jié)點指定的外觀屬性應(yīng)用到geometry域的造型節(jié)點上。根本幾何造型1.Box節(jié)點用于創(chuàng)立標準立方體幾何造型。Box節(jié)點語法格式如下:Box{size2.02.02.0#fieldSFVec3f}根本幾何造型size域值指定一個以VRML空間坐標系原點為中心,且每個面均與坐標平面平行的三維長方體的長、寬、高尺寸。缺省值為(2.02.02.0),分別表示長方體在x、y、z軸方向上的長度值。根本幾何造型2.Sphere節(jié)點用以創(chuàng)立標準球體幾何造型。Sphere節(jié)點語法格式如下:Sphere{radius1.0#fieldSFFloat}根本幾何造型Sphere節(jié)點僅包含一個radius私有域,radius域的域值指定一個以VRML空間坐標系原點為中心的球體的半徑尺寸,其缺省值為1.0。根本幾何造型3.Cylinder節(jié)點用于創(chuàng)立標準圓柱體幾何造型。Cylinder節(jié)點語法格式如下:Cylinder{radius1.0#fieldSFFloatheight2.0#fieldSFFloattopTURE#fieldSFBoolsideTURE#fieldSFBoolbottomTURE#fieldSFBool}根本幾何造型Cylinder節(jié)點共有5個私有域。標準Cylinder節(jié)點創(chuàng)立的是底圓半徑為1個VRML長度單位,高度為2個VRML長度單位的以空間坐標系原點為中心、以y軸為中心軸的圓柱體。根本幾何造型radius域:以y軸為中心軸的圓柱體的底圓半徑尺寸(缺省值為1.0)height域:圓柱體在y軸上的高度(缺省值為2.0)top域:是否繪制頂圓(缺省值為TRUE)side域:是否繪制圓柱側(cè)面(缺省值為TRUE)bottom域:是否繪制底圓(缺省值為TRUE)根本幾何造型4.Cone節(jié)點用以創(chuàng)立標準圓錐體幾何造型。Cone節(jié)點語法格式如下:Cone{bottomRadius1.0#fieldSFFloatheight2.0#fieldSFFloatsideTRUE#fieldSFBoolbottomTRUE#fieldSFBool}根本幾何造型Cone節(jié)點共有4個私有域。標準Cone節(jié)點創(chuàng)立的是底圓半徑為1個VRML長度單位,高度為2個VRML長度單位的以空間坐標系原點為中心、以Y軸為中心軸的圓錐體。根本幾何造型bottomRadius域:以y軸為中心軸的圓錐體的底圓半徑尺寸(缺省值為1.0)height域:圓錐體在y軸上的高度(缺省值為2.0)side域:是否繪制錐面(缺省值為TRUE)bottom域:是否繪制底面(缺省值為TRUE)文本造型1.Text節(jié)點Text節(jié)點用來在VRML場景中創(chuàng)立文本造型,通常作為Shape節(jié)點geometry域的域值使用。Text節(jié)點語法格式如下:Text{string[]length[]maxExtent0.0fontStyleNULL}1.Text節(jié)點String域的域值使用UTF-8編碼設(shè)置要創(chuàng)立的文本內(nèi)容。每一行字符都由雙引號界定,引號內(nèi)的回車符。Length域的域值設(shè)置每一行字符的長度,以VRML長度單位進行度量。Length域的域值要與string域的域值一一對應(yīng),即length域的一個域值控制string域的一行字符的長度。該域值缺省為空列表,即不另外設(shè)置文本行長度,渲染時由瀏覽器自動設(shè)置。maxExtent域的域值設(shè)置文本造型中任意一行在主要方向上的最大范圍,同樣以VRML長度單位進行計量,該域值必須大于等于0.0。1.Text節(jié)點#VRMLV2.0utf8Shape{geometryText{string["TextwithoutfontStyle", "intwolines"] }}1.Text節(jié)點#VRMLV2.0utf8Shape{geometryText{string[“TTTTTTTT"] length[10] maxExtent8
}}Transform{translation030children[Shape{appearanceAppearance{materialMaterial{}}geometryText{string“TTTTTTTT"
length10maxExtent7}}]}fontStylefontStyle域用來定義文本造型的字體特征,其域值要指定另一個FontStyle節(jié)點。通常設(shè)定FontStyle節(jié)點屬性可以改變由Text節(jié)點創(chuàng)立的文本造型的默認特征。fontStyle2.FontStyle節(jié)點FontStyle節(jié)點只用做Text節(jié)點fontStyle域的域值屬性,通過設(shè)置FontStyle節(jié)點可以改變由Text節(jié)點創(chuàng)立的文本造型的默認字體特征。FontStyle{family“SERIF〞style“PLAIN〞size1.0spacing1.0horizontalTRUEleftToRightTRUEtopToBottomTRUEjustify[“BEGIN〞]language“〞}fontStyle#VRMLV2.0utf8#Fancytext.wrl#demonstratesvariousfeaturesoftextTransform{children[Shape{appearanceAppearance{materialMaterial{diffuseColor110}#endmaterial}#endappearancegeometryText{string"default“fontStyleFontStyle{size1.5#theheightofthetextis1.5unitsfamily["SANS"]#thefontisSANS=TIMESjustify"MIDDLE"#justificationismiddlestyle"BOLD"#styleisbold}#endtext}#endshape]#endchildren}fontStyleFamily域的域值設(shè)置Text節(jié)點文本造型使用的字符集,字符集包括〞SERIF〞、〞SANS〞和〞TYPEWRITER〞三種,瀏覽器將在規(guī)定的字符集中選擇特定的字體進行渲染。Style域的域值用來設(shè)置所創(chuàng)立文本的字體風格,包括〞PLAIN〞、〞BOLD〞、〞ITALIC〞和〞BOLDITALIC〞四種。Size域的域值用來設(shè)置所創(chuàng)立字符的大小尺寸。Spacing域的域值用來設(shè)置所創(chuàng)立文本字符的行間距。Horizontal域的域值決定文本行是水平生長還是垂直生長。leftToRight域的域值決定文本塊或其中的字符是從左到右排列還是從右到左的排列。fontStyletopToBottom域的域值決定文本塊或其中的字符是從上到下生長還是從下到上生長。Justify域的域值決定文本造型中字符塊的對齊方式,這是相對XOZ平面或YOZ平面進行定義的。Language域的域值設(shè)置VRML所使用的語言編組節(jié)點前面創(chuàng)立的VRML場景都僅由一個單一的幾何造型組成,這顯然不能滿足VRML對真實世界復(fù)雜場景的虛擬要求。使用Group編組節(jié)點可以將多個相同或不同的VRML節(jié)點進行編組,以捆綁創(chuàng)立復(fù)雜造型。Group節(jié)點Group編組節(jié)點語法格式如下:Group{children[]
bboxCenter0.00.0
0.0
bboxSize-1.0-1.0
-1.0
addChildren#eventIn
MFNode
removeChildren#eventIn
MFNode}Group節(jié)點Group編組節(jié)點包括一個公共域、兩個私有域以及一個入事件和一個出事件:Children域的域值設(shè)置包含在該編組節(jié)點中的子節(jié)點列表,瀏覽器渲染時將逐個創(chuàng)立該域值中所包含的每個造型或造型編組。bboxCenter域的域值設(shè)置包圍該編組節(jié)點造型的包圍盒的中心點位置。bboxSize域的域值設(shè)置包圍該編組節(jié)點造型(包括所有子節(jié)點造型)的包圍盒在當前坐標系X、Y、Z方向上的尺寸。addChildren入事件用于將指定的節(jié)點增加到該編組節(jié)點的子節(jié)點列表中。removeChildren入事件用于將指定的節(jié)點從該編組節(jié)點的子節(jié)點列表中刪除;假設(shè)該節(jié)點不在子節(jié)點列表中,那么事件將被忽略。Group節(jié)點#VRMLV2.0utf8
Group{children[Transform{translation-200children[Shape{appearanceAppearance{materialMaterial{}}geometrySphere{radius0.3}}]}Transform{translation200children[Shape{appearanceAppearance{materialMaterial{}}geometrySphere{radius0.3}}]} ]}VRML空間變換VRML場景中的每一個造型都是基于當前坐標系進行創(chuàng)立的,而單一坐標系的使用將在很大程度上限制用戶的空間想象力和創(chuàng)造力的發(fā)揮。如果希望場景中的造型在空間中改變方位,那么需要進行VRML空間變換,也即變換造型創(chuàng)立所基于的空間坐標系。Transform節(jié)點Transform節(jié)點與Group節(jié)點一樣均為編組節(jié)點,但Transform節(jié)點是為其子節(jié)點定義坐標系統(tǒng)的節(jié)點,它更重要的作用在于對VRML空間坐標系進行變換,以建立一個或多個相對于已有坐標系的新坐標系。Transform節(jié)點語法Transform編組節(jié)點語法格式如下:Transform{children[]translation0.00.0
0.0rotation0.00.01.00.0scale1.01.0
1.0
scaleOrientation0.00.01.00.0center0.00.0
0.0
bboxCenter0.00.0
0.0
bboxSize-1.0-1.0
-1.0
addChildren#eventIn
MFNode
removeChildren#eventIn
MFNode}Transform節(jié)點語法Children域的域值設(shè)置受該編組節(jié)點指定的變換影響的子節(jié)點列表,瀏覽器渲染時將逐個變換并創(chuàng)立該域值中所包含的每個造型或造型編組。Translation域的域值設(shè)置變換坐標系的原點相對于父坐標系原點在XYZ方向上的偏移距離。rotation域的域值設(shè)置變換坐標系的原點相對于父坐標系進行旋轉(zhuǎn)的旋轉(zhuǎn)軸及其旋轉(zhuǎn)角度。scale域的域值設(shè)置變換坐標系在XYZ方向上的縮放系數(shù)。scaleOrientation域的域值設(shè)置變換坐標系在XYZ方向上的縮放系數(shù)。center域的域值設(shè)置一個三維坐標點,該三維坐標點位于變換坐標系上,坐標系的旋轉(zhuǎn)和縮放均圍繞該中心點進行。bboxCenter域的域值設(shè)置包圍該編組節(jié)點造型的包圍盒的中心點坐標。bboxSize域的域值設(shè)置包圍該編組節(jié)點造型的包圍盒在當前坐標系XYZ方向上的大小Transfrom節(jié)點#VRMLV2.0utf8
#thetranslationnodeDEFstartingconeShape{ appearanceAppearance{ materialMaterial{} } geometryCone{ bottomRadius1 height1 sideTRUE bottomTRUE } }Transform{translation0.0-1.00.0#thetranslationinXYZdirections# XYZAngle-therotationaroundtheXand/orYand/orZaxesbyAnglerotation 0.00.01.03.14#therotationaroundtheZaxisby180degreescale 0.51.00.5#scalefactorinXYZdimensions children[USEstartingcone]}第三章VRML高級造型節(jié)點PointSetIndexedLineSetIndexedFaceSetExtrusionElevationGridCoordinate它定義一組在基于頂點的幾何體節(jié)點的coord域中使用的3D坐標。它可以出現(xiàn)在IndexedFaceSet、IndexedLineSet或者PoitSet的coord域中。其結(jié)構(gòu)如下:CoordinateCoordinate{exposeFieldMFVec3fpoint[]}point定義基于頂點的形狀的各個頂點的點集。幾何點造型—PointSet節(jié)點
VRML中的點造型是置于VRML場景中一個像素大小的空間點,該像素點的位置由VRML空間坐標系XYZ三維分量確定。使用PointSet節(jié)點可以在VRML場景中創(chuàng)立一個由離散點集構(gòu)造的空間幾何造型。PointSet節(jié)點語法格式如下:PointSet{coordNULLcolorNULL}PointSet節(jié)點PointSet節(jié)點中的coord域用來設(shè)置空間點造型的位置坐標,其域值為Coordinate坐標節(jié)點。Coordinate節(jié)點語法格式如下:Coordinate{point[]}Coordinate節(jié)點中的point域為Coordinate節(jié)點提供一系列三維的空間點位置坐標列表。每一空間坐標由XYZ三分量組成,在每一個空間坐標位置處將自動生成一個空間點造型。PointSet節(jié)點PointSet節(jié)點中的color域用來為點造型著色,其域值為Color顏色節(jié)點。Color節(jié)點語法格式如下:Color{color[]}PointSet節(jié)點#VRMLV2.0utf8#PointSetexampleShape{ geometryPointSet{ coordCoordinate{point[ -1.0-1.00.0, 1.01.00.0, 0.00.00.0,]}colorColor{color[1.00.00.0, 0.01.00.0,0.00.01.0,]}}}幾何線造型—IndexedLineSet節(jié)點VRML中的線造型是虛擬世界中任意兩個坐標點之間相互連結(jié)的空間直線,或多個坐標點之間逐次連結(jié)的直線段所構(gòu)成的空間拆線。使用IndexedLineSet節(jié)點可以在VRML場景中創(chuàng)立一個由離散點集經(jīng)索引而構(gòu)造的空間線造型。IndexedLineSetIndexedLineSet節(jié)點語法格式如下:IndexedLineSet{
coordNULL
coordIndex[]colorNULL
colorPerVertexTRUE
set_coordindex
set_colorIndex}IndexedLineSetCoord域設(shè)置線造型的坐標,其域值為Coordinate坐標節(jié)點。coordIndex域的域值設(shè)置一系列用以創(chuàng)立一條直線或多條折線路徑的坐標索引列表。Color域用來為線造型單獨著色,其域值為Color顏色節(jié)點。colorIndex域的域值設(shè)置一系列用以渲染一條或多條折線路徑的顏色素索引列表。colorPerVertex域的域值設(shè)置對線造型的顏色渲染是基于端點(其域值為TRUE)還是基于線段(其域值為FALSE)。IndexedLineSet#VRMLV2.0utf8#IndexedLineSetexampleShape{ geometryIndexedLineSet{ coordCoordinate{point[ -1.0-1.00.0, #vertex0 1.01.00.0, #vertex1 1.0-1.00.0, #vertex2]} colorPerVertexFALSE colorColor{color[1.00.00.0, #red 0.01.00.0, #green0.00.01.0, #blue 000]} coordIndex[ #redline 0,1,-1, #greenline 1,2,-1, #blueline 2,0,-1 ] colorIndex[ 0,1,2,0 ]
}}幾何面造型—IndexedFaceSet節(jié)點VRML中的面造型是虛擬世界中由任意多個平面坐標點逐次相連并首尾相結(jié)所圍成的一個封閉、著色的折線區(qū)域。IndexedFaceSet節(jié)點IndexedFaceSet節(jié)點語法格式如下:IndexedFaceSet{
coordNULL
coordIndex[]
texCoordNULL
texCoordIndex[]colorNULL
colorPerVertexTRUEnormalNULL
normalIndex
normalPerVertexIndexedFaceSet節(jié)點ccwTRUEconvexTRUEsolidTRUEcreaseAngle0.0set_coordIndexset_texCoordIndexset_colorIndexset_normalIndex}IndexedFaceSet節(jié)點Coord域設(shè)置空間面造型的頂點坐標,其域值為Coordinate節(jié)點。coordIndex域的域值設(shè)置一系列用以創(chuàng)立一張或多張平面折線路徑的坐標索引列表。texCoord域用來為IndexedFaceSet節(jié)點創(chuàng)立的不規(guī)那么平面造型進行特殊紋理渲染,其域值要設(shè)置另一個TextureCoordinate節(jié)點。texCoordIndex域的域值設(shè)置一系列用以渲染一張或多張平面的紋理坐標索引列表。IndexedFaceSet節(jié)點中的color域用來為面型著色,其域值為Color顏色節(jié)點。IndexedFaceSet節(jié)點Color節(jié)點中的color域為IndexedFaceSet節(jié)點創(chuàng)立的一系列空間面造型進行單獨著色。colorIndex域的域值設(shè)置一系列用以渲染一張或多張平面的顏色索引列表。colorPerVertex域的域值設(shè)置對面造型的顏色渲染是基于頂點還是基于平面。Normal域的域值要設(shè)置另一個Normal節(jié)點,該節(jié)點用于指定面集中的平面或頂點的單位法向量,單位法向量用于改變場景光線的明暗渲染效果。normalIndex域的域值設(shè)置一系列用以進行明暗控制的單位法向量的索引列表。IndexedFaceSet節(jié)點#VRMLV2.0utf8#IndexedFaceSetexample:apyramidShape{ appearanceAppearance{ materialMaterial{ diffuseColor100#simplered } } geometryIndexedFaceSet{ coordCoordinate{point[ #bottom -1.0-1.01.0, #vertex0 1.0-1.01.0, #vertex1 1.0-1.0-1.0, #vertex2 -1.0-1.0-1.0, #vertex3 #top 0.01.00.0 #vertex4]} coordIndex[ #bottomsquare 0,3,2,1,0,-1, #side1 0,1,4,-1, #side2 1,2,4,-1, #side3 2,3,4,-1, #side4 3,0,4,-1, ]
}}.地形標高造型在VRML中,所謂地形標高造型是首先在XOZ坐標平面上創(chuàng)立一個柵格(即空間面在XOZ坐標平面上投影面),然后再任意改變每個柵格在Y軸上的高度,以創(chuàng)立不規(guī)那么的相對于地平線(當前坐標系XOZ坐標平面)的山脈或低谷造型(不規(guī)那么空間面)。ElevationGrid節(jié)點VRML中創(chuàng)立標高造型使用ElevationGrid節(jié)點進行,該節(jié)點通常作為Shape節(jié)點的geometry域的域值使用。ElevationGrid節(jié)點ElevationGrid節(jié)點語法格式如下:ElevationGrid{xDimension0xSpacing0.0zDimension0zSpacing0.0height[]texCoordNULLcolorNULLcolorPerVertenTRUEnormalNULLnormalPerVertexTRUEccwTRUEsolidTRUEcreaseAngle0.0set_height}ElevationGridxDimension域和zDimension域的域值設(shè)置標高在XZ方向上柵格頂點的數(shù)量,其域值必須大于等于0。xSpacing域和zSpacing域的域值設(shè)置標高造型在XZ方向上柵格寬度,其域值必須大于等于0.0。Height域的域值設(shè)置柵格頂點在Y方向上的海拔高度列表。texCoord域用來為ElevationGrid節(jié)點創(chuàng)立的標高造型進行特殊紋理渲染,其域值要設(shè)置另一個TextureCoordinate節(jié)點。ElevationGrid節(jié)點中的color域用來為標高造型著色,其域值為Color顏色節(jié)點。colorPerVertex域的域值設(shè)置對等高造型的顏色渲染是基于柵格頂點(其域值為TRUE)還是基于柵格平面(其域值為FALSE)。ElevationGridNormal域的域值要設(shè)置另一個Normal節(jié)點,該節(jié)點用于指定標高造型中的柵格頂點的法向量,單位法向量用于改變場景光線的明暗渲染效果。normalPerVertex域的域值設(shè)置對標高造型的單位法向量控制是基于柵格頂點(其域值為TRUE)還是基于柵格平面(其域值為FALSE)。ccw域的域值設(shè)置在光線模擬方程中,相對于自定義或默認單位法向量,標高造型頂點坐標系的設(shè)定方式。solid域的域值設(shè)置標高造型中的柵格平面是否構(gòu)造一個實體。creaseAngle域的域值設(shè)置一個用弧度表示的角的域值。擠出造型VRML的工業(yè)擠出造型使用Extrusion節(jié)點創(chuàng)立,用于模擬工業(yè)加工工業(yè)中的一次成型擠壓過程。Extrusion節(jié)點首先在當前坐標系XOZ平面折線,再在VRML空間中指定一條曲線作為二維平面折線的運動軌跡。在整個擠出過程中,二維折線的運動方向始終與空間曲線(脊線)上對應(yīng)點切線方向一致。沿這個二維折線沿脊線運動所得到的造型就是工業(yè)擠出造型。Extrusion節(jié)點Extrusion節(jié)點語法格式如下:Extrusion{
crossSection[1.01.0
1.0–1.0–1.0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品試劑安全管理制度
- 藥品門診統(tǒng)籌管理制度
- 藥店單向通道管理制度
- 藥店生活日常管理制度
- 菜鳥驛站人員管理制度
- 設(shè)備事故處罰管理制度
- 設(shè)備堆放倉庫管理制度
- 設(shè)備工裝模具管理制度
- 設(shè)備校外存放管理制度
- 設(shè)備監(jiān)理公司管理制度
- 2026年上海中考英語一輪復(fù)習:考綱詞匯一詞多義詞清單
- 譯文文學性再現(xiàn)與譯者主體性發(fā)揮的對比研究
- 炎癥性腸病營養(yǎng)治療專家共識(第三版)解讀課件
- 2025國家開放大學電大【信息管理概論】形考12答案 及 一體化終結(jié)性測試答案
- 《體重管理》課件
- 宗教與中國化課件
- 內(nèi)江市市中區(qū)2025屆小升初必考題數(shù)學檢測卷含解析
- 汽車充電系統(tǒng)檢測與維修考核試卷
- 模具租賃合同協(xié)議模板
- CNAS-CI01:2012 檢查機構(gòu)能力認可準則
- 《國有企業(yè)改革與發(fā)展》課件
評論
0/150
提交評論