版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一一VRML是什么是什么 二二VRML的歷史的歷史 三三VRML設計理念設計理念 四四VRML語言概念語言概念 五五VRML文件處理過程文件處理過程 六六VRML的應用軟件的應用軟件 七七VRML的解決問題的解決問題 八八VRML的未來的未來 九九VRML使用使用例子例子 3.共享虛擬世界 : VRML最早的動機之一就是能 夠在一個虛擬空間中工作和交談,這個空間就 是虛擬世界(Cyberspace)。通過VRML 97, 已經可以部分地實現這一構想。 4.基于Internet : 與以往的3D應用不同,VRML規(guī) 范考慮的第一件事就是通過Internet共享3D實體 和場景。實際上,VRML規(guī)
2、范本身就是通過 Internet探討、研究和發(fā)布的。 日 期主 要 內 容 1994 5月第1次 Web會議 開始使用VRML用語 6月開始VRML Mailing List Mark Pesce 等 10月 第2次 Web會議 發(fā)布VRML草案 11月 發(fā)布VRML 1.0草案 1995 4月發(fā)布VRML瀏覽器 WebSpace TGS,SGI 5月發(fā)布VRML 1.0規(guī)約 8月第1次 VRML Architecture Group 會議 12月 發(fā)布VRML 1.1規(guī)約 日 期主 要 內 容 1996 4月Moving World 提案 VRML 2.0規(guī)約 8月發(fā)布VRML 2.0規(guī)約
3、12月 組成VRML協會(參與35個公司),跟 VAG統(tǒng)合 199712月 VRML 2.0規(guī)約代替于國際標準VRML97 199812月 VRML協會改稱于Web3D協會 1999 2月VRML的開發(fā)版本命名于X3D 11月 發(fā)布VRML200 x-X3D 草案規(guī)約 1.平臺獨立性 (Platform Independence) 2.擴充性 (Extensibility) 3.能運作于低頻寬的網絡上(Ability to work well over low bandwidth connections) 同時,VRML在制定上與HTML有所區(qū)別, 不被視為HTML的延伸,因為兩者不論在 資料
4、形式或網絡需求上都有所不同。規(guī) 格制定時避免了將VRML視為HTML的延 伸,以免限制了VRML未來的發(fā)展 。 1.坐標系統(tǒng)坐標系統(tǒng) :VRML采用的是卡氏右手立 體坐標系統(tǒng)(Cartesian Right-Handed dimensional System),測量長度和距離的 基本單位是公尺,而測量角度的基本單 位是弧度。 2.節(jié)點節(jié)點(Nodes) : VRML以節(jié)點為基礎,每個節(jié) 點都具有以下四項特性 。 a) 節(jié)點種類 : 如Box、Cone、Cylinder 等一 共有60種節(jié)點 。 b) 域(Fields) : 節(jié)點可以有零或多個域值。 c) 節(jié)點名稱 : VRML中的節(jié)點不一定要
5、指定 名稱但若指定名稱則必須唯一。 d) 子節(jié)點 : 節(jié)點與節(jié)點之間可以有階層式的 從屬關系。具有子節(jié)點的節(jié)點稱為父 節(jié)點;父節(jié)點可以有零或多個子節(jié)點。 3.節(jié)點的分類節(jié)點的分類 a)形狀節(jié)點形狀節(jié)點 (Shape Nodes) : 指的是幾何特 性,如圓錐體、立方體、球體等;包含 顯示ASCII字串的節(jié)點。 b)屬性節(jié)點屬性節(jié)點 (Property nodes) : 屬性節(jié)點會 影響節(jié)點呈現的方式,又細分為幾何屬 性與外觀/矩陣及轉換/攝影機/光源四類。 c)群節(jié)點群節(jié)點 (Group Nodes) : 集合其他節(jié)點, 以單一節(jié)點的形式呈現。 4.域域 (Fields) 所含域的數目分為兩類
6、 : 只含單一的單值 與含多個值的多值,分別以“SF” 與 “MF”為名稱的開頭。 SF開頭的數值只是 一個單一的數或數組,而MF開頭的是一個 數或數組的列表。各有11個和7個種類。 例)SFBool : 開關值 SFFloat/MFFloat : 浮點值 SFString/MFString : 字符串 1。VRML瀏覽器的處理模型瀏覽器的處理模型 2。用。用VRML瀏覽器要求瀏覽器要求VRML文件的過程文件的過程 3。用。用VRML瀏覽器接受瀏覽器接受VRML文件的過程文件的過程 P 1. VRML 瀏覽器瀏覽器 目前共有四家公司開發(fā)出支援VRML 2.0的 工具,分別是 : 1)Cosmo
7、 Software 的 Cosmo Player。 2)InterVista Software Inc. WorldView。 3)Paper Inc. 的 WebFx -后來被 Netscape 公司合并以后改稱Live3D。 4)Temlplate Graphics Software Inc.的 WebSpace 2. VRML 編輯器編輯器 目前有較多的編輯器,其中下面的四個 編輯器使用率比較高 : 1)Cosmo Software 的 Cosmo World。 2)ParallelGraphics 的 Internet Space Builder (ISB)。 3)Superscape
8、 的 3D Webmaster。 4)Ligos的 V-Realm Builder(VRB)。 1.首先是VRML的文件格式。目前VRML采用 的是文本格式,文件都很大,而且在很多時 候包含大量的空余空間和無用信息。解決辦 法是為VRML文件定義一種二進制文件格式。 這將提供幾個優(yōu)點: l減少文件長度 : 一個好的壓縮軟件能把VRML 壓縮到原來的40%。 l一定的保密性 : 由于每個人都可以看到文本文 件的內容,當采用二進制文件格式時,別人 在沒有得到允許的情況下不能拷貝VRML場 景內容的。 2.第二個問題是要解決編碼時的便利性。用已 存在的編輯器作出較簡單的物體時比較容易, 但要做比較復
9、雜的形狀的物體時不容易。有 這樣的情況時,一般先用3DMax等軟件做 完以后,轉換成VRML文件。 l減少調用時間 : VRML在第一次加載瀏覽器時 必須被解釋以使瀏覽器能夠構造一個內部場 景結構。二進制文件更容易被高效解釋,因 為它包含瀏覽器構造內部結構的最基本的數 據。 lVRML繼續(xù)發(fā)展:增加新的節(jié)點與功能,如用于 數字化地球的GeoVRML,分布式計算的DIS等。 lX3D : 基于XML的VRMLNG,已有提案與演示。 lMPEG4 : 用于數字化影視的新技術,基于VRML。 lVRML2002 : X3D與VRML溶合的產物,并希望 在2002年通過ISO認證。 1. 基本造型的例
10、子 (1.25k,92行) 2. 加動作的例子 (9.40k,369行) 3. 加觸點的列子 (3.39k,81行) 4. 換視點的例子 (13.6k,742行) 5. 一間屋子 (376k,13891行) 6. 茶葉博物館(515k,19508行) lVRML文件包括:文件包括: - 文件頭文件頭 /描述版本和編碼集描述版本和編碼集 - 注釋注釋 - 節(jié)點(節(jié)點(Nodes)/描述場景內容描述場景內容 - 域域 (Fields)/ 節(jié)點的屬性節(jié)點的屬性 - 值值 (Values)/屬性值屬性值 - 等等等等. . . l其中每一部分其中每一部分均區(qū)分大小寫。均區(qū)分大小寫。 #VRML V2.
11、0 utf8 # A Cylinder Shape appearance Appearance material Material geometry Cylinder height 2.0 radius 1.5 l幾何形狀的建立幾何形狀的建立 l顏色、紋理、光源及環(huán)境顏色、紋理、光源及環(huán)境 l視點、導航及用戶感知視點、導航及用戶感知 l動畫動畫 l聲音聲音 l程序腳本程序腳本 l基本體素的建立基本體素的建立 - Shape節(jié)點節(jié)點 - 形狀幾何由形狀幾何由幾何節(jié)點描述,如幾何節(jié)點描述,如Box, Cone, Cylinder等。等。 l復雜形狀的建立復雜形狀的建立 - 動物、植物、地表、機械零
12、件,等等動物、植物、地表、機械零件,等等. - 可借助點、線、面來構建可借助點、線、面來構建 - 對于地表等,甚至有特定的節(jié)點描述,如對于地表等,甚至有特定的節(jié)點描述,如 ElevationGrid節(jié)點節(jié)點 lPointSet Shape appearance Appearance . . . geometry PointSet coord Coordinate point . . . lIndexedLineSet Shape appearance Appearance . . . geometry IndexedLineSet coord Coordinate point . . . co
13、ordIndex . . . lIndexedFaceSet Shape appearance Appearance . . . geometry IndexedFaceSet coord Coordinate . . . coordIndex . . . solid TRUE ccw TRUE convex TRUE lElevationGrid Shape appearance Appearance . . . geometry ElevationGrid xDimension 3 zDimension 2 xSpacing 1.0 zSpacing 1.0 height . . . lE
14、xtrusion - 條形、管形、環(huán)形條形、管形、環(huán)形 - 可由可由 Extrusion Extrusion 節(jié)點建立節(jié)點建立 l語法語法 Shape appearance Appearance . . . geometry Extrusion crossSection . . . spine . . . endCap TRUE beginCap TRUE solid TRUE ccw TRUE convex TRUE scale . . . orientation . . . l將簡單形狀組合為復雜形狀將簡單形狀組合為復雜形狀 l組合節(jié)點:組合節(jié)點: - Group . . . - Swit
15、ch . . . - Transform . . . - Billboard . . . - Anchor . . . - Inline . . . #VRML V2.0 utf8 # A Cylinder Shape appearance Appearance material Material geometry Cylinder height 2.0 radius 1.5 lAppearance 節(jié)點描述外觀節(jié)點描述外觀 - 可通過可通過Material 節(jié)點控制材料屬性,如顏節(jié)點控制材料屬性,如顏 色、高色、高 光、透明度等。光、透明度等。 - 可通過可通過紋理映射為表面增添細節(jié)。紋理映
16、射為表面增添細節(jié)。 ImageTexture, PixelTexture, MovieTexture lMaterial節(jié)點示例節(jié)點示例 Shape appearance Appearance material Material diffuseColor 0.8 0.8 0.8 emissiveColor 0.1 0.1 0.1 transparency 0.0 specularColor 0.71 0.70 0.56 shininess 0.16 ambientIntensity 0.4 geometry . . . lImageTexture節(jié)點示例節(jié)點示例 Shape appearanc
17、e Appearance material Material texture ImageTexture url wood.jpg geometry . . . lImageTexture節(jié)點示例節(jié)點示例 Shape appearance Appearance material Material texture PixelTexture image 2 1 3 /width, height, bytes 0 xFFFF00 0 xFF0000 /pixel, pixel values geometry . . . lMovieTexture節(jié)點示例節(jié)點示例 Shape appearance Ap
18、pearance material Material texture MovieTexture url movie.mpg loop TRUE speed 1.0 startTime 0.0 stopTime 0.0 geometry . . . l紋理圖象在紋理坐標系中表示,可紋理圖象在紋理坐標系中表示,可 用用 texCoordIndex綁定到表面上。綁定到表面上。 Shape appearance Appearance . . . geometry IndexedFaceSet coord Coordinate . . . coordIndex . . . texCoord Textur
19、eCoordinate . . . texCoordIndex . . . l紋理變換可以改變紋理在表面上的紋理變換可以改變紋理在表面上的 位置、方向及大小位置、方向及大小 Shape appearance Appearance material Material . . . texture ImageTexture . . . textureTransform TextureTransform translation 0.0 0.0 rotation 0.0 scale 3.0 3.0 l缺省狀態(tài)下,有一個光源(在觀察缺省狀態(tài)下,有一個光源(在觀察 者頭部的位置)。者頭部的位置)。為達到更好
20、的視為達到更好的視 覺效果,可加入多個光源。覺效果,可加入多個光源。 l光源類型:光源類型: point, directional, spot - 共同屬性:共同屬性:開開/關關, 強度強度, 顏色顏色 - Point and spot lights:位置:位置,半徑半徑, 衰減衰減 - Directional and spot lights:方向:方向 l光源不能投射陰影光源不能投射陰影。 l背景的作用:豐富場景背景的作用:豐富場景 l背景包括:背景包括: - 天空與地面天空與地面 - 全景包圍盒全景包圍盒 l利用背景的好處:與使用模型相比,利用背景的好處:與使用模型相比, 生成速度快生成速
21、度快 l背景背景示例示例 Background skyColor 0.0 0.2 0.7, 0.0 0.5 1.0, 1.0 1.0 1.0 skyAngle 1.309, 1.571 groundColor 0.1 0.10 0.0, 0.4 0.25 0.2, 0.6 0.60 0.6, groundAngle 1.309, 1.571 frontUrl mountns.png backUrl mountns.png leftUrl mountns.png rightUrl mountns.png” # no top or bottom images l霧的作用:霧的作用: - 增強真實感
22、增強真實感 - 減少開發(fā)時間和繪制時間(遮擋用戶視線)減少開發(fā)時間和繪制時間(遮擋用戶視線) l霧有顏色、類型和可視范圍霧有顏色、類型和可視范圍 l示例代碼示例代碼 Fog color 1.0 1.0 1.0 fogType LINEAR visibilityRange 10.0 l霧效果示例霧效果示例 l視點(視點(viewpoint節(jié)點節(jié)點)包括:包括: - position,orientation,fieldOfView l缺省視點位置:缺省視點位置: (0.0, 0.0, 10.0) l視點可改變視點可改變 l文件中的第一個文件中的第一個viewpoint即是即是entry point
23、. l示例代碼示例代碼 Viewpoint position 0.0 0.0 10.0 orientation 0.0 0.0 1.0 0.0 fieldOfView 0.785 description Entry View” / description for viewpoint menu l不同的場景需要不同的導航方式不同的場景需要不同的導航方式 - 室內、地形、室內、地形、CAD模型模型, . l用戶可指定導航方式:用戶可指定導航方式:walk, fly, examine, none, any l用戶可描述觀察者的大小及運動速度用戶可描述觀察者的大小及運動速度 l示例代碼示例代碼 Nav
24、igationInfo type WALK, ANY avatarSize 0.25, 1.6, 0.75 speed 1.0 headlight TRUE l用戶感知是通過三個傳感器用戶感知是通過三個傳感器 (Sensor)節(jié)點節(jié)點來實現的:來實現的: - VisibilitySensor :觀察者能否看到某一區(qū)域:觀察者能否看到某一區(qū)域 - ProximitySensor: 觀察者是否在某一區(qū)域內觀察者是否在某一區(qū)域內 - Collision: 觀察者是否與物體碰撞觀察者是否與物體碰撞 l主要作用:觸發(fā)動畫主要作用:觸發(fā)動畫 l特點:隨時間改變特點:隨時間改變 - 位置、方向、顏色等位置、
25、方向、顏色等 - VRML中:不斷改變節(jié)點的某個域的值中:不斷改變節(jié)點的某個域的值 l兩個基本的控制條件:兩個基本的控制條件: - 何時開始、何時結束何時開始、何時結束 - 變化速度變化速度 lVRML是一種解釋性語言,它既無是一種解釋性語言,它既無 局部變量也無全局變量用于在局部變量也無全局變量用于在 VRML的世界間傳遞信息。的世界間傳遞信息。 lVRML采用事件采用事件(Events)作為兩個作為兩個 不同節(jié)點間傳輸數據的方式。不同節(jié)點間傳輸數據的方式。 lVRML的節(jié)點中,有的能生成事件的節(jié)點中,有的能生成事件 (eventOut),有的可接收事件),有的可接收事件 (eventIn)
26、,有的既能生成也能接收,有的既能生成也能接收 (exposedField)。 l第一個事件一般由外部影響觸發(fā)。第一個事件一般由外部影響觸發(fā)。 外部影響的形式不一(如時間、用外部影響的形式不一(如時間、用 戶在物體上點擊等)。而一旦初始戶在物體上點擊等)。而一旦初始 事件產生后,它將觸發(fā)其他事件,事件產生后,它將觸發(fā)其他事件, 產生多米諾效應。產生多米諾效應。 l要設置動畫,我們需要:要設置動畫,我們需要: - 發(fā)送事件的節(jié)點發(fā)送事件的節(jié)點 - 接收事件的節(jié)點接收事件的節(jié)點 - 連接上述兩個節(jié)點的路由(連接上述兩個節(jié)點的路由(route) l輸出示例輸出示例 - OrientationInter
27、polator 節(jié)點的節(jié)點的 eventOut: - value_changed 輸出旋轉參數值輸出旋轉參數值 - PositionInterpolator節(jié)點的節(jié)點的 eventOut: - value_changed輸出位置輸出位置 (平移平移)參數參數 值值 - TimeSensor節(jié)點的節(jié)點的eventOut: - time 輸出時間值輸出時間值 l輸入示例輸入示例 - Transform 節(jié)點的節(jié)點的 eventIn: - set_translation - set_rotation - set_scale - Material 節(jié)點的節(jié)點的 eventIn: - set_diffu
28、seColor - set_emissiveColor - set_transparency l路由路由(ROUTE)將兩個節(jié)點連接起將兩個節(jié)點連接起 來:來: - 輸出節(jié)點的名稱和輸出節(jié)點的名稱和eventOut域的名稱域的名稱 - 輸入節(jié)點的名稱和輸入節(jié)點的名稱和eventIn域的名稱域的名稱 l示例示例 - ROUTE MySender.rotation_changed TO MyReceiver.set_rotation lROUTE 和和TO 必須大寫必須大寫 lDemo l聲音將使得虛擬世界更加精彩聲音將使得虛擬世界更加精彩 - 聲音可由觀察者觸發(fā),如按門鈴聲音可由觀察者觸發(fā),如按
29、門鈴 - 聲音也可以是連續(xù)的背景音樂聲音也可以是連續(xù)的背景音樂 l聲音有兩個組成部分:聲音有兩個組成部分: - 聲源:聲源:提供聲音信號,由提供聲音信號,由AudioClip節(jié)點指定節(jié)點指定 - 發(fā)射器發(fā)射器(emitter): 將信號轉換成虛擬聲音,主要設置將信號轉換成虛擬聲音,主要設置 一些與聲音位置等有關的參數,在一些與聲音位置等有關的參數,在Sound 節(jié)點中指節(jié)點中指 定定 lSound節(jié)點示例節(jié)點示例 Sound source AudioClip url myfile.wav pitch 1.0 startTime 0.0 stopTime 0.0 loop FALSE locat
30、ion 0.0 0.0 0.0 direction 0.0 0.0 1.0 intensity 1.0 spatialize TRUE priority 0.0 minFront 1.0 minBack 1.0 maxFront 10.0 maxBack 10.0 l聲音的觸發(fā)聲音的觸發(fā) Group children Shape . . . DEF C4 TouchSensor Sound source DEF PitchC4 AudioClip url tone1.wav pitch 1.0 maxFront 100.0 maxBack 100.0 ROUTE C4.touchTime TO
31、 PitchC4.set_startTime l真正意義上的交互和復雜的動畫是真正意義上的交互和復雜的動畫是 由程序腳本來實現的。由程序腳本來實現的。 l程序腳本的代碼可用程序腳本的代碼可用 JavaScript, Java, VRMLscript或其他語言來或其他語言來 寫寫 - JavaScript 易于學習易于學習 - Java功能更強功能更強 - VRMLscript=JavaScript l用戶能否與用戶能否與VRML世界進行流暢的世界進行流暢的 交互,至少取決與以下兩個因素:交互,至少取決與以下兩個因素: - 文件的下載速度:文件大小文件的下載速度:文件大小 - 繪制速度:場景描述
32、的復雜程度繪制速度:場景描述的復雜程度 l兩個問題:兩個問題: - 如何有效地減少文件大小?如何有效地減少文件大小? - 如何有效地描述場景?如何有效地描述場景? l減少文件大小減少文件大小 - 消除空白間隔消除空白間隔 - 浮點數取整浮點數取整 - 使用壓縮文件使用壓縮文件 - 盡可能使用基本體素盡可能使用基本體素 - 盡可能使用已有的法向量盡可能使用已有的法向量 - 對于反復使用的物體,可先對其命名對于反復使用的物體,可先對其命名(DEF), 然然 后再重復使用后再重復使用(USE)。 - . l有效地描述場景有效地描述場景 - 用盡可能少的多邊形描述物體用盡可能少的多邊形描述物體 - 在
33、可能的情況下,多利用紋理在可能的情況下,多利用紋理 - 合理地利用光源合理地利用光源 - 將將LOD節(jié)點和節(jié)點和Inline節(jié)點有機結合使用節(jié)點有機結合使用 - 依據物體的空間位置將其合理地放置在文件中依據物體的空間位置將其合理地放置在文件中 - 借助腳本隱藏多余的物體或動畫借助腳本隱藏多余的物體或動畫 - 有節(jié)制地使用碰撞檢測有節(jié)制地使用碰撞檢測 - . l一致、可預測的事件模型一致、可預測的事件模型 l更一般、一致的更一般、一致的SAISAI l支持鍵盤設備支持鍵盤設備 l支持高精度數據支持高精度數據 l支持支持NURBS NURBS 、支持曲面、支持曲面 l支持與支持與VRMLVRML內
34、嵌的內嵌的webweb頁面的通訊頁面的通訊 l. l采用采用XMLXML編碼編碼(X3D)(X3D)以與以與WebWeb緊密集緊密集 成成 l1999年上半年,年上半年,Web3D Consortium即發(fā)布新聞表達了建即發(fā)布新聞表達了建 立立 VRML200X -X3D(簡稱(簡稱X3D) 的意圖。的意圖。 l其目的是與其目的是與VRML2.0VRML2.0向下兼容,集向下兼容,集 成成XMLXML以提高其可擴充性以提高其可擴充性。 lXML(可擴展標記語言),描述了一類(可擴展標記語言),描述了一類 稱為稱為XML文件的數據對象,同時也部分文件的數據對象,同時也部分 地描述了處理這些數據對
35、象的計算機程地描述了處理這些數據對象的計算機程 序的動作。序的動作。 - XML是是SGML針對特定應用領域的一個子集,或者說是針對特定應用領域的一個子集,或者說是 SGML的一種受限形式。根據定義,的一種受限形式。根據定義,XML文件是合乎規(guī)文件是合乎規(guī) 范范 的的SGML文件。文件。 lXML的設計既考慮了實現的方便性,同的設計既考慮了實現的方便性,同 時也顧及了與時也顧及了與SGML和和HTML的互操作的互操作 性。性。 lW3C推薦將推薦將XML用于結構信息交換用于結構信息交換 (structured information exchange),目目 前已得到較為廣泛的應用。前已得到較
36、為廣泛的應用。 lXML設計目標設計目標 - XML應該可以直接用于因特網應該可以直接用于因特網(Internet)。 - XML應該支持大量不同的應用。應該支持大量不同的應用。 - XML應該與應該與SGML兼容。兼容。 - 處理處理XML文件的程序應該容易編寫。文件的程序應該容易編寫。 - XML中的可選項應無條件地保持最少,理想狀況下中的可選項應無條件地保持最少,理想狀況下 應該為應該為0個。個。 - XML文件應該是人可直接閱讀的,應是條理清楚的。文件應該是人可直接閱讀的,應是條理清楚的。 - XML的設計應快速完成。的設計應快速完成。 - XML的設計應該是形式化的,簡潔的。的設計應
37、該是形式化的,簡潔的。 - XML文件應易于創(chuàng)建。文件應易于創(chuàng)建。 - XML標記的簡潔性是最后考慮的目標。標記的簡潔性是最后考慮的目標。 l采用采用XML編碼使得編碼使得VRML有一個有一個 堅實的基礎。其優(yōu)點主要有堅實的基礎。其優(yōu)點主要有: - 堅實的國際化基礎堅實的國際化基礎 (sound basis for internationalization) - 強有力的結構化能力強有力的結構化能力(structuring capability) - 基于基于XML的語法對于實現而言是開放的的語法對于實現而言是開放的(open to implementation) 該如何瀏覽VRML呢?首先當
38、然必須擁有可 以上網的電腦,並且有安裝Microsoft的 Internet Explorer瀏覽器或網景的Netscape瀏 覽器,還要再安裝一個可以讓瀏覽器具備 瀏覽VRML功能的外掛程式(plug-in)。如此 就可以透過一般的瀏覽器來瀏覽VRML所建 立的虛擬實境。(以上所述是在PC作業(yè)平臺 和MS Windows作業(yè)系統(tǒng)的架構上,當然也 可以使用其它的作業(yè)平臺和作業(yè)系統(tǒng))。 下表列出了目前常見的VRML瀏覽外掛程式 的名稱、可瀏覽之3D語言和作業(yè)系統(tǒng)與平 臺: 我們來安裝一個外掛程式的實例: 產品名稱:Cortona 發(fā)展公司:ParallelGraphics 作業(yè)系統(tǒng):Window
39、s98 程式來源:網路下載、光碟片 1.網路下載: 網址:http:/ 第一步:先透過WWW瀏覽器連到上述網址。 第二步:連上這個網頁後,點選download這個項 目。 第三步:在Cortona VRML Client個標題下,點選 或 去下載外掛程式 cortvrml.exe。點選確定後,再選擇儲存位置, 就完成下載動作。 2.開始安裝: 第一步:找到之前下載的cortvrml.exe位置 或從本書所附之光碟片尋找此檔。 第二步:點選此檔後開始安裝,只需要選 擇accept接受合約後,繼續(xù)選擇next。 第三步:選擇Typical或Custom的安裝方式, 建議選擇Typical,接著按下
40、next。 第四部:選擇DirectX renderer,再按下 next,接著選擇Finish則安裝完成。 3.安裝是否成功: 第一步:選擇“開始”“程式 集”ParallelGraphics“Cortona VRML ClientView scene of the day。 第二步:這樣一個VRML瀏覽器,如果有 個虛擬物件在畫面中,如此就表示安裝 成功。 Cortona VRML瀏覽器的控制功能,左 側和下側各有一工具列。 左側工具列:左側工具列共有兩組按 鈕,一組為WALK、FLY、STUDY, 另一組為PLAN、PAN、TURN、 ROLL,這兩組只能各選取一個按鈕, 絀合的功能如下
41、: 按鈕被點選後即會發(fā)亮,選定方法之後使 用滑鼠的左鍵做拖曳的動作,拖曳的越遠 則轉動或移動的速度越快。 因為VRML的檔案格式是一般文字檔,所以 基本上使用任何的純文字編輯器,都可以 編輯VRML的檔案。在這一節(jié)中,介紹筆者 所習慣使用的VRML編輯器,叫做 VrmlPad它是由ParallelGraphics這家公 司發(fā)行的,而這家公司也就是2-1節(jié)中所介 紹的VRML外掛程式Cortona是同一家。所 以檔案下載的方式和之前相同,也附在本 書的光碟片中。 VrmlPad目前的版本是2.0版,下載的程式和 光碟中所附的程式都是試用版。圖2-6是這 個VrmlPad的編輯畫面。 左半部的視窗
42、是Scene Tree,可以看出這個 檔案使用了哪些節(jié)點(Node),含其包含的子 節(jié)點(Child Node);也可以換成Resources和 File List等子視窗。右半部的視窗就是 VRML檔案的程式碼。每當你在右邊的視窗 鍵入一個新的節(jié)點(Node),左半部的視窗 Scene Tree就會出先一個相同的節(jié)點(Node) 圖示。 在這個編輯器中,檔案第一行#VRML V2.0 utf8會自動地寫上。另外它還有一項強大 的功能:就是程式編寫輔助視窗。例如:當你 要輸入Shape這個節(jié)點時,只輸入S時,程 式編寫輔助視窗會自動出現,列出所有S開 頭的節(jié)點讓你選擇。如此可以節(jié)省撰寫程 式時
43、間,也可以降低指令被撰寫錯誤的機 率。所以筆者建議,剛入門的讀者使用 VrmlPad來撰寫VRML的程式。 VRML的檔案就和大部分程式語言的 檔案相同,是個文字敘述(textual description)的檔案。所以可以使用任 何的文字編輯器來撰寫VRML,只要 存檔時,存成file.wrl即可。而.wrl通 常讀成dot world,由副檔名可以感 受到VRML的目的就是去建造一個世 界(world)。 圖3-1 這個範例是一個很典型的VRML程式, 包含檔案標頭、註解、節(jié)點、欄位等, 透過瀏覽器我們將可以看見程式執(zhí)行 的結果如圖3-1。將在下列各節(jié)對這些 構成VRML檔案的基本項目做更
44、詳細 的說明與介紹。 範例3-1的第一行 #VRMLV2.0utf8 這就是VRML的檔案標頭,在任何VRML程 式的第一行一定要寫上這個標頭。 VRML的檔案標頭對這個檔案有以下的描述: 它是個VRML的檔案。 它是使用VRML2.0版的規(guī)格來完成。 檔案是使用國際UTF-8的字元集合。 在很多語言中,UTF-8字元集合是一 個標準的字元集合,包含英文。它使 得VRML能夠支援英文字元,例如:A 到Z。只要是能在鍵盤上找到的字元, UTF-8字元集合都包含在內,所以能 鍵入任何ASCII碼在一個UTF-8的 VRML檔案中。 UTF的是UCS Transform Format的所寫, 而UC
45、S是Universal Multiple-Octet Coded Character Set。UTF8是由ISO ( International Organization for Standards)的規(guī)範ISO/IEC 10646- 1:1993)所提出。 我們看到範例3-1的第二行 #Drawthecolumn 這是一個VRML的檔案註解,註明了這個程式的目 的是“畫柱子”。相信有寫過程式的人都應該知道 註解的目的: 它可以幫助程式設計師紀錄本段程式的意義,以便日後修 正。 它可以幫助程式設計師除錯(debug)時,先將部分程式轉成 註解。 它可以幫助非此程式設計者閱讀此程式時,了解程式的
46、目 的。 在VRML的程式中,註解的使用方式就是在每行程 式的開頭加上#,#之後該行的文字便失去了程 式執(zhí)行的功能,變成註解。 Node在本書中翻譯成節(jié)點。節(jié)點(Node)是 VRML檔案中最基本的單位,每個節(jié)點還包 含子節(jié)點(Child Node)和描述節(jié)點屬性的欄 位(Fields)。 以Shape節(jié)點為例,它是一個用來形容物件 幾何型狀(Geometry Node,例如:球體、長 方體、圓柱體)和外觀(Appearance Node,例 如:表面的顏色、透明度、光滑度)的節(jié)點。 由圖3-2可以清楚地看到Shape節(jié)點包 含了許多相關的節(jié)點(Node和欄位 (Field),所以Shape節(jié)
47、點是一個非常重 要的節(jié)點,將會在第四章和第五章裡 再詳細地說明。 以下是範例3-1中,所使用的一個節(jié)點。 geometry Cylinder radius 0.5 height 4.0 由以上可知一個節(jié)點通常包含: 1.節(jié)點的名稱(例如:Cylinder)。 2.一對大括號“。 3.欄位和欄位值(例如:radius 0.5) 所以在日後的各節(jié)中,將會介紹很多節(jié)點 (Node)的語法(Syntax),先看下面Cone節(jié)點 的語法: 其中欄位值,如:SFFloat、SFBoo1等的意義將在3-4 節(jié)中說明。 關於節(jié)點的分類方法,其實並沒有一定的 分類方式,但依照規(guī)範的節(jié)點種類,可以 分成群節(jié)點(G
48、rouping Nodes)和子節(jié)點(Child Nodes)。 群節(jié)點(Grouping Nodes)可以將其它的節(jié)點 放在這個群節(jié)點中。例如:在範例3-1中, Transform節(jié)點是一個群節(jié)點,它包含了 Shape這個子節(jié)點,Transform節(jié)點可以控制 在其節(jié)點內之子節(jié)點的位置、方位和尺寸, 從範例3-1中可以了解。 而子節(jié)點(Child Nodes)又該如何定義呢?所 有的節(jié)點都可以視為子節(jié)點,當然也包括 群節(jié)點。 哪些節(jié)點是群節(jié)點(Grouping Nodes)呢?其實 並不多只有八個,在第六章將會介紹所有 的群節(jié)點。由圖3-3可以看出哪些是群節(jié)點 (Grouping Nodes
49、)和不是群節(jié)點的子節(jié)點 (Child Nodes)。 本書各章的分類,是依照各節(jié)點的特徵性質來區(qū)分, 共分成八類,從第四章到第十一章,如表3-1所示。 在這一節(jié)中主要是介紹欄位的語法和欄位 值的型態(tài)。一個節(jié)點是由欄位和欄位值所 組成,它們是用來描述節(jié)點的屬性。 欄位可以分成兩類:一類是欄位只包含一個 單獨的值,開頭的名稱為SF (Single-value fields);另一類則是包含多重的值,開頭名稱 為MF (Multiple-valued fields)。 多重值的欄位值是有順序地寫在中括號 裡。假如欄位沒有任何值,只需列出中括 號;假如只有一個值就將中括號省略。 例如:有一個欄位值型態(tài)
50、為MFInt32的多重欄 位叫做foo,但它只含一個欄位值1,有以下 表示方式: foo 1 foo1, foo1 在範例3-1中,欄位和欄位值如下 geometry Cylinder radius 0.5 height 4.0 Cylinder節(jié)點的欄位有radius和height, 而欄位值(Field Value)0.5、4.0皆為浮 點數(Float),欄位值的型態(tài)為SFFloat。 在一個節(jié)點的標準語法(Syntax)中: 欄位值(Field Value) SFFloat和SFBool所代表的意 義是什麼呢?由以下的介紹,將可以對於各種不同 欄位值的型態(tài)更加了解。 它是一個布林值或邏
51、輯值。它的值不是 TRUE就是FALSE。常被使用去開啟或關閉 一個節(jié)點的性質特徵。例如:Cone這個節(jié)點 的side和bottom這兩個欄位,它們的欄位值 就是布林值,用來決定四週或底部是否顯 現。例如: fooBool FALSE fooBool是一個值為SFBool的欄位,它定義 的布林值為FALSE。一個值為SFBool的 eventOut事件,它的初始布林值為FALSE。 它總共包含三個浮點值,分別介於(0,1)之 間,各自所描述的長紅、綠、藍(R-G-B), 經由三個不同值的混合可以顯現出不同的 顏色。常被使用在描述一個幾何外型或光 線的顏色。例如:1.0 0.0 0.0是紅色;0
52、.75 0.75 0.75是灰色。下面有一個R-G-B三原色混何 參考表(表3-2)。 fooColor 1.0 0.0 0.0 , 0.0 1.0 0.0 , 0.0 0.0 1.0 fooColor是一個值為MFColor的欄位,它包 含三組主要的顏色,分別為紅、綠、藍。 一個值為SFColor的eventOut事件,它的初 始值為(0 0 0)。一個值為MFColor的 eventOut事件,它的初始值為空的中括號 。 基本上,所有的色彩皆由紅、綠、藍三種 顏色混合組成的,稱之為三原色。以下為 一個三原色混合的參考表: 值是浮點數。它可以是正值或負值,可以 有小數點,值分布在(-,+ )
53、,例如:88.75、 -333.111等。 , fooFloat 3.1415926 , 133.5e-5 , 0.00006 fooFloat是一個欄位值為MFFloat的欄位,它 包含三組浮點數值。若一個值為SFFloat的 eventOut事件,它的初始值為0.0。一個值 為MFFloat的eventOut事件,它的初始值為 空的中括號。 用來描述數位圖片的一列值??梢员硎疽?個物體外觀的表面紋路顏色。 fooImage 其中 為 整數值;是用十六進位法 (hexadecimal)表示。例如: fooImage 1 2 1 0 xFF 0 x00 fooImage是一個值為SFImage
54、的欄位。 它定義了一個1個圖素(pixel)寬和2個 圖素(Pixels)高的圖片,只含一個元件 圖片,底部的圖素是白(0 xFF),頂部 的圖素是黑(0 x00)。一個值為SFImage 的eventOut事件,它的初始值為(0 0 0)。 值是32bit的整數值。它可以是正值或負值, 不可以有小數點,例如:123、-963等。值為 SFInt32和MFInt32的欄位和事件,其值可以 用十進位或十六進位的格式來表示。例如: fooIt32 17 , -0 xE20 , -518820 fooInt32是一個值為MFInt32的欄位,它包 含了三組整數值(十進位或十六進位)。值為 SFInt
55、32的eventOut事件,它的初始值是0。 值為MFInt32的eventOut事件,它的初始值 是空的中括號。 值為SFNode的欄位就是一個VRML的節(jié)點。值 為MFNode的欄位可以是零或多個節(jié)點。例如: fooNode Transform transltin 1 0 0 DEF CUBE BOX USE CUBE USE SOME_OTHER_NODE fooNode是一個值為MFNode的欄位,它定義了 四組節(jié)點。若一個值為SFNode的eventOut事件, 它的初始值為NULL。一個值為MFNode的 eventOut事件,它的初始值是空的中括號。 它是由四個浮點值構成的欄位值
56、。前三個值定 義出旋轉軸,根據右手定則(圖3-4);最後一個 值定義出旋轉角度,單位以弧度(radian)表示。 通常被使用在定義一個物體的方位。例如: fooRotation 0.0 1.0 0.0 3.14159265 fooRotation是個值為SFRotation的欄位,它表 示對y軸旋轉(180度)的意思。若一個值為 SFRotation的eventOut事件,它的初始值為(0 1 0)。一個值為MFRotation的eventOut事件,它 的初始值是空的中括號。 它的一個欄位值是由在一對雙引號中的字元所 構成(string)。它通常被用來表示一些選項的 名字或描述事物。例如:
57、fooStringOne, Two, Three,She is a cute girl fooString是一個值為MFString的欄位,它包含 了兩組字串。若一個值為SFString的eventOut 事件,它的初始值為空的雙引號“”。一個值 為MFString的eventOut事件,它的初始值是空 的中括號。 它是一個浮點值。時間值是使用真實世界中的 絕對時間,單位是用秒來表示,從某一個特別 的時間(西元1970年,1月1日。子夜00:00:00 GMT)開始計算。通常是被應用在動畫中,決 定何時開始或停止。例如: fooTime 0.0 fooTime是一個值為SFTime的欄位,表示
58、一個 0.0秒的時間。一個值為SFTime的eventOut事件, 它的初始值為-1。一個值為MFTime的eventOut 事件,它的初始值是空的中括號。 欄位值是一個二維的浮點數向量。由兩個浮點 數構成一組欄位值。通常被使用來表示一個2- D的位置。例如: fooVec2f91 44.91, 26 94 fooVec2f是一個值為MFVec2f的欄位,它包含 兩組向量。一個值為SFVec2f的eventOut事件, 它的初始值為(0 0)。一個值為MFVec2f的 eventOut事件,它的初始值是空的中括號。 欄位值是一個三維的浮點數向量。由三個浮點 數構成一組欄位值。通常被使用來表示一
59、個3- D的位置。例如: fooVec3f66 0.5 30 ,69 11 22 fooVec2f是一個值為MFVec2f的欄位,它包含 兩組向量。一個值為SFVec3f的eventOut事件, 它的初始值為(0 0 0)。一個值為MFVec3f的 eventOut事件,它的初始值是空的中括號。 將介紹如何定義一節(jié)點的名字。首先先來想想為什麼 會有這個功能呢? 最大的功能就是增加重用性。當我們建構一棟房子時, 房子一定會用到很多的柱、樑、窗戶和門等,可以發(fā) 現絕大多數的柱、樑、窗戶和門的尺寸或外觀是相同 的,只是位置不同,所以一開始要先定義一根標準 柱、一根標準樑、一個標準窗、一個標準門,把柱
60、、 樑、窗戶和門都視為單一的物件,而他們的屬性、尺 寸也都設定在其中。接下來在建構這房子時,只要用 組合的方式,將以上定義的各種物件放置於正確的位 置即可。圖3-6是一根標準柱,圖3-7是一個標準樑, 而圖3-8則是由標準柱和標準樑構成的樑柱結構系統(tǒng)。 圖3-6 標準柱 圖3-7 標準樑 DEF node-name node-type. 去定義一個節(jié)點來當作重用案例,要在節(jié)點之前,加 上“DEF”和所要定義的節(jié)點名稱“node-name”。在 VRML的檔案中,可以定義任意個節(jié)點名稱,但是不 能重複定義相同的名稱在同一個VRML的檔案中。 node-name可以是任何你覺得方便的字串名稱,有大
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市規(guī)劃臨時用地租賃協議2篇
- 2025年度智能車位共享平臺租賃合同模板4篇
- 二零二五年度內地居民離婚后財產分割法律援助合同
- 2025年度美容院美容院連鎖品牌形象設計與推廣合同
- 2025年度土地承包經營權租賃與農業(yè)機械化服務合同
- 二零二五年度噴漆工職業(yè)危害告知與培訓實施合同
- 2025年無子女離婚撫養(yǎng)權協議范本子女撫養(yǎng)費用明細12篇
- 二手車交易協議范本2024年度版版B版
- 二零二五年度變壓器租賃與電力系統(tǒng)優(yōu)化設計協議3篇
- 二零二五年度仿古茶具展覽展示與推廣服務合同3篇
- 廣西桂林市2023-2024學年高二上學期期末考試物理試卷
- 財務指標與財務管理
- 2023-2024學年西安市高二數學第一學期期末考試卷附答案解析
- 部編版二年級下冊道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉庫出庫作業(yè)優(yōu)化設計13000字(論文)】
- 保安春節(jié)安全生產培訓
- 初一語文上冊基礎知識訓練及答案(5篇)
- 勞務合同樣本下載
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評定第三方符合性標志的通用要求
- GB/T 13663.2-2018給水用聚乙烯(PE)管道系統(tǒng)第2部分:管材
評論
0/150
提交評論