版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 VRML應(yīng)用隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展, 人們已不滿足于從網(wǎng)上查詢一般靜態(tài)的結(jié)果, 而是希望能通過(guò)視、聽(tīng)、觸、嗅覺(jué)及形體、手勢(shì), 參與到具體的實(shí)際環(huán)境中去,獲得身臨其境的體驗(yàn),虛擬現(xiàn)實(shí)建模語(yǔ)言(VRML)就提供了這樣一種在網(wǎng)絡(luò)上既能創(chuàng)建又能體驗(yàn)虛擬世界的沉浸式交互環(huán)境,使用戶可以以自然的方式與虛擬環(huán)境中的對(duì)象交互影響,從而產(chǎn)生等同真實(shí)環(huán)境的感受和體驗(yàn)。8.1 VRML概述VRML是一種建模語(yǔ)言,用來(lái)在Web 環(huán)境中描述三維物體及其行為,從而在Web 環(huán)境中構(gòu)建虛擬場(chǎng)景。VRML的基本目標(biāo)是建立Internet上的交互式三維多媒體,它以Internet 作為應(yīng)用平臺(tái),作為構(gòu)筑VR 應(yīng)用
2、的基本構(gòu)架。8.1.1 VRML基本概念VRML即虛擬現(xiàn)實(shí)建模語(yǔ)言,是Virtual Reality Modeling Language的簡(jiǎn)稱,本質(zhì)上是一種面向web,面向?qū)ο蟮娜S造型語(yǔ)言,而且它是一種解釋性語(yǔ)言。是一種用于建立真實(shí)世界的場(chǎng)景模型或人們虛構(gòu)的三維世界的場(chǎng)景建模語(yǔ)言,也具有平臺(tái)無(wú)關(guān)性。是目前Internet上基于WWW的三維互動(dòng)網(wǎng)站制作的主流語(yǔ)言,VRML是一種國(guó)際標(biāo)準(zhǔn),其規(guī)范由國(guó)際標(biāo)準(zhǔn)化組織(ISO)定義。熟悉WWW的人都知道,受HTML的限制,網(wǎng)頁(yè)只能是平面的結(jié)構(gòu),就算JAVA語(yǔ)言能夠?yàn)榫W(wǎng)頁(yè)增色不少,但也僅僅停留在平面設(shè)計(jì)階段,而且實(shí)現(xiàn)環(huán)境與瀏覽者的動(dòng)態(tài)交互是非常繁瑣的,于
3、是VRML應(yīng)運(yùn)而生。1VRML 發(fā)展歷史(1)VRML1.01994年5月,第一屆因特網(wǎng)國(guó)際會(huì)議上,有關(guān)專家發(fā)表的在網(wǎng)絡(luò)上運(yùn)行三維立體世界的研究引起了廣泛的討論。1994 年10月,VRML1.0規(guī)范正式發(fā)布?,F(xiàn)在,VRML1.0已基本被淘汰。(2)VRML2.01996年8月,VGA決定設(shè)計(jì)小組決定將SGI的Moving Worlds方案改造為VRML2.0。VRML2.0已經(jīng)完全脫離HTML的影響,被正式命名為:虛擬現(xiàn)實(shí)建模語(yǔ)言。VRML2.0較VRML1.0添加了場(chǎng)景交互、多媒體支持,碰撞檢測(cè)等功能。(3)VRML971997年12月VRML作為國(guó)際標(biāo)準(zhǔn)正式發(fā)布,1998年1月正式獲得國(guó)
4、際標(biāo)準(zhǔn)化組織ISO批準(zhǔn),簡(jiǎn)稱VRML97。VRML97只是在VRML2.0基礎(chǔ)進(jìn)行上進(jìn)行了少量的修正,但它這意味著VRML已經(jīng)成為虛擬現(xiàn)實(shí)行業(yè)的國(guó)際標(biāo)準(zhǔn)。從此VRML的發(fā)展更為迅速,更為成熟。(4)X3D1999年底,VRML的又一種編碼方案X3D草案發(fā)布。X3D整合正在發(fā)展的XML、JAVA、流技術(shù)等先進(jìn)技術(shù),包括更強(qiáng)大、更高效的3D計(jì)算能力、渲染質(zhì)量和傳輸速度。2002年7月23日,Web3d聯(lián)盟發(fā)布了可擴(kuò)展3D(X3D)標(biāo)準(zhǔn)草案并且配套推出了軟件開(kāi)發(fā)工具供人們下載和對(duì)這個(gè)標(biāo)準(zhǔn)提出意見(jiàn)。這項(xiàng)技術(shù)是虛擬現(xiàn)實(shí)建模語(yǔ)言(VRML)的后續(xù)產(chǎn)品,是用XML語(yǔ)言表述的。X3D基于許多重要廠商的支持,可
5、以與MPEG-4兼容,同時(shí)也與VRML97及其之前的標(biāo)準(zhǔn)兼容。X3D標(biāo)準(zhǔn)的發(fā)布,為Web3D圖形的發(fā)展提供了廣闊的前景。2. VRML的基本特性(1)平臺(tái)無(wú)關(guān)性VRML的訪問(wèn)方式為C/S模式,其中服務(wù)器提供VRML文件,客戶通過(guò)網(wǎng)絡(luò)下載要訪問(wèn)的文件,并通過(guò)本地平臺(tái)的瀏覽器對(duì)該文件描述的虛擬現(xiàn)實(shí)世界進(jìn)行訪問(wèn)。也就是說(shuō),VRML文件包含了虛擬現(xiàn)實(shí)世界的邏輯結(jié)構(gòu)信息,瀏覽器根據(jù)這些信息可以實(shí)現(xiàn)許多虛擬現(xiàn)實(shí)的功能。由于瀏覽器是本地平臺(tái)提供的,從而實(shí)現(xiàn)了虛擬現(xiàn)實(shí)的平臺(tái)無(wú)關(guān)性。(2) 實(shí)時(shí)性傳統(tǒng)虛擬現(xiàn)實(shí)中使用的實(shí)時(shí)3D著色引擎在VRML中得到了更好的體現(xiàn),這一特性把虛擬現(xiàn)實(shí)的建模與實(shí)時(shí)訪問(wèn)更明確地隔離開(kāi)來(lái)
6、,也是虛擬現(xiàn)實(shí)不同于三維建模和動(dòng)畫的地方。后者預(yù)先著色,因而不能提供交互性,VRML提供了7個(gè)自由度, 即三個(gè)方向的移動(dòng)和旋轉(zhuǎn),以及和其他3D空間的超鏈接。 (3) 可擴(kuò)充性VRML作為一種標(biāo)準(zhǔn),不可能滿足所有應(yīng)用的需要,有的應(yīng)用希望畫面質(zhì)量更高,有的希望交互性更強(qiáng),有的希望VR世界更復(fù)雜,這些要求往往是相互制約的,同時(shí)又受到用戶平臺(tái)硬件性能的制約。因而要求VRML是可擴(kuò)充的,即可以根據(jù)需要定義自己的對(duì)象及其屬性,并通過(guò)Java語(yǔ)言等方式使瀏覽器可以解釋這種對(duì)象及其行為。(4) 網(wǎng)絡(luò)傳輸高速性VRML像HTML一樣, 用ASCII文本格式來(lái)描述世界和鏈接,保證在各種平臺(tái)上通用, 同時(shí)也降低了數(shù)
7、據(jù)量,從而在低帶寬的網(wǎng)絡(luò)上也可以實(shí)現(xiàn)。3VRML技術(shù)的應(yīng)用與其他在Web實(shí)現(xiàn)虛擬環(huán)境的實(shí)現(xiàn)技術(shù)相比,VRML的學(xué)習(xí)相對(duì)容易,但這并不意味著 VRML的功能簡(jiǎn)單。在構(gòu)建Web虛擬場(chǎng)景方面,VRML具有很強(qiáng)的能力,并且由于可以嵌入Java、JavaScript等腳本語(yǔ)言,其表現(xiàn)能力得到極大的擴(kuò)充。更為重要的是,它能夠?qū)崿F(xiàn)人機(jī)交互,實(shí)現(xiàn)動(dòng)畫,形成更為逼真的虛擬環(huán)境。VRML融合了二維和三維圖像技術(shù)、動(dòng)畫技術(shù)和多媒體技術(shù),借助于網(wǎng)絡(luò)的迅速發(fā)展,構(gòu)建了一個(gè)交互的虛擬空間。VRML技術(shù)和其他的計(jì)算機(jī)技術(shù)的結(jié)合,在Web環(huán)境中創(chuàng)建虛擬城市、虛擬校園、虛擬圖書館以及虛擬商店已經(jīng)不再是一種幻想。比如在電子購(gòu)物中
8、,用戶在虛擬商店里感受到的是和真實(shí)商品一樣實(shí)在的質(zhì)地,而不再是簡(jiǎn)單的圖片。又如在線房產(chǎn)的推銷中,雖然制作精良的建筑效果圖能夠給用戶以很好的感官認(rèn)識(shí),但是如果借助于VRML構(gòu)建的虛擬場(chǎng)景,能使用戶有如身臨其境,這無(wú)疑更具有吸引力和感召力。8.1.2 VRML場(chǎng)景的編輯與瀏覽同許多程序設(shè)計(jì)語(yǔ)言類似,VRML是文本敘述文件,因而可以用各種文本編輯器(比如Windows中的記事本NotePad、寫字板WordPad等)來(lái)編輯VRML源程序代碼,但要求程序存盤時(shí)文件的擴(kuò)展名必須是.wrl(world的縮寫),否則VRML的瀏覽器將無(wú)法識(shí)別。1VRML場(chǎng)景的編輯由于VRML文件往往結(jié)構(gòu)比較復(fù)雜,文本編輯的
9、過(guò)程中很容易由于疏忽而出現(xiàn)錯(cuò)誤,而一般的文本編輯器沒(méi)有糾錯(cuò)提示的功能。針對(duì)VRML的編程需求,為了提高效率,可以借助于專門的VRML編輯器編寫VRML文檔。VRMLPad就是一個(gè)功能強(qiáng)大并且使用簡(jiǎn)便的編輯器。VrmlPad具有VRML代碼下載、編輯、預(yù)覽、調(diào)試功能,是當(dāng)今VRML代碼編輯最強(qiáng)的工具之一,VRMLPad的操作界面如圖8.1所示。右邊是編輯區(qū),VRMLPad提供了節(jié)點(diǎn)和域的提示功能,每當(dāng)輸入節(jié)點(diǎn)或者域的第一個(gè)字母時(shí),會(huì)出現(xiàn)相應(yīng)的節(jié)點(diǎn)列表或者域列表,供設(shè)計(jì)者選擇,極大的提高了編輯VRML文檔的效率。此外,在編輯過(guò)程中,對(duì)不同的代碼用不同的顏色標(biāo)記便于區(qū)別,可以自動(dòng)檢測(cè)VRML的語(yǔ)法、
10、語(yǔ)義和結(jié)構(gòu)性錯(cuò)誤。 圖8.1 VRMLPad操作界面 在VrmlPad編輯器中主窗口的左半部分,還提供了一些輔助窗口以幫助設(shè)計(jì)者更方便的設(shè)計(jì)和管理VRML文件,主要包括場(chǎng)景樹(shù)、路徑圖、資源和文件列表。(1)場(chǎng)景樹(shù)(Scene Tree):可以顯示場(chǎng)景的結(jié)構(gòu)樹(shù),提供瀏覽層次結(jié)構(gòu),編輯標(biāo)志符名稱和文本快速定位的功能,如圖8.2所示。(2)路徑圖(Routing Map):顯示VRML文件中所有的節(jié)點(diǎn)、事件等信息,如圖8.3所示。(3)資源(Resources):顯示了該文件引用到的所有外部資源文件,可以包括紋理貼圖、聲音和插入的 VRML 文件。(4)文件列表(File List):相當(dāng)于資源管理
11、器里的文件列表,可以方便地管理文件。 圖8.2 Vrmlpad的場(chǎng)景樹(shù) 圖8.3 Vrmlpad的路徑圖2VRML場(chǎng)景的瀏覽要在瀏覽器中觀察VRML場(chǎng)景,需要另外安裝VRML瀏覽器插件。目前,有許多VRML瀏覽器插件,例如Cortona、CosmoPlayer、Blaxxun Contact和WorldView等。Cortona瀏覽器使用方便,支持MPEG等視頻文件,流媒體文件,Mp3等多種音頻文件,F(xiàn)lash動(dòng)畫文件,多種材質(zhì)效果,支持Nurbs曲線,粒子效果,霧化效果。而且交互性能近乎完美,是目前大多數(shù)用戶使用的VRML瀏覽器,下面以ParallelGraphics公司的Cortona4.
12、0為例說(shuō)明VRML瀏覽器的使用。先下載Cortona4.0安裝包,下載地址為:本例子是打開(kāi)一個(gè)用VrmlPad編輯的VRML文件,在瀏覽器中進(jìn)行瀏覽,出現(xiàn)的三維場(chǎng)景,如圖8.4所示。圖8.4 Cortona4.0VRML瀏覽器Cortona4.0VRML瀏覽界面包括兩部分:(1)三維窗口:位于瀏覽器窗口的中央,顯示3D場(chǎng)景畫面的窗口。(2)控制欄:位于瀏覽器窗口的底邊,左邊的八個(gè)按鈕為交互按鈕,使用方法一般是先按一下按鈕,然后回到三維窗口中,按下鼠標(biāo)左鍵移動(dòng)進(jìn)行交互觀察;而右邊的四個(gè)按鈕則是非交互式按鈕,只要按一下按鈕,就可以看到相應(yīng)變化。表8-1給出了交互按鈕的具體功能;表8-2給出了非交互
13、按鈕的具體功能。表8-1 交互按鈕的功能按鈕功 能Walk按鈕:漫步瀏覽模式。在窗口中按下鼠標(biāo)左鍵拖動(dòng),觀察者可以類似于在地面上前進(jìn)、后退、左右旋轉(zhuǎn)等方式觀察行為。Fly按鈕:飛行瀏覽模式。在窗口中按下鼠標(biāo)左鍵拖動(dòng),觀察者可以在三維空間中做上升、下降、前進(jìn)、后退、左右旋轉(zhuǎn)等方式觀察行為。不與物體發(fā)生碰撞。Examine按鈕:觀察瀏覽模式。按下鼠標(biāo)左鍵拖動(dòng),可以將三維場(chǎng)景繞其自身的中心沿任意軸旋轉(zhuǎn),或平移、縮放三維場(chǎng)景。Plan按鈕:水平平移方式。在窗口中按下鼠標(biāo)左鍵拖動(dòng),可以在水平面內(nèi)任意前后左右移動(dòng)。Pan按鈕:垂直平移方式。在窗口中按下鼠標(biāo)左鍵拖動(dòng),可以在垂直面內(nèi)任意上下左右移動(dòng)。Turn
14、按鈕:水平旋轉(zhuǎn)方式。此時(shí)拖動(dòng)鼠標(biāo)可以改變觀察的方向,水平面內(nèi)任意前后左右旋轉(zhuǎn)三維場(chǎng)景。Roll按鈕:垂直旋轉(zhuǎn)方式。此時(shí)拖動(dòng)鼠標(biāo)可以改變觀察的方向,垂直面內(nèi)任意上下左右旋轉(zhuǎn)三維場(chǎng)景。Goto按鈕:走近方式。先點(diǎn)擊此按鈕,然后單擊三維場(chǎng)景上的某一對(duì)象或部分,瀏覽器會(huì)自動(dòng)將觀察的位置和視角調(diào)整到瀏覽該對(duì)象的最佳狀態(tài)。表8-2 非交互按鈕的功能按鈕功 能Straighten按鈕:恢復(fù)水平面。點(diǎn)擊此按鈕,視角恢復(fù)到水平面或地面。View按鈕:視點(diǎn)切換。點(diǎn)擊此按鈕,前進(jìn)一個(gè)或后退一個(gè)視點(diǎn)。Restore按鈕:恢復(fù)初始狀態(tài)。場(chǎng)景變換了方位、移動(dòng)了位置后,點(diǎn)擊此按鈕,視角會(huì)恢復(fù)到初始狀態(tài)。Fit按鈕:自動(dòng)適應(yīng)
15、視角。點(diǎn)擊此按鈕,可以自動(dòng)切換到一個(gè)能觀察到整個(gè)三維場(chǎng)景的視角。此外,在瀏覽器的三維場(chǎng)景窗口中單擊鼠標(biāo)右鍵,還可以彈出一個(gè)快捷菜單,可以對(duì)三維效果進(jìn)行更進(jìn)一步的設(shè)置,如圖8.5所示。 圖8.5 VRML瀏覽器瀏覽參數(shù)設(shè)置參數(shù)說(shuō)明如下:(1)Viewpionts:視點(diǎn)切換。如果設(shè)置了視點(diǎn),則在下級(jí)菜單中會(huì)看到選項(xiàng),否則為空。 (2)Headlight:頂頭燈。關(guān)閉它時(shí),若場(chǎng)景中沒(méi)有設(shè)置光源并且造型沒(méi)有設(shè)置發(fā)光則場(chǎng)景中將一團(tuán)漆黑。(3)Navigation:瀏覽模式選擇。有幾個(gè)選項(xiàng)供瀏覽者選擇。 (4)Speed:瀏覽移動(dòng)速度選擇。如圖8.5所示,選擇了標(biāo)準(zhǔn)(Normal)模式。 (5)FullS
16、creen:全屏瀏覽。屏蔽IE瀏覽器的導(dǎo)航條等,能達(dá)到顯示器最大分辨率,令三維場(chǎng)景畫面質(zhì)量更高。(6)HideToolbars:隱藏控制欄。(7)ShowConsole:顯示Console信息提示。如果程序有錯(cuò)誤,在運(yùn)行時(shí)會(huì)出現(xiàn)提示信息。(8)Preferences:瀏覽器參數(shù)選擇。有幾個(gè)類別的選項(xiàng)供瀏覽者選擇。 (9)Help:瀏覽器幫助文件。8.1.3 VRML文件的基本特點(diǎn)1VRML的空間坐標(biāo)與計(jì)量單位在構(gòu)建虛擬場(chǎng)景中,構(gòu)成場(chǎng)景的造型有大小的差別,物體間有相對(duì)位置的不同,并且造型還會(huì)有旋轉(zhuǎn)、移動(dòng)等運(yùn)動(dòng),這就涉及到物體的空間坐標(biāo)系、相應(yīng)的長(zhǎng)度、角度及顏色等。在VRML中,采用空間直角坐標(biāo)系
17、來(lái)確定造型的位置,并且用特定的計(jì)量單位定量表示長(zhǎng)度。在VRML場(chǎng)景中,空間直角坐標(biāo)滿足右手螺旋法則,如圖8.6所示為空間直角坐標(biāo)系,就是說(shuō),右手四指從x方向轉(zhuǎn)到y(tǒng)方向,則拇指的指向是z方向。在默認(rèn)情況下,x坐標(biāo)向右為正,y坐標(biāo)向上為正,而z坐標(biāo)指向觀察者為正。 圖 8.6 空間直角坐標(biāo)系在VRML中,長(zhǎng)度及坐標(biāo)的計(jì)量單位采用VRML單位計(jì)量,簡(jiǎn)稱為單位。在本書中,為敘述簡(jiǎn)練而省去單位字樣。例8-1#VRML V2.0 utf8 geometry Cylinder radius 2.0height 4.0 例8-1中的VRML文檔表示的是一個(gè)圓柱體造型,半徑為2.0,高為4.0。需要注意的是,這
18、里表示的計(jì)量單位和實(shí)際環(huán)境中的計(jì)量沒(méi)有任何可比性,和一些三維建模軟件如3ds Max 的計(jì)量單位也沒(méi)有可比性。在VRML場(chǎng)景中,只有物體間的大小和相對(duì)位置都用VRML單位計(jì)量,才能模擬出真實(shí)的物體。在VRML中,使用的角度也不是普通的角度,而是用弧度表示的,這是瀏覽器所能接受的角度描述。當(dāng)在VRML中使用角度單位時(shí),要先將其換算成弧度后,再將其寫入到VRML文檔中。VRML中的360角度等于2弧度,由此,1弧度約等于57。2VRML文件的基本要素節(jié)點(diǎn)和域VRML文件的擴(kuò)展名為.wrl,文件中最為重要的兩個(gè)基本要素是節(jié)點(diǎn)(Node)和域(Field)。節(jié)點(diǎn)是VRML文檔中基本的組成單元,是VRM
19、L的精髓和核心,是實(shí)現(xiàn)功能的最小單位和場(chǎng)景圖的基本組件。VRML借助于節(jié)點(diǎn)可以描述對(duì)象某一方面的特征,比如:形狀、大小、材質(zhì)以及顏色等,也可以描述對(duì)于場(chǎng)景的渲染方式,如光照、背景聲音等,還可以設(shè)置瀏覽者與場(chǎng)景交流的方式,如視點(diǎn)的變化、用戶鼠標(biāo)動(dòng)作的檢測(cè)等。VRML文件就是若干表現(xiàn)功能各異的節(jié)點(diǎn)層層嵌套構(gòu)成。例8-2#VRML V2.0 utf8Shape appearance Appearance material Material diffuseColor 0 0 1.0 geometry Cylinder radius 3.0 height 10.0例8-2中的VRML文檔描述了一個(gè)藍(lán)色圓
20、柱體的構(gòu)建,其中Shape、Appearance、Material 和Cylinder就是節(jié)點(diǎn),節(jié)點(diǎn)的第一個(gè)字母必須大寫。一個(gè)節(jié)點(diǎn)由節(jié)點(diǎn)名和一對(duì)花括號(hào)組成,花括號(hào)內(nèi)可包含一條語(yǔ)句或多條語(yǔ)句,節(jié)點(diǎn)具有節(jié)點(diǎn)名、節(jié)點(diǎn)類型、包含的域、事件接口等基本組成部分。 域定義了節(jié)點(diǎn)的各個(gè)屬性,不同的域代表不同的屬性,域具有域值,它指明了節(jié)點(diǎn)所描述的對(duì)象的特征。在例8-1中的VRML文檔中,Cylinder是一個(gè)節(jié)點(diǎn),用來(lái)構(gòu)造一個(gè)圓柱體,而radius和height則是Cylinder節(jié)點(diǎn)的兩個(gè)域,分別表示圓柱體的半徑和高,它們描述了圓柱體所具有的形狀特征。該文檔中的appearance、material和geo
21、metry也都是域。不同的節(jié)點(diǎn)包含不同的域,各個(gè)域之間沒(méi)有次序之分。節(jié)點(diǎn)中域的作用各不相同,域值的數(shù)據(jù)類型也不一定一樣,有的域可以用布爾型數(shù)據(jù)True或者False表示一種狀態(tài),另外的域可以用三原色(RGB)表示顏色。而且從上面的一段VRML文檔也可以看出,有些域還用同名的節(jié)點(diǎn)作為域值,比如appearance域,其域值是Appearance節(jié)點(diǎn)。在使用域的時(shí)候,不必設(shè)置每個(gè)域,因?yàn)槊總€(gè)域都有自己的默認(rèn)值,對(duì)于一個(gè)節(jié)點(diǎn),如果不設(shè)置域,則每個(gè)域都取自己的默認(rèn)值。下面三個(gè)VRML文檔都表示一個(gè)邊長(zhǎng)為1.0的正方體,但是由于設(shè)置不同,表現(xiàn)的材質(zhì)特征(比如顏色、發(fā)光狀態(tài)等)則不同。例8-3#VRML
22、V2.0 utf8Shape appearance Appearance material Material geometry Box 例8-4#VRML V2.0 utf8Shape appearance Appearance geometry Box 例8-5#VRML V2.0 utf8Shape geometry Box 例8-3設(shè)置了造型的外觀、材質(zhì)和造型;例8-4設(shè)置了外觀和造型;例8-5只設(shè)置了造型。節(jié)點(diǎn)和域書寫的情況不同,節(jié)點(diǎn)應(yīng)該用大括號(hào) 將所有的域括起來(lái);域值一般可以跟在域名稱后面直接寫。如果是多域值的情況,要用中括號(hào) 將多個(gè)域括起來(lái),域值之間用逗號(hào)或者空格隔開(kāi),如skyCo
23、lor0.0 0.0 1.0,0.2 0.2 0.8,1.0 1.0 1.0。3VRML的語(yǔ)法結(jié)構(gòu)VRML語(yǔ)法主要包括文件頭、節(jié)點(diǎn)、原型、事件和路由等。當(dāng)然并不是所有的文件都必須是這六個(gè)部分,只有文件頭是必須的。下面觀察一個(gè)VRML文件,如例8-6所示。例8-6#VRML V2.0 utf8 #VRML文件的第一行Shape appearance DEF Bq Appearance material Material diffuseColor 0 0 1 geometry Sphere radius 2例8-6中的VRML文檔描述了一個(gè)藍(lán)色的球,雖然是一個(gè)很簡(jiǎn)單的幾何體,但卻是一個(gè)很典型的VR
24、ML文件,它表達(dá)了下述幾個(gè)方面的內(nèi)容。(1)文檔中的第一行“#VRML V2.0 uft8”,是VRML文件頭,任何VRML文件都必須有這樣的文件頭,并且必須放在第一行,它表述了以下4個(gè)含義:這里的“#”不是注釋,而是VRML文件的一個(gè)部分;V2.0表示告訴瀏覽器,這個(gè)文件使用VRML2.0版的規(guī)范完成;uft8表示文件是使用國(guó)際UTF-8的字符集合;UTF:國(guó)際字符集轉(zhuǎn)換格式(Universal Character Set Transform Format)。(2)文檔中的“#VRML文件的第一行”是一個(gè)注釋語(yǔ)句,用以對(duì)這一行進(jìn)行說(shuō)明,在它之后的每一個(gè)字都會(huì)被忽略,一直到換行符。在VRML中
25、,注釋是在語(yǔ)句的前面加上“#”,但不支持多行注釋,當(dāng)注釋信息多于一行時(shí),會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。注釋不是必須的,但是在必要的地方加上注釋是一個(gè)很好的習(xí)慣,便于讀程序、調(diào)試和修改程序。瀏覽器在執(zhí)行中會(huì)跳過(guò)#這一行后面的內(nèi)容,另外瀏覽器自動(dòng)忽略VRML中所有的空行與空格。(3)文檔中的“DEF Bq Appearance”這是為Appearance節(jié)點(diǎn)定義一個(gè)名稱。有時(shí)候,一個(gè)造型、一個(gè)造型的外觀甚至一個(gè)場(chǎng)景可能在文檔中會(huì)多次出現(xiàn),這時(shí)可以將描述造型的節(jié)點(diǎn)、描述外觀的節(jié)點(diǎn)或者描述場(chǎng)景的一組節(jié)點(diǎn)定義一個(gè)新名稱,在需要的地方引用,這樣就節(jié)省了開(kāi)發(fā)時(shí)間,同時(shí)也使得程序不至于太過(guò)繁雜。定義節(jié)點(diǎn)的基本方法如下: D
26、EF 節(jié)點(diǎn)名稱 節(jié)點(diǎn) 這里,節(jié)點(diǎn)名稱用來(lái)給所要引用的節(jié)點(diǎn)起一個(gè)名字,它可以由大小寫字母、下劃線和數(shù)字組成,但是節(jié)點(diǎn)名稱是區(qū)分大小寫的,并且名稱不能以數(shù)字開(kāi)頭;節(jié)點(diǎn)名稱也不能包括非打印字符,如:空格等;節(jié)點(diǎn)名稱中也不能含有各種運(yùn)算符號(hào)、括號(hào)以及一些特殊字符,如:等;節(jié)點(diǎn)名稱不能用VRML中有特殊作用的字符串,也可稱為保留字。定義好節(jié)點(diǎn)后,在需要引用該節(jié)點(diǎn)的時(shí)候,就可以直接引用,使用語(yǔ)法為:USE 節(jié)點(diǎn)名稱4事件(Event)和路由(Route)在現(xiàn)實(shí)環(huán)境中,物體狀態(tài)往往會(huì)隨著時(shí)間有相應(yīng)的變化,比如,物體的大小隨著時(shí)間發(fā)生變化。在VRML中借助事件(Event)和路由(Route)的概念反映這種現(xiàn)
27、實(shí)情況。在VRML中,每個(gè)節(jié)點(diǎn)一般都有兩種事件:“入事件”(eventIn)和“出事件”(eventOut),每個(gè)節(jié)點(diǎn)都通過(guò)這些“入事件”和“出事件”來(lái)改變節(jié)點(diǎn)的域值。事件相當(dāng)于高級(jí)程序語(yǔ)言中的函數(shù)調(diào)用,其中,“入事件”相當(dāng)于函數(shù)調(diào)用的參數(shù),而“出事件”相當(dāng)于函數(shù)返回的參數(shù)。事件的命名規(guī)律:“入事件” 以set_開(kāi)頭,“出事件”以_changed結(jié)尾。如當(dāng)節(jié)點(diǎn)的顏色發(fā)生改變,可以表示為接收了set_color事件。路由的功能是連接一個(gè)節(jié)點(diǎn)的出事件eventOuts和另一個(gè)節(jié)點(diǎn)入事件eventIns的路徑,其任務(wù)是描述節(jié)點(diǎn)之間域值傳遞的路線。路由的出現(xiàn),可使虛擬空間具有交互性、動(dòng)感性與靈活性。路
28、由的說(shuō)明可以在VRML頂部,也可以在文件節(jié)點(diǎn)的某個(gè)域中。借助于事件和路由,可以創(chuàng)建動(dòng)畫效果以及方便瀏覽者和場(chǎng)景的交互,使得所建立的虛擬場(chǎng)景更接近于現(xiàn)實(shí)。8.2 基本幾何模型的構(gòu)建在現(xiàn)實(shí)生活中,諸如球體、圓柱體、圓錐體和長(zhǎng)方體等基本幾何形狀到處可見(jiàn),是現(xiàn)實(shí)世界場(chǎng)景的基本元素。VRML中設(shè)定了一些基本的幾何造型節(jié)點(diǎn),用來(lái)模擬真實(shí)的幾何圖形,這些幾何造型節(jié)點(diǎn)的靈活組合,能夠構(gòu)建出較為復(fù)雜的場(chǎng)景造型。掌握好這些幾何造型節(jié)點(diǎn)的使用是非常重要的。同時(shí),學(xué)習(xí)文本造型的知識(shí)也是場(chǎng)景建造中必不可少的部分。8.2.1 Shape節(jié)點(diǎn)的使用對(duì)于實(shí)際的物體來(lái)說(shuō),最主要的基本特征就是它的外觀、材質(zhì)和形狀。在VRML中,
29、用Shape來(lái)創(chuàng)建造型的節(jié)點(diǎn),它是最重要的一個(gè)節(jié)點(diǎn)。使用這個(gè)節(jié)點(diǎn)可以創(chuàng)建和控制VRML支持的造型的外觀、材質(zhì)和形狀。1使用語(yǔ)法Shapeappearance NULL # SFNodegeometry NULL # SFNode2域值說(shuō)明Shape節(jié)點(diǎn)有2個(gè)域,而且這2個(gè)域的域值都是單域值節(jié)點(diǎn)型。(1)appearance:包含一個(gè)Appearance節(jié)點(diǎn),定義造型的外觀和材質(zhì)。(2)geometry:在VRML中,用來(lái)描述造型的形狀特征的域是geometry。VRML的基本幾何造型節(jié)點(diǎn)有Box節(jié)點(diǎn)、Sphere節(jié)點(diǎn)、Cone節(jié)點(diǎn)和Cylinder節(jié)點(diǎn),從它們的名稱很容易看出所要建造的基本幾何
30、造型,這些節(jié)點(diǎn)都是geometry域的節(jié)點(diǎn)型域值。除了基本造型以外,geometry的域值還包括另外一些創(chuàng)建復(fù)雜造型的節(jié)點(diǎn),例如,點(diǎn)集合、線集合以及面集合節(jié)點(diǎn)等。例8-7#VRML V2.0 utf8 Shape appearance Appearance #定義外觀material Material #設(shè)置材質(zhì) diffuseColor 1 0 0 #材料的漫反射顏色 specularColor 0.5 0.8 0.5 #物體鏡面反射光線的顏色 emissiveColor 1 0.2 0.2 #放光物體產(chǎn)生的光的顏色geometry Sphere radius 3.0 例8-8#VRML V
31、2.0 utf8 Shape appearance Appearance material Material diffuseColor 1 0 0 specularColor 0.5 0.8 0.5 emissiveColor 1 0.2 0.2 geometry Cylinder radius 2.0 height 5.0可以直觀看到,例8-7(運(yùn)行效果如圖8.7所示)和例8-8(運(yùn)行效果如圖8.8所示)造型(geometry域)不同,但是appearance域中的設(shè)置一樣,則表現(xiàn)出來(lái)的材質(zhì)相同。 圖8.7 例8-7運(yùn)行效果 圖8.8 例8-8運(yùn)行效果8.2.2 創(chuàng)建基本幾何造型1創(chuàng)建球體對(duì)
32、象(1)使用語(yǔ)法Sphereradius 1.0 # SFFloat(2)域值說(shuō)明該節(jié)點(diǎn)只有一個(gè)域radius,用來(lái)規(guī)定以原點(diǎn)為圓心的球體的半徑,默認(rèn)值為1.0。域值類型為單域值浮點(diǎn)型。例8-9#VRML V2.0 utf8Shape appearance Appearance material Material diffuseColor 0 1 0 geometry Sphere radius 3 例8-9運(yùn)行效果如圖8.9所示,本例創(chuàng)建了一個(gè)半徑為3.0、幾何中心位于坐標(biāo)原點(diǎn)的綠色球體。Sphere惟一能夠變化的只是球體的半徑,半徑不同,得到不同大小的球體。圖8.9 例8-9運(yùn)行結(jié)果2創(chuàng)建
33、圓柱體對(duì)象(1)使用語(yǔ)法Cyilnder radius 1.0 # SFFloat height 2.0 # SFFloat top TRUE # SFBoolbottom TRUE # SFBool side TRUE # SFBool (2)域值說(shuō)明radius:用來(lái)確定圓柱體的半徑,默認(rèn)值為1.0。height:用來(lái)確定圓柱體沿軸線的高度,默認(rèn)值為2.0。top:用來(lái)確定圓柱體是否有頂面。如果為TRUE,則圓柱體頂部是可見(jiàn)的;如果為FALSE,則頂部不可見(jiàn),默認(rèn)值為TRUE。bottom:用來(lái)確定圓柱體是否有底面。如果為TRUE,則圓柱體底部是可見(jiàn)的;如果為FALSE,則底部不可見(jiàn),默認(rèn)
34、值為TRUE。side:用來(lái)確定圓柱體是否有側(cè)面。如果為TRUE,則側(cè)面是可見(jiàn)的;如果為FALSE,則側(cè)面不可見(jiàn),意味著雖然這時(shí)也是圓柱體的造型,但是卻看不到側(cè)面,默認(rèn)值為TRUE。例8-10 #VRML V2.0 utf8Shape appearance Appearance material Material diffuseColor 0 1 1 geometry Cylinder radius 2 height 3.5top FALSE例8-10運(yùn)行效果如圖8.10所示,本例創(chuàng)建了一個(gè)類似于木桶那樣的圓柱體(top的值為FALSE,所以無(wú)頂面),該圓柱體半徑為2,高為3.5。為便于觀察,
35、圖中的造型旋轉(zhuǎn)了一個(gè)角度。Cylinder創(chuàng)建的圓柱體的幾何中心位于坐標(biāo)原點(diǎn),且圓柱體的母線平行于Y軸方向。 圖8.10 例8-10運(yùn)行結(jié)果3創(chuàng)建立方體對(duì)象(1)使用語(yǔ)法Box size 2.0 2.0 2.0 #SFVec3f(2)域值說(shuō)明該節(jié)點(diǎn)只有一個(gè)域size,用于控制立方體的尺寸(長(zhǎng)、高、寬),長(zhǎng)、高、寬分別位于X軸、Y軸和Z軸。默認(rèn)值是邊長(zhǎng)為2.0的正方體。域值類型為單域值三維向量型。例8-11Shape appearance Appearance material Material diffuseColor 1 1 0 geometry Box size 4 3 2例8-11運(yùn)行效
36、果如圖8.11所示,該例創(chuàng)建了長(zhǎng)度為4、高度為3、寬度為2的黃色長(zhǎng)方體。圖8.11 例8-11運(yùn)行結(jié)果4創(chuàng)建圓錐體對(duì)象(1)使用語(yǔ)法Cone bottomRadius 1.0 # SFFloatheight 2.0 # SFFloatside TRUE # SFBoolbottom TRUE # SFBool (2)域值說(shuō)明bottomRadius:用來(lái)確定圓錐體底面的半徑,默認(rèn)值為1.0。height:用來(lái)確定從圓錐體底部到頂部的垂直高度,默認(rèn)值為2.0。side:用來(lái)確定圓錐體的側(cè)面是否可見(jiàn)。情況同圓柱體的side域一樣,默認(rèn)值為TRUE。bottom:用來(lái)確定圓錐體的底面是否可見(jiàn),默認(rèn)值
37、為TRUE。例8-12Shape appearance Appearance material Material diffuseColor 1 0 1 geometry Cone bottomRadius 2.5 height 5 bottom FALSE例8-12運(yùn)行效果如圖8.12所示,本例創(chuàng)建了一個(gè)底面半徑為2.5,高為5且沒(méi)有底面的圓錐體。由于設(shè)置了bottom的域值為FALSE,則錐體內(nèi)部是不可見(jiàn)的。圖8.12 例8-12運(yùn)行結(jié)果這些基本的幾何造型節(jié)點(diǎn)(Sphere、Cylinder、Box和Cone)雖然很簡(jiǎn)單,但是對(duì)于創(chuàng)建場(chǎng)景不可缺少的,必須能夠非常熟練的使用它們。在實(shí)際場(chǎng)景中,
38、往往要用到多個(gè)基本幾何造型組合使用,目前只能創(chuàng)建簡(jiǎn)單的組合造型,根本的原因就是它們的默認(rèn)位置都是幾何中心位于坐標(biāo)原點(diǎn),必須經(jīng)過(guò)坐標(biāo)變換才能使它們處于不同的位置和不同的方位。如例8-13是使用了多個(gè)Shape節(jié)點(diǎn)組合而成,運(yùn)行效果如圖8.13所示。例8-13#VRML V2.0 utf8Shape appearance Appearance material Material diffuseColor 1 0 0 geometry Cone bottomRadius 0.5 height 7.5 Shape appearance Appearance material Material diff
39、useColor 0 1 0 geometry Sphere radius 0.8 Shape appearance Appearance material Material diffuseColor 0 0 1 geometry Box size 2.5 0.15 2.5 圖8.13 例8-13運(yùn)行結(jié)果8.2.3 創(chuàng)建文本造型在虛擬場(chǎng)景中,除了造型以外,文本也是不可少的。在VRML中,文本也是一種造型,用節(jié)點(diǎn)Text創(chuàng)建它。節(jié)點(diǎn)Text也是geometry域的一個(gè)域值。1使用語(yǔ)法Text string # MFString length # MFFloat maxExtent 0.0 # S
40、FFloatfontStyle NULL # SFNode2域值說(shuō)明(1)string:指定要顯示的文本字符串。它是多域值字符串型,可以添加多個(gè)字符串,每個(gè)字符串用雙引號(hào)擴(kuò)起來(lái)。如果是多行字符串,也可以分行寫,也可以在一行書寫,中間以逗號(hào)或者空格分隔開(kāi)。默認(rèn)值是空字符串,即不添加任何字符串。(2)Length:設(shè)置單個(gè)文本串的長(zhǎng)度,0表示可以為任意長(zhǎng)度。這個(gè)域是多值的,值的個(gè)數(shù)取決于設(shè)置的字符串的個(gè)數(shù),每個(gè)依次對(duì)應(yīng)string域的每個(gè)字符串的長(zhǎng)度。(3)maxExtent:用來(lái)確定文本的任意一行在主要方向上的最大范圍,其值必須大于等于0。主要方向由FontStyle節(jié)點(diǎn)的horizonal域來(lái)
41、確定。如果該域值是TRUE,則主要方向是水平方向,否則是垂直方向。maxExtent域值的默認(rèn)值為0,表示字符串可為任意長(zhǎng)度。(4) fontStyle:用來(lái)確定文本字符串的特征。這個(gè)域值有一個(gè)同名的節(jié)點(diǎn)FontStyle,該節(jié)點(diǎn)說(shuō)明了如何繪制文本。fontStyle域的默認(rèn)值是Null,即不設(shè)置文本特征。例8-14#VRML V2.0 utf8 Shape appearance Appearance geometry Text string VRML Virtual Reality Modeling Language 虛擬現(xiàn)實(shí)建模語(yǔ)言 length 8,8 例8-14運(yùn)行效果如圖8.14所示
42、,本例創(chuàng)建了三行文本,并且設(shè)置文本的長(zhǎng)度均為8,可以看出,較短的文本字符串被拉長(zhǎng)了,而較長(zhǎng)的文本字符串被壓縮以適應(yīng)域length的值。這里沒(méi)有設(shè)置Fontstyle節(jié)點(diǎn),默認(rèn)文本造型是水平向右排列的。圖8.14 例8-14運(yùn)行結(jié)果8.2.4 創(chuàng)建復(fù)雜造型基本造型是創(chuàng)建場(chǎng)景的基礎(chǔ),但是在自然界中,物體并非都是規(guī)則的基本幾何造型。單純用基本造型創(chuàng)建場(chǎng)景并不能真實(shí)地反映現(xiàn)實(shí)中的所有場(chǎng)景。盡管有的時(shí)候可以借助于基本幾何造型的組合反映現(xiàn)實(shí),但是往往使得建模工作過(guò)于煩瑣。因此本節(jié)介紹另外一些造型,他們也都是geometry的域值,在創(chuàng)建復(fù)雜造型的時(shí)候非常有效。1虛擬場(chǎng)景中點(diǎn)、線、面的創(chuàng)建從根本上說(shuō),點(diǎn)、線
43、、面是所有造型的基本元素,在空間的點(diǎn)按照某種規(guī)律分布或者連接就能夠構(gòu)成點(diǎn)的集合、各種各樣的線以及千變?nèi)f化的面。VRML中,有三個(gè)節(jié)點(diǎn)分別對(duì)應(yīng)這三種情況:點(diǎn)、線、面集合節(jié)點(diǎn)。在創(chuàng)建各種集合節(jié)點(diǎn)的時(shí)候最基本的工作是要確定一系列的點(diǎn)集,然后再來(lái)定義這些點(diǎn),以便在創(chuàng)建點(diǎn)集合、線集合和面集合造型的時(shí)候確定如何引用或者連接這些點(diǎn)。VRML中對(duì)于點(diǎn)、線以及面集合造型確定一系列的空間點(diǎn)用節(jié)點(diǎn)Coordinate。(1)使用語(yǔ)法 Coordinate point # MFVec3f (2)域值說(shuō)明 point:指定一個(gè)或一組空間點(diǎn)的X、Y、Z坐標(biāo),它是多域值三維向量型,意味著給出一個(gè)三維坐標(biāo)的列表。這個(gè)節(jié)點(diǎn)作為
44、PointSet 以及IndexedFaceSet、IndexedLineSet之類的點(diǎn)、線和面的幾何節(jié)點(diǎn)的coord域的節(jié)點(diǎn)型域值。對(duì)這些點(diǎn)的不同的處理就能夠創(chuàng)建出許多滿足要求的造型。2構(gòu)造空間點(diǎn)集合造型(1)點(diǎn)集合節(jié)點(diǎn)PointSet在VRML虛擬環(huán)境中創(chuàng)建離散的點(diǎn)用點(diǎn)集合節(jié)點(diǎn)PointSet。點(diǎn)集合節(jié)點(diǎn)PointSet是geometry域的一個(gè)域值,其作用是在空間構(gòu)造、定義一系列與色彩相關(guān)聯(lián)的點(diǎn)的集合。使用語(yǔ)法PointSet coord NULL # SFNodecolor NULL # SFNode 域值說(shuō)明coord:包含一個(gè)Coordinate 節(jié)點(diǎn),用來(lái)給出一些列空間坐標(biāo)點(diǎn)。
45、color:包含一個(gè)Color節(jié)點(diǎn),Color節(jié)點(diǎn)又包含一個(gè)color域,使空間的點(diǎn)與顏色聯(lián)系起來(lái)。(2)Color節(jié)點(diǎn) Color節(jié)點(diǎn)不僅僅使用在PointSet節(jié)點(diǎn)中,在三個(gè)集合節(jié)點(diǎn)中都要用到。Color節(jié)點(diǎn)給出一個(gè)顏色列表,用于設(shè)置點(diǎn)集合中離散點(diǎn)的顏色或者線和面的顏色。使用語(yǔ)法Color color # MFColor 域值說(shuō)明Color節(jié)點(diǎn)指定一個(gè)物體的每一個(gè)面、每一根線或每個(gè)頂點(diǎn)的RGB值。用于設(shè)置PointSet、IndexedLineset或IndexedFaceSet節(jié)點(diǎn)的color域。Color節(jié)點(diǎn)可為一個(gè)幾何形體指定多種顏色,如一個(gè)IndexedFaceSet節(jié)點(diǎn)的每一個(gè)面
46、或每一個(gè)頂點(diǎn)可以是不同顏色。Material節(jié)點(diǎn)可被用來(lái)指定一個(gè)照亮的幾何形體的所有材料屬性。如果一個(gè)幾何形體既由Material節(jié)點(diǎn)又由Color節(jié)點(diǎn)定義,那么Color顏色將取代材料的漫反射成分。例8-15#VRML V2.0 utf8 Shape appearance Appearance geometry PointSet coord Coordinate point 0 1 0,0 2 0, 0 3 0, 0 4 0, 1 1 0,1 2 0, 1 3 0, 1 4 0, 2 1 0,2 2 0, 2 3 0, 2 4 0, 3 1 0,3 2 0, 3 3 0, 3 4 0, co
47、lor Color color 1 1 0,0 1 0,0 1 0,0 1 1 1 1 0,0 1 0,0 1 0,0 1 1 1 1 0,0 1 0,0 1 0,0 1 1 1 1 0,0 1 0,0 1 0,0 1 1 例8-15運(yùn)行效果如圖8.15所示,使用PointSet節(jié)點(diǎn)建立了十六個(gè)離散點(diǎn)集,可用來(lái)制作類似于星星等分離的帶有顏色的點(diǎn)。點(diǎn)集不受光源影響,不能增加紋理,不進(jìn)行碰撞檢測(cè)。通常顏色的個(gè)數(shù)要大于等于點(diǎn)的個(gè)數(shù)。 圖8.15 例8-15運(yùn)行結(jié)果3構(gòu)造空間折線造型空間的任意兩個(gè)點(diǎn)可以構(gòu)成一根直線,多根線在空間中相互連接可以構(gòu)成各種封閉線或者折線。在VRML中,也是采用這樣的思想構(gòu)造
48、空間的線段、折線或者封閉線。多條線在空間的集合依據(jù)一定的關(guān)系,由Index(索引)定義出來(lái)。節(jié)點(diǎn)IndexedLineSet用來(lái)構(gòu)建各種線造型。IndexedLineSet節(jié)點(diǎn)是geometry域的值,共有5個(gè)域,以及兩個(gè)描述事件的接口。(1)使用語(yǔ)法IndexedLineSet coord NULL # SFNodecoordIndex # MFInt32color NULL # SFNodecolorPerVertex TRUE # SFBoolcolorIndex # MFInt32(2)域值說(shuō)明coord:用來(lái)提供空間線段的頂點(diǎn)的點(diǎn)坐標(biāo)。其域值是Coordinate節(jié)點(diǎn),Coordin
49、ate節(jié)點(diǎn)的域point給出這些點(diǎn)坐標(biāo)的列表。這些點(diǎn)的列表按照先后順序從0開(kāi)始為每一個(gè)點(diǎn)分配一個(gè)索引值,后面的域coordIndex引用的時(shí)候直接針對(duì)索引值。coordIndex:指向Coordinate節(jié)點(diǎn)的索引列表,指明哪些頂點(diǎn)相連和以什么順序相連。color:域值是Color節(jié)點(diǎn),Color節(jié)點(diǎn)的域值也是color,它列出了用于作為每個(gè)線段的頂點(diǎn)的坐標(biāo)點(diǎn)著色的一個(gè)顏色列表。這些顏色值也同coord情況一樣按照先后順序從0開(kāi)始分配一個(gè)索引,以后按照索引引用相應(yīng)的顏色。colorPerVertex:如果在color域有一個(gè)Color節(jié)點(diǎn)給出了顏色列表,則這個(gè)域的域值指明是把對(duì)應(yīng)的顏色賦給每個(gè)
50、頂點(diǎn),還是賦給每條折線。域值設(shè)置為TRUE則表示為線段的頂點(diǎn)著色;如果域值設(shè)置為FALSE則表示為線段著色,默認(rèn)設(shè)置為TRUE。colorIndex:對(duì)應(yīng)Color節(jié)點(diǎn)的color域值的索引列表。按照這里給出的順序?yàn)榫€段的頂點(diǎn)著色或者線段著色。如果是給頂點(diǎn)著色,在兩個(gè)頂點(diǎn)之間的線段的顏色是頂點(diǎn)顏色的過(guò)渡色。例8-16#VRML V2.0 utf8Shape appearance Appearance geometry IndexedLineSet coord Coordinate point -1 0 1 #index=0 1 0 1 #index=1 1 0 -1 #index=2 -1 0
51、 -1 #index=3 -1 2 0 #index=4 1 2 0 #index=5coordIndex 0,1,2,3,0,-1 1,2,5,1,-1 0,3,4,0,-1 0,1,5,4,0,-1 2,3,4,5,2,-1color Color color 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0例8-16運(yùn)行效果如圖8.16所示,創(chuàng)建了一個(gè)五面體,因?yàn)閏olorPerVertex默認(rèn)設(shè)置為TRUE,這時(shí)給線段的頂點(diǎn)著色,頂點(diǎn)之間,顏色是慢慢的過(guò)渡過(guò)去的。圖8.17 為例8.16 建模示意圖,表8-3、表8-4為坐標(biāo)值索引。 . 圖8.16 例8-16運(yùn)行結(jié)
52、果 圖8.17 例8-16建模示意圖表8-3 例8-16坐標(biāo)值和索引coordIndexCoordinatecoordIndexCoordinate01.0 0.0 1.031.0 0.0 1.011.0 0.0 1.041.0 2.0 0.021.0 0.0 1.051.0 2.0 0.0表8-4 按索引構(gòu)建封閉線框封 閉 線索引順序封 閉 線索引順序底面線框0,1,2,3,0正z區(qū)域四邊形線框0,1,5,4,0正x區(qū)域三角形線框1,2,5,1負(fù)z區(qū)域四邊形線框2,3,4,5,2負(fù)x區(qū)域三角形線框0,3,4,0一個(gè)IndexedLineSet節(jié)點(diǎn)代表一個(gè)由一組指定頂點(diǎn)構(gòu)建的一系列線段而形成的3D形體。在coordIndex域的索引值指明如何連結(jié)各個(gè)頂點(diǎn)以形成線段。索引值為1時(shí),表明當(dāng)前連接的線段已經(jīng)結(jié)束,下一個(gè)線段將開(kāi)始。在coordIndex域值中,前面的一個(gè)永遠(yuǎn)是后面一個(gè)的起始點(diǎn)。然后
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度山林生態(tài)修復(fù)與治理承包合同4篇
- 2025版幼兒托管班多元化服務(wù)與創(chuàng)新發(fā)展合同3篇
- 2025年度企業(yè)合同管理與風(fēng)險(xiǎn)防控法律服務(wù)合同4篇
- 二零二四年度新能源電站工程設(shè)計(jì)合同3篇
- 2025版新能源汽車推廣應(yīng)用合同范本2篇
- 二零二五年度城市綜合體幕墻施工分包合同4篇
- 藥品銷售合同書
- 二零二四年度新型砌墻材料研發(fā)與生產(chǎn)合同樣本3篇
- 2025年度成都二手房買賣合同解除條件及處理合同4篇
- 2025年度油氣資源勘探鉆井作業(yè)合同范本3篇
- 餐廚垃圾收運(yùn)安全操作規(guī)范
- 皮膚內(nèi)科過(guò)敏反應(yīng)病例分析
- 電影《獅子王》的視聽(tīng)語(yǔ)言解析
- 妊娠合并低鉀血癥護(hù)理查房
- 煤礦反三違培訓(xùn)課件
- 向流程設(shè)計(jì)要效率
- 2024年中國(guó)航空發(fā)動(dòng)機(jī)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 當(dāng)代中外公司治理典型案例剖析(中科院研究生課件)
- 動(dòng)力管道設(shè)計(jì)手冊(cè)-第2版
- 2022年重慶市中考物理試卷A卷(附答案)
- Python繪圖庫(kù)Turtle詳解(含豐富示例)
評(píng)論
0/150
提交評(píng)論