虛擬現實vrml程序設計1-2-3章課件_第1頁
虛擬現實vrml程序設計1-2-3章課件_第2頁
虛擬現實vrml程序設計1-2-3章課件_第3頁
虛擬現實vrml程序設計1-2-3章課件_第4頁
虛擬現實vrml程序設計1-2-3章課件_第5頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

VRML程序設計VRML程序設計一、虛擬現實技術概述1.1虛擬現實概念特點系統基本構成關鍵技術應用1.2VRMLChapter1一、虛擬現實技術概述1.1虛擬現實Chapter11.1虛擬現實

虛擬現實的概念虛擬現實是利用計算機生成一個逼真的視覺、聽覺、觸覺以及嗅覺等的模擬環境(如飛機駕駛艙、分子結構世界等),通過多種傳感設備使用戶“投入”到該環境中,用戶可通過其感官與這一生成的虛擬實體進行交互溝通,如同與真實的環境直接進行自然交互的技術。這里所謂的“模擬環境”一般是指用計算機生成的有立體感的圖形,它可以是某一特定現實環境的表現,也可以是純粹構想的世界。虛擬現實技術實現的是人所感受到的虛擬幻境,所以錢學森建議把VirtualReality的技術叫做“靈境技術”,由它構成的信息處理環境稱作“靈境”。1.1虛擬現實

虛擬現實的概念虛擬現實的特點(3I特性)第一,虛擬現實技術是通過計算機生成一個非常逼真的實體,逼真要達到三維的視感,甚至還包括聽覺、觸覺和嗅覺等。這個逼真的實體足以成為“迷惑”人類視覺的虛幻的世界,這種“迷惑”是多方面的,不僅可以看到而且可以聽到、觸到以及嗅到這個虛擬世界中所發生的一切。這種感覺是如此的真實,以至于能全方位地浸沒在這個虛幻的世界中,這就是虛擬現實的第一個特征,即浸沒感(Immersion)或臨場參與感。虛擬現實的特點(3I特性)虛擬現實的特點第二,虛擬現實與通常CAD系統所產生的模型是不一樣的,它不是一個靜態的世界,而是一個動態的、開放的環境,它可以對使用者的輸入(如手勢,語言命令)作出響應。如拿起一個虛擬的火炬并打開其開關,推動操縱桿,就可以在虛擬環境中的漫游,甚至還可以用虛擬的手感觸到虛擬物體的存在。虛擬現實環境可以通過一些三維傳感設備來完成交互動作,這是虛擬現實技術的第二個特征,即交互性(Interaction)。虛擬現實的特點虛擬現實的特點第三,虛擬現實不僅僅是一個媒體,一個高級用戶界面,它還是為解決工程、醫學、軍事等方面的問題而由開發者設計出來的應用軟件,它以詳盡的形式反映了設計者的思想。如在蓋一座現代化的大廈之前,首先要做的事是對這座大廈的結構做細致的構思,為了使之定量化,還需設計許多圖紙。這些圖紙反映的是設計者的構思,虛擬現實同樣反映的是某個設計者的思想,只不過它的功能遠比那些呆板的圖紙生動、強大的多,所以國外有些學者稱虛擬現實為放大人們心靈的工具,或人工現實(artificalreality)。這是虛擬現實技術所具有的第三個特征,即思想性(Imagation)。虛擬現實的特點虛擬現實系統的基本構成虛擬現實系統的基本構成虛擬現實技術的關鍵技術(1)動態環境建模技術

(2)實時三維圖形生成技術

(3)立體顯示和傳感器技術

(4)應用系統開發工具

(5)系統集成技術

虛擬現實技術的關鍵技術虛擬現實技術的應用(1)醫學

(2)娛樂、藝術與教育

(3)軍事與航天工業

(4)管理工程

簡單場景示例如下:虛擬現實技術的應用1.2虛擬現實建模語言VRML

1.2虛擬現實建模語言VRML

VRML2.0標準被稱為第二代Web語言VRML2.0標準被稱為第二代Web語言VRML的特點(1)與其它Web技術語言相比,其語法簡單、易懂,編輯操作方便,學習相對容易。(2)VRML具有創建三維造型與場景,并可以實現很好的交互效果。而且可以嵌入Java、JavaScript等程序實現人機交互,從而極大的擴充其表現能力,形成更為逼真的虛擬環境。(3)具有強大的網絡功能,文件容量小,適宜網絡傳輸,并可方便地創建立體網頁與網站。(4)具有多媒體功能,在其程序中可方便地加入聲音、圖像、動畫等多媒體效果。(5)具有人工智能功能,在VRML中具有感知功能,可以利用各種傳感器節點來實現用戶與虛擬場景之間的智能交互。(6)在當前各種瀏覽器中還不能直接運行,必須安裝VRML相關插件才能看到其效果。

VRML的特點二、VRML的基本知識2.1VRML文件的編輯運行2.2一個VRML程序示例2.3VRML基本概念Chapter2二、VRML的基本知識2.1VRML文件的編輯運行Ch2.1VRML文件的編輯運行

VRML的編輯VRML是文本文件,它向VRML瀏覽器發出如何為虛擬空間創建3D造型的指令。使用VRML創建自己的虛擬空間,需要VRML瀏覽器(例如Windows中IE的組件VRML2.0)和某種字處理器(如記事本)就可以實現了。在字處理器鍵入VRML指令。然后,將文本文件存成*.wrl文件,最后將它裝入VRML瀏覽器,以3D形式查看。為了向空間添加更多東西,返回字處理器,鍵入其他VRML指令,保存文件,并將它重新讀回VRML瀏覽器。重復上述操作,逐漸創建自己的虛擬空間。編輯工具推薦VrmlPad2.1VRML文件的編輯運行

VRML的編輯VRML的運行運行環境要求較低,采用Pentium4以上的計算機,主頻2G以上、內存128M以上、顯存64M以上、硬盤10G以上即可常用的VRML文件瀏覽器有CortonaPlayer和CosmoPlayer,我們這里使用CortonaPlayerVRML的運行2.2VRML程序示例#VRMLV2.0utf8DEFqiutiTransform{#坐標變換節點Children[Shape{appearanceAppearance{ materialMaterial{ diffuseColor010 }}GeometrySphere{radius1.1}}]}DEFtimeTimeSensor{#時間傳感器節點 cycleInterval2.0 loopTRUE}DEFbianhua

PositionInterpolator{#位置插補節點 key[0.0,1.0] keyValue[00-10006]}ROUTEtime.fraction_changedTObianhua.set_fraction#路由ROUTEbianhua.value_changedTOqiuti.set_translation#路由2.2VRML程序示例注意事項:

vrml文件區分大小寫

vrml文件的語法結構。一個實用的vrml文件一般由文件頭,節點和路由組成

vrml文件實際上是眾多節點的組合。一個節點由節點名和一對花括號組成,花括號內可以有多條語句。路由語句根據需要可以有多個。一個最基本的vrml文件處必需的文件頭外,可以沒有路由語句,但至少應包含一個節點。文件頭中的utf8表示文件使用的UTF-8字符集。計算機中使用的ASCII字符集是UTF-8字符集的子集。注意事項:2.3VRML基本概念

文件頭 VRML文件中的第一行#VRMLV2.0utf8,這是VRML文件頭,任何VRML文件都必須有這樣的文件頭,并且必須放在第一行,它表述了以下三個含義:(1)#這個#不是注釋,而是VRML文件的一個部分;(2)VRML表示告訴瀏覽器,這是個vrml文件;(3)V2.0表示告訴瀏覽器,這個文件使用vrml2.0版的規范完成;(4)utf8表示文件是使用國際UTF-8的字符集。2.3VRML基本概念

文件頭域可理解為其他高級語言中的“變量”。分為兩種:普通域,公共域。如上例中radius是普通域,diffuseColor,cycleInterval,loop,key,keyValue為公共域,children也為公共域。VRML的空間坐標與計量單位在構建虛擬場景中,構成場景的造型有大小的差別,物體間有相對位置的不同,并且造型還會有旋轉、移動等運動。這就涉及到物體的空間坐標系、相應的長度、角度及顏色等。在VRML中,采用空間直角坐標系確定造型的位置,并且用特定的計量單位定量表示長度。

虛擬現實vrml程序設計1-2-3章1.VRML空間坐標系在VRML場景中,空間直角坐標滿足右手螺旋法則,就是說,右手四指從X方向轉到Y方向,則拇指的指向是Z方向。在默認情況下,X坐標向右為正;Y坐標向上為正;而Z坐標指向觀察者,如圖所示。1.VRML空間坐標系2.VRML長度單位長度及坐標的計量單位采用VRML單位計量,在三維空間中,它是統一的,簡稱為單位。需要注意的是,這里表示的單位和實際環境中的計量沒有任何可比性,和一些三維建模軟件如3DSMAX的計量單位也沒有可比性。在VRML場景中,只有物體間的大小和相對位置都用VRML單位計量,才能模擬出真實的現實。3.VRML角度單位在VRML中,使用的角度不是普通的角度,而是用弧度表示,這是瀏覽器接受的角度描述。當在VRML中使用角度單位中,要先將其換算成弧度后,再將其寫入到VRML源程序中。VRML中的360o角度等于2π弧度,由此,1弧度約等于57o。4.空間立體著色在VRML三維空間中,無論是背景、光線的顏色、物體,它們的顏色都是由紅、綠、藍(RGB)組合而成,它們分別對應3個浮點數,其域值為0.0-1.0之間,由這三原色組合成各種顏色。2.VRML長度單位節點和域節點是VRML文檔中最基本的組成單元,是VRML的精髓與核心。VRML借助于節點描述對象某一方面的特征,如各種形狀、材質以及顏色等等。VRML場景往往由一組具有一定層次結構的節點構造出來。每個節點包含有子節點和描述節點屬性的“域名”、“域值”。相當于其它高級語言中的變量、數組等,或是數據庫中的字段。節點和域一般節點語法定義如:Shape{#Shape模型節點appearanceAppearance{#定義造型外觀、顏色和表面紋理

materialMaterial{}#描述外觀材質屬性

} geometryCone{#指定造型外觀為圓錐體節點

bottomRadius5.5#指定圓錐體底面半徑

height6.0}#指定圓錐體的高度}一般節點語法定義如:上述的一段VRML文檔描述了一個圓錐體的建立,其中Shape、Appearance、Material以及Cone就是節點。節點由節點名、節點類型、域、事件接口等基本組成部分。不同的節點包含有不同的域,各個域沒有次序之分,每個域都有自己的默認值,而且有些域還可用同名的節點作為域值。根據域具有的域值情況的不同,可以把域分為兩類,一類為單值域,用SF標記,它用一個值來描述對應節點相應的特征。另一類為多值域,用MF標記。VRML的域值類型有很多種:比如SFBool表示單域值布爾型,取值為True或者False,以確定某個屬性是否打開;SFVec2f、MFVec2f表示單(多)域值二維浮點型,取值為兩個浮點數值,可用來確定一個二維坐標;而SFVec3f、MFVec3f則表示單(多)域值三維浮點型,取值為三個浮點數值,可用來確定一個三維坐標。上述的一段VRML文檔描述了一個圓錐體的建立,其中Shape事件和路由在現實環境中,事物往往隨著時間會有相應的變化。比如,物體的顏色隨著時間發生變化。在VRML中借助事件和路由的概念反映這種現實。1.事件在VRML中,每一個節點一般都有兩種事件,“入事件”(eventIn)和“出事件”(eventOut),每個節點通過這些“入事件”和“出事件”來改變節點自己的域值。如節點的顏色可以改變,可以表示為接收了這樣一種事件:set_color。當節點被改變了,會對改變的狀態有所反應,送出一些事件,比如發出信號,顏色改變了:Color_changed。事件相當于高級程序語言中的函數調用。其中,“入事件”相當于函數調用的入口參數,而“出事件”相當于函數調用時返回的參數。在VRML中的每一個節點內部有些域被定義為“暴露域”,即指它能夠接收事件,也能輸出事件。事件的調用是臨時的,事件的值不會被寫入VRML中。事件和路由2.路由路由的功能是連接一個節點的“入事件”eventIn和另外一個節點的“出事件”eventOut。通過簡單的語法結構,建立兩個節點之間的時間傳送的路徑。路由的說明可以在VRML頂部,也可以在文件節點的某個域中。路由的出現,可使虛擬空間具有交互性、動感性與靈活性。借助于事件和路由,能夠使得所建立的虛擬場景更接近于現實。

2.路由(續上頁)如語句:ROUTEtime.fraction_changedTObianhua.set_fraction這里,時間傳感器對象time在定時時間到時發生fraction_changed出事件,輸出的時間值傳送給位置插補節點對象bianhua的入事件set_fraction,計算出和時間值對應的坐標變化值。又語句:ROUTEbianhua.value_changedTOqiuti.set_translationBianhua通過本身的value_changed出事件將計算出的新坐標值傳遞給球體造型qiuti的入事件set_translation,使球體造型產生位移,于是動畫出現了。事件和路由構成了VRML的動畫體系。(續上頁)三、創建三維立體造型3.1造型節點3.2簡單幾何造型節點3.3復雜幾何造型節點3.4造型的外觀設計3.5創建文本造型Chapter3三、創建三維立體造型3.1造型節點Chapter33.1造型節點在VRML中創建三維立體造型是最基礎和重要的工作。Shape造型節點定義了立體造型的幾何形狀、尺寸、色彩、材質、紋理等外觀特征。其語法格式如下:Shape{ appearance外觀域結點

geometry幾何造型域結點}3.1造型節點在VRML中創建三維立體造型是最基礎和重要的3.2簡單幾何造型節點基本體素的建立形狀幾何由幾何節點描述,如Box,Cone,Cylinder等。3.2簡單幾何造型節點基本體素的建立1.長方體(Box) Box { sizexyz }x、y、z默認值均為2.0域值為默認值的域也可省略不寫1.長方體(Box)2.圓柱體(Cylinder)

Cylinder { radiusr heighth }默認r=1.0、h=2.0以y軸為對稱軸2.圓柱體(Cylinder)3.圓錐體(Cone)

Cone { bottomRadiusr heighth }默認r=1.0、h=2.0以y軸為對稱軸錐頂指向y+向3.圓錐體(Cone)4.球體(Sphere)

Sphere { radiusr }默認r=1.04.球體(Sphere)3.3復雜幾何造型節點

復雜形狀的建立

--動物、植物、地表、機械零件,等等...--可借助點、線、面來構建--對于地表等,甚至有特定的節點描述,如

ElevationGrid節點3.3復雜幾何造型節點

復雜形狀的建立PointSetShape{appearanceAppearance{...}geometryPointSet{coordCoordinate{point[...]}}}IndexedLineSetShape{appearanceAppearance{...}geometryIndexedLineSet{coordCoordinate{point[...]}coordIndex[...]}}PointSetIndexedFaceSetShape{appearanceAppearance{...}geometryIndexedFaceSet{coordCoordinate{...}coordIndex[...]solidTRUEccwTRUEconvexTRUE}}IndexedFaceSetElevationGridShape{appearanceAppearance{...}geometryElevationGrid{xDimension3zDimension2xSpacing1.0zSpacing1.0 height[……]...}}ElevationGridExtrusion--條形、管形、環形…--可由Extrusion節點建立ExtrusionExtrusion擠出造型節點語法格式如下:節點名稱域名稱或事件域值#域、域值或事件類型Extrusion{crossSection[11,1-1,-1-1,,-11,11]#MFVec2fspine [000,010]#MFVec2fscale11#MFVec2forientation0010#MFRotationbeginCapTRUE#SFBoolendCapTRUE#SFBoolccwTRUE#SFBoolconvexTRUE#SFBoolso1idTRUE#SFBoolcreaseAngle0.0#SFF1oatset_crossSection#eventInMFVec3fset_spine#eventInMFVec2fset_scale#eventInMFVec2fset_orientauon#eventInMFRotation}Extrusion擠出造型節點語法格式如下:Extrusion擠出造型的一個例子Extrusion擠出造型的一個例子3.4造型的外觀設計Appearance節點描述外觀

Appearance { material材質域結點

texture貼圖域結點

}

--

可通過Material節點控制材料屬性,如顏色、高光、透明度等。

--可通過紋理映射為表面增添細節。

ImageTexture,PixelTexture,MovieTexture3.4造型的外觀設計Appearance節點描述外觀Material材質節點 Material { diffuseColor0.80.80.8--材料漫反射光色(r,g,b),0.0~1.0 specularColor0.00.00.0--材料鏡面反射光色(r,g,b),0.0~1.0 shininess0.2--亮度,0.0~1.0 ambientIntensity0.2--對比度,0.0~1.0 emissiveColor0.00.00.0--材料發射光色(r,g,b),0.0~1.0 transparency0.0--材料透明度,0.0~1.0 }Material材質節點造型的色彩設計常見RGB分量的配比值RedGreenBlue顏色0.00.O0.0黑0.20.20.2深灰0.50.50.5中灰0.80.80.8淺灰1.01.01,0自1.00.00.0紅0.01.00.0綠0.00.01.0藍1.01.00.0黃造型的色彩設計RedGreenBlue顏色0.00.O0.0幾何造型的簡單色彩設計VRML為整體造型添加同樣的顏色時,只需為diffuseColor域的域值設置一組合適的RGB分量值,就完成了對造型基本顏色的設計。幾何造型的復雜色彩設計點集和線集造型的色彩設計:一是通過Materia1材質節點的emissiveColor域的域值,為造型設定單一的顏色。(注意:不能使用diffuseColor域的域值設定點和線造型的顏色,因為前面已經說過點集和線集節點創建的造型不受光源的影響,沒有光照的情況下,無論diffuseColor域的域值設定成什么顏色,瀏覽器均顯示為黑色)二是通過Pointset點集節點和IndexedLineSet線集節點的color域的域值Color顏色節點,為造型設定不同的顏色。IndexedLineSet線集節點有color、colorIndex、colorPerVertex三個域的域值用于為所創建的線段著色。面集造型的色彩設計:color、colorIndex、colorPerVertex網格標高造型的色彩設計

color、colorPerVertex

幾何造型的簡單色彩設計四、造型的材質設計造型的材質設計是一項復雜的工作,現實世界中常用的材料,如金屬、木材、磚瓦、石料、玻璃、塑料等不僅僅是外觀顏色上的差別,材質的屬性更多反映在透明度、發光顏色、反光度、外觀亮度的不同。因此,材質設計必須依賴于Material節點中六個域值的綜合設定來完成。下表是常用材質域值設定的參考表。視覺效果材料漫反射顏色環境光反射物體鏡面反射顏色材質外觀亮度diffuseColorambientIntensitySpecularColorshininess黃金0.50.30.00.40.70.70.60.2白銀0.50.50.70.40.80.80.90.2銅0.40.20.00.280.80.40.00.1鋁0.30.30.50.30.70.70.80.1紅塑料0.80.20.20.10.80.80.80.15綠塑料0.20.20.80.10.80.80.80.15藍塑料0.20.80.20.10.80.80.80.15四、造型的材質設計視覺效果材料漫反射顏色環境光反射物體鏡面反造型的紋理包裝設計ImageTexture節點示例1

Shape{appearanceAppearance{materialMaterial{}textureImageTexture{url"wood.jpg"}}geometry...}VRML只支持.jpg、.gif圖像格式幾何造型所有的面都有貼圖拉伸型覆蓋圖像文件應與VRML文件在同一位置造型的紋理包裝設計ImageTexture節點示例1ImageTexture節點示例2

Shape{appearanceAppearance{materialMaterial{}texturePixelTexture{image213//width,height,bytes

0xFFFF000xFF0000//pixel,pixelvalues}}geometry...}ImageTexture節點示例2MovieTexture節點示例

Shape{appearanceAppearance{materialMaterial{}textureMovieTexture{url"movie.mpg"loopTRUEspeed1.0startTime0.0stopTime0.0}}geometry...}MovieTexture節點示例紋理變換可以改變紋理在表面上的位置、方向及大小

Shape{appearanceAppearance{materialMaterial{...}textureImageTexture{...}textureTransformTextureTransform{translation0.00.0rotation0.0scale3.03.0}}}紋理變換3.5創建文本造型

結點結構Shape { appearance外觀域結點

geometry文本造型域結點

}文本造型域結點結構

Text { string“文本”——VRML不支持中文文本

fontStyle字型域結點

}3.5創建文本造型

結點結構字型域結點

FontStyle { family"SERIF"--字體

style"PLAIN"--字形

size1.0--尺寸 language"en_US"--語言

horizontalTRUE--文本方向,TRUE水平/FALSE垂直

justify["BEGIN","FIRST"]--對齊方式

}字體還有:SANS、TYPEWRITER字形還有:BOLD、ITALIC、BOLDITALIC語言也可以是"zh_CN",但CosmoPlayer不支持。對齊方式還可以是["MIDDLE","MIDDLE"]文本造型創建在X-Y平面上,Z向厚度為0.0字型域結點文本方向和對齊方式的規定如圖所示。文本方向和對齊方式的規定如圖所示。VRML程序設計VRML程序設計一、虛擬現實技術概述1.1虛擬現實概念特點系統基本構成關鍵技術應用1.2VRMLChapter1一、虛擬現實技術概述1.1虛擬現實Chapter11.1虛擬現實

虛擬現實的概念虛擬現實是利用計算機生成一個逼真的視覺、聽覺、觸覺以及嗅覺等的模擬環境(如飛機駕駛艙、分子結構世界等),通過多種傳感設備使用戶“投入”到該環境中,用戶可通過其感官與這一生成的虛擬實體進行交互溝通,如同與真實的環境直接進行自然交互的技術。這里所謂的“模擬環境”一般是指用計算機生成的有立體感的圖形,它可以是某一特定現實環境的表現,也可以是純粹構想的世界。虛擬現實技術實現的是人所感受到的虛擬幻境,所以錢學森建議把VirtualReality的技術叫做“靈境技術”,由它構成的信息處理環境稱作“靈境”。1.1虛擬現實

虛擬現實的概念虛擬現實的特點(3I特性)第一,虛擬現實技術是通過計算機生成一個非常逼真的實體,逼真要達到三維的視感,甚至還包括聽覺、觸覺和嗅覺等。這個逼真的實體足以成為“迷惑”人類視覺的虛幻的世界,這種“迷惑”是多方面的,不僅可以看到而且可以聽到、觸到以及嗅到這個虛擬世界中所發生的一切。這種感覺是如此的真實,以至于能全方位地浸沒在這個虛幻的世界中,這就是虛擬現實的第一個特征,即浸沒感(Immersion)或臨場參與感。虛擬現實的特點(3I特性)虛擬現實的特點第二,虛擬現實與通常CAD系統所產生的模型是不一樣的,它不是一個靜態的世界,而是一個動態的、開放的環境,它可以對使用者的輸入(如手勢,語言命令)作出響應。如拿起一個虛擬的火炬并打開其開關,推動操縱桿,就可以在虛擬環境中的漫游,甚至還可以用虛擬的手感觸到虛擬物體的存在。虛擬現實環境可以通過一些三維傳感設備來完成交互動作,這是虛擬現實技術的第二個特征,即交互性(Interaction)。虛擬現實的特點虛擬現實的特點第三,虛擬現實不僅僅是一個媒體,一個高級用戶界面,它還是為解決工程、醫學、軍事等方面的問題而由開發者設計出來的應用軟件,它以詳盡的形式反映了設計者的思想。如在蓋一座現代化的大廈之前,首先要做的事是對這座大廈的結構做細致的構思,為了使之定量化,還需設計許多圖紙。這些圖紙反映的是設計者的構思,虛擬現實同樣反映的是某個設計者的思想,只不過它的功能遠比那些呆板的圖紙生動、強大的多,所以國外有些學者稱虛擬現實為放大人們心靈的工具,或人工現實(artificalreality)。這是虛擬現實技術所具有的第三個特征,即思想性(Imagation)。虛擬現實的特點虛擬現實系統的基本構成虛擬現實系統的基本構成虛擬現實技術的關鍵技術(1)動態環境建模技術

(2)實時三維圖形生成技術

(3)立體顯示和傳感器技術

(4)應用系統開發工具

(5)系統集成技術

虛擬現實技術的關鍵技術虛擬現實技術的應用(1)醫學

(2)娛樂、藝術與教育

(3)軍事與航天工業

(4)管理工程

簡單場景示例如下:虛擬現實技術的應用1.2虛擬現實建模語言VRML

1.2虛擬現實建模語言VRML

VRML2.0標準被稱為第二代Web語言VRML2.0標準被稱為第二代Web語言VRML的特點(1)與其它Web技術語言相比,其語法簡單、易懂,編輯操作方便,學習相對容易。(2)VRML具有創建三維造型與場景,并可以實現很好的交互效果。而且可以嵌入Java、JavaScript等程序實現人機交互,從而極大的擴充其表現能力,形成更為逼真的虛擬環境。(3)具有強大的網絡功能,文件容量小,適宜網絡傳輸,并可方便地創建立體網頁與網站。(4)具有多媒體功能,在其程序中可方便地加入聲音、圖像、動畫等多媒體效果。(5)具有人工智能功能,在VRML中具有感知功能,可以利用各種傳感器節點來實現用戶與虛擬場景之間的智能交互。(6)在當前各種瀏覽器中還不能直接運行,必須安裝VRML相關插件才能看到其效果。

VRML的特點二、VRML的基本知識2.1VRML文件的編輯運行2.2一個VRML程序示例2.3VRML基本概念Chapter2二、VRML的基本知識2.1VRML文件的編輯運行Ch2.1VRML文件的編輯運行

VRML的編輯VRML是文本文件,它向VRML瀏覽器發出如何為虛擬空間創建3D造型的指令。使用VRML創建自己的虛擬空間,需要VRML瀏覽器(例如Windows中IE的組件VRML2.0)和某種字處理器(如記事本)就可以實現了。在字處理器鍵入VRML指令。然后,將文本文件存成*.wrl文件,最后將它裝入VRML瀏覽器,以3D形式查看。為了向空間添加更多東西,返回字處理器,鍵入其他VRML指令,保存文件,并將它重新讀回VRML瀏覽器。重復上述操作,逐漸創建自己的虛擬空間。編輯工具推薦VrmlPad2.1VRML文件的編輯運行

VRML的編輯VRML的運行運行環境要求較低,采用Pentium4以上的計算機,主頻2G以上、內存128M以上、顯存64M以上、硬盤10G以上即可常用的VRML文件瀏覽器有CortonaPlayer和CosmoPlayer,我們這里使用CortonaPlayerVRML的運行2.2VRML程序示例#VRMLV2.0utf8DEFqiutiTransform{#坐標變換節點Children[Shape{appearanceAppearance{ materialMaterial{ diffuseColor010 }}GeometrySphere{radius1.1}}]}DEFtimeTimeSensor{#時間傳感器節點 cycleInterval2.0 loopTRUE}DEFbianhua

PositionInterpolator{#位置插補節點 key[0.0,1.0] keyValue[00-10006]}ROUTEtime.fraction_changedTObianhua.set_fraction#路由ROUTEbianhua.value_changedTOqiuti.set_translation#路由2.2VRML程序示例注意事項:

vrml文件區分大小寫

vrml文件的語法結構。一個實用的vrml文件一般由文件頭,節點和路由組成

vrml文件實際上是眾多節點的組合。一個節點由節點名和一對花括號組成,花括號內可以有多條語句。路由語句根據需要可以有多個。一個最基本的vrml文件處必需的文件頭外,可以沒有路由語句,但至少應包含一個節點。文件頭中的utf8表示文件使用的UTF-8字符集。計算機中使用的ASCII字符集是UTF-8字符集的子集。注意事項:2.3VRML基本概念

文件頭 VRML文件中的第一行#VRMLV2.0utf8,這是VRML文件頭,任何VRML文件都必須有這樣的文件頭,并且必須放在第一行,它表述了以下三個含義:(1)#這個#不是注釋,而是VRML文件的一個部分;(2)VRML表示告訴瀏覽器,這是個vrml文件;(3)V2.0表示告訴瀏覽器,這個文件使用vrml2.0版的規范完成;(4)utf8表示文件是使用國際UTF-8的字符集。2.3VRML基本概念

文件頭域可理解為其他高級語言中的“變量”。分為兩種:普通域,公共域。如上例中radius是普通域,diffuseColor,cycleInterval,loop,key,keyValue為公共域,children也為公共域。VRML的空間坐標與計量單位在構建虛擬場景中,構成場景的造型有大小的差別,物體間有相對位置的不同,并且造型還會有旋轉、移動等運動。這就涉及到物體的空間坐標系、相應的長度、角度及顏色等。在VRML中,采用空間直角坐標系確定造型的位置,并且用特定的計量單位定量表示長度。

虛擬現實vrml程序設計1-2-3章1.VRML空間坐標系在VRML場景中,空間直角坐標滿足右手螺旋法則,就是說,右手四指從X方向轉到Y方向,則拇指的指向是Z方向。在默認情況下,X坐標向右為正;Y坐標向上為正;而Z坐標指向觀察者,如圖所示。1.VRML空間坐標系2.VRML長度單位長度及坐標的計量單位采用VRML單位計量,在三維空間中,它是統一的,簡稱為單位。需要注意的是,這里表示的單位和實際環境中的計量沒有任何可比性,和一些三維建模軟件如3DSMAX的計量單位也沒有可比性。在VRML場景中,只有物體間的大小和相對位置都用VRML單位計量,才能模擬出真實的現實。3.VRML角度單位在VRML中,使用的角度不是普通的角度,而是用弧度表示,這是瀏覽器接受的角度描述。當在VRML中使用角度單位中,要先將其換算成弧度后,再將其寫入到VRML源程序中。VRML中的360o角度等于2π弧度,由此,1弧度約等于57o。4.空間立體著色在VRML三維空間中,無論是背景、光線的顏色、物體,它們的顏色都是由紅、綠、藍(RGB)組合而成,它們分別對應3個浮點數,其域值為0.0-1.0之間,由這三原色組合成各種顏色。2.VRML長度單位節點和域節點是VRML文檔中最基本的組成單元,是VRML的精髓與核心。VRML借助于節點描述對象某一方面的特征,如各種形狀、材質以及顏色等等。VRML場景往往由一組具有一定層次結構的節點構造出來。每個節點包含有子節點和描述節點屬性的“域名”、“域值”。相當于其它高級語言中的變量、數組等,或是數據庫中的字段。節點和域一般節點語法定義如:Shape{#Shape模型節點appearanceAppearance{#定義造型外觀、顏色和表面紋理

materialMaterial{}#描述外觀材質屬性

} geometryCone{#指定造型外觀為圓錐體節點

bottomRadius5.5#指定圓錐體底面半徑

height6.0}#指定圓錐體的高度}一般節點語法定義如:上述的一段VRML文檔描述了一個圓錐體的建立,其中Shape、Appearance、Material以及Cone就是節點。節點由節點名、節點類型、域、事件接口等基本組成部分。不同的節點包含有不同的域,各個域沒有次序之分,每個域都有自己的默認值,而且有些域還可用同名的節點作為域值。根據域具有的域值情況的不同,可以把域分為兩類,一類為單值域,用SF標記,它用一個值來描述對應節點相應的特征。另一類為多值域,用MF標記。VRML的域值類型有很多種:比如SFBool表示單域值布爾型,取值為True或者False,以確定某個屬性是否打開;SFVec2f、MFVec2f表示單(多)域值二維浮點型,取值為兩個浮點數值,可用來確定一個二維坐標;而SFVec3f、MFVec3f則表示單(多)域值三維浮點型,取值為三個浮點數值,可用來確定一個三維坐標。上述的一段VRML文檔描述了一個圓錐體的建立,其中Shape事件和路由在現實環境中,事物往往隨著時間會有相應的變化。比如,物體的顏色隨著時間發生變化。在VRML中借助事件和路由的概念反映這種現實。1.事件在VRML中,每一個節點一般都有兩種事件,“入事件”(eventIn)和“出事件”(eventOut),每個節點通過這些“入事件”和“出事件”來改變節點自己的域值。如節點的顏色可以改變,可以表示為接收了這樣一種事件:set_color。當節點被改變了,會對改變的狀態有所反應,送出一些事件,比如發出信號,顏色改變了:Color_changed。事件相當于高級程序語言中的函數調用。其中,“入事件”相當于函數調用的入口參數,而“出事件”相當于函數調用時返回的參數。在VRML中的每一個節點內部有些域被定義為“暴露域”,即指它能夠接收事件,也能輸出事件。事件的調用是臨時的,事件的值不會被寫入VRML中。事件和路由2.路由路由的功能是連接一個節點的“入事件”eventIn和另外一個節點的“出事件”eventOut。通過簡單的語法結構,建立兩個節點之間的時間傳送的路徑。路由的說明可以在VRML頂部,也可以在文件節點的某個域中。路由的出現,可使虛擬空間具有交互性、動感性與靈活性。借助于事件和路由,能夠使得所建立的虛擬場景更接近于現實。

2.路由(續上頁)如語句:ROUTEtime.fraction_changedTObianhua.set_fraction這里,時間傳感器對象time在定時時間到時發生fraction_changed出事件,輸出的時間值傳送給位置插補節點對象bianhua的入事件set_fraction,計算出和時間值對應的坐標變化值。又語句:ROUTEbianhua.value_changedTOqiuti.set_translationBianhua通過本身的value_changed出事件將計算出的新坐標值傳遞給球體造型qiuti的入事件set_translation,使球體造型產生位移,于是動畫出現了。事件和路由構成了VRML的動畫體系。(續上頁)三、創建三維立體造型3.1造型節點3.2簡單幾何造型節點3.3復雜幾何造型節點3.4造型的外觀設計3.5創建文本造型Chapter3三、創建三維立體造型3.1造型節點Chapter33.1造型節點在VRML中創建三維立體造型是最基礎和重要的工作。Shape造型節點定義了立體造型的幾何形狀、尺寸、色彩、材質、紋理等外觀特征。其語法格式如下:Shape{ appearance外觀域結點

geometry幾何造型域結點}3.1造型節點在VRML中創建三維立體造型是最基礎和重要的3.2簡單幾何造型節點基本體素的建立形狀幾何由幾何節點描述,如Box,Cone,Cylinder等。3.2簡單幾何造型節點基本體素的建立1.長方體(Box) Box { sizexyz }x、y、z默認值均為2.0域值為默認值的域也可省略不寫1.長方體(Box)2.圓柱體(Cylinder)

Cylinder { radiusr heighth }默認r=1.0、h=2.0以y軸為對稱軸2.圓柱體(Cylinder)3.圓錐體(Cone)

Cone { bottomRadiusr heighth }默認r=1.0、h=2.0以y軸為對稱軸錐頂指向y+向3.圓錐體(Cone)4.球體(Sphere)

Sphere { radiusr }默認r=1.04.球體(Sphere)3.3復雜幾何造型節點

復雜形狀的建立

--動物、植物、地表、機械零件,等等...--可借助點、線、面來構建--對于地表等,甚至有特定的節點描述,如

ElevationGrid節點3.3復雜幾何造型節點

復雜形狀的建立PointSetShape{appearanceAppearance{...}geometryPointSet{coordCoordinate{point[...]}}}IndexedLineSetShape{appearanceAppearance{...}geometryIndexedLineSet{coordCoordinate{point[...]}coordIndex[...]}}PointSetIndexedFaceSetShape{appearanceAppearance{...}geometryIndexedFaceSet{coordCoordinate{...}coordIndex[...]solidTRUEccwTRUEconvexTRUE}}IndexedFaceSetElevationGridShape{appearanceAppearance{...}geometryElevationGrid{xDimension3zDimension2xSpacing1.0zSpacing1.0 height[……]...}}ElevationGridExtrusion--條形、管形、環形…--可由Extrusion節點建立ExtrusionExtrusion擠出造型節點語法格式如下:節點名稱域名稱或事件域值#域、域值或事件類型Extrusion{crossSection[11,1-1,-1-1,,-11,11]#MFVec2fspine [000,010]#MFVec2fscale11#MFVec2forientation0010#MFRotationbeginCapTRUE#SFBoolendCapTRUE#SFBoolccwTRUE#SFBoolconvexTRUE#SFBoolso1idTRUE#SFBoolcreaseAngle0.0#SFF1oatset_crossSection#eventInMFVec3fset_spine#eventInMFVec2fset_scale#eventInMFVec2fset_orientauon#eventInMFRotation}Extrusion擠出造型節點語法格式如下:Extrusion擠出造型的一個例子Extrusion擠出造型的一個例子3.4造型的外觀設計Appearance節點描述外觀

Appearance { material材質域結點

texture貼圖域結點

}

--

可通過Material節點控制材料屬性,如顏色、高光、透明度等。

--可通過紋理映射為表面增添細節。

ImageTexture,PixelTexture,MovieTexture3.4造型的外觀設計Appearance節點描述外觀Material材質節點 Material { diffuseColor0.80.80.8--材料漫反射光色(r,g,b),0.0~1.0 specularColor0.00.00.0--材料鏡面反射光色(r,g,b),0.0~1.0 shininess0.2--亮度,0.0~1.0 ambientIntensity0.2--對比度,0.0~1.0 emissiveColor0.00.00.0--材料發射光色(r,g,b),0.0~1.0 transparency0.0--材料透明度,0.0~1.0 }Material材質節點造型的色彩設計常見RGB分量的配比值RedGreenBlue顏色0.00.O0.0黑0.20.20.2深灰0.50.50.5中灰0.80.80.8淺灰1.01.01,0自1.00.00.0紅0.01.00.0綠0.00.01.0藍1.01.00.0黃造型的色彩設計RedGreenBlue顏色0.00.O0.0幾何造型的簡單色彩設計VRML為整體造型添加同樣的顏色時,只需為diffuseColor域的域值設置一組合適的RGB分量值,就完成了對造型基本顏色的設計。幾何造型的復雜色彩設計點集和線集造型的色彩設計:一是通過Materia1材質節點的emissiveColor域的域值,為造型設定單一的顏色。(注意:不能使用diffuseColor域的域值設定點和線造型的顏色,因為前面已經說過點集和線集節點創建的造型不受光源的影響,沒有光照的情況下,無論diffuseColor域的域值設定成什么顏色,瀏覽器均顯示為黑色)二是通過Pointset點集節點和IndexedLineSet線集節點的color域的域值Color顏色節點,為造型設定不同的顏色。IndexedLineSet線集節點有color、colorIndex、colorPerVertex三個域的域值用于為所創建的線段著色。面集造型的色彩設計:color、colorIndex、colorPerVertex網格標高造型的色彩設計

color、colorPerVertex

幾何造型的簡單色彩設計四、造型的材質設計造型的材質設計是一項復雜的工作,現實世界中常用的材料,如金屬、木材、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論