《VRML高級三維模型.ppt》由會員分享,可在線閱讀,更多相關《VRML高級三維模型.ppt(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第四講 VRML高級三維模型,,大綱,造型的編組與素材調(diào)用 Group DEF/USE 造型的外觀設計 Material節(jié)點 創(chuàng)建文本造型 高級三維模型 點集造型節(jié)點 線集造型節(jié)點 面集造型節(jié)點 擠出造型節(jié)點 網(wǎng)格標高造型節(jié)點 作業(yè),造型的編組與素材調(diào)用,造型的編組和素材調(diào)用 VRML提供了一類具有編組功能的節(jié)點,可以將多個造型作為自己的子節(jié)點組合成一個整體,一起進行平移、旋轉(zhuǎn)、縮放等操作: Group編組節(jié)點 Transform變換節(jié)點 Inline內(nèi)聯(lián)結(jié)點 Anchor超級鏈接節(jié)點 Switch選擇開關結(jié)點 Billboard布告牌節(jié)點 LOD層次細節(jié)控制節(jié)點,造型的編組與素材調(diào)用,Gro
2、up編組節(jié)點 編組節(jié)點可以包含任意數(shù)目的子節(jié)點,將多個簡單造型組合成一組復雜造型,作為一個整體進行設計、命名和調(diào)用。 語法: Group { children [ ] [ ] #exposedField MFNode bboxCenter 0.0 0.0 0.0 #SFVec3f bboxsize - 1 -1 -1 #SFVec3f addChildren #eventIn MFNode removeChildren #eventIn MFNode },造型的編組與素材調(diào)用,children域 用于設定包含在該組結(jié)點中的所有子節(jié)點,通常為
3、Shape造型節(jié)點、Transform坐標變換節(jié)點及下一層的Group結(jié)點,組節(jié)點的數(shù)目無限制。 默認為空列表。 bboxCenter域 用于設定包圍該組節(jié)點所有造型的包圍盒的中心點坐標。 默認值為 (0 0 0),中心點在原點。 bboxSize域 設定包圍在當前包圍盒的尺寸。 默認值為(-1 -1 -1),由系統(tǒng)設置。 addChildren入事件用于將指定節(jié)點加入到該組節(jié)點列表中。 removeChildren入事件用于將指定節(jié)點從該組節(jié)點列表中刪除。,造型的編組與素材調(diào)用,節(jié)點名的定義與重用 在虛擬空間的場景中,為了減少源代碼的編寫量,提高效率,對重復的造型,通過可以先定義,后重復使用
4、該定義。 編寫簡練; 減少程序代碼; 層次清晰; 結(jié)構(gòu)合理; DEF 節(jié)點名 節(jié)點類型{ } USE 節(jié)點名 節(jié)點名可以由任何字母和數(shù)字開頭;不能包括單引號、雙引號、數(shù)字運算或英鎊符號。 定義的節(jié)點只在本文件范圍內(nèi)調(diào)用有效,一旦對被定義的源節(jié)點的域值進行修改,所有引用節(jié)點的域值都隨之改變。 舉例:desk.wrl,造型的外觀設計,Appearance節(jié)點 立體幾何造型的外觀設計 為造型添加顏色; 設置有關材質(zhì)的屬性,創(chuàng)建出金屬、玻璃、石頭等屬性: 透明度 反光度 發(fā)光度 為造型添加紋理貼圖,增強造型的真實感。,造型的外觀設計,語法: Appearance{ material NULL
5、#exposedField SFNode texture NULL #exposedField SFNode textureTransform NULL #exposedField SFNode } 域值說明: material域用于設定立體造型外觀的材質(zhì)屬性。 texture域用于設定立體造型表面靜態(tài)或動態(tài)的紋理貼圖。 textureTransform域用于對使用的紋理貼圖進行坐標變換。,造型的外觀設計,Material材質(zhì)節(jié)點 當節(jié)點為NULL時, 即apperance Appearance { material NULL}或 apperance Appearance{ }
6、表示相關的幾何體本身為發(fā)白光的材質(zhì),忽略周圍的所有光照,造型為純白色,無任何亮度對比,無立體感。 當節(jié)點為空時, 即appearance Appearance{matrial Material{ } } 表示一個默認材質(zhì)結(jié)點,采取默認的光照,呈現(xiàn)淺灰色,有亮度對比和立體感。 舉例,造型的外觀設計,Material節(jié)點 語法 Material { diffuseColor 0.8 0.8 0.8 #exposedField SFColor ambientIntensify 0.2 #exposedField SFFlot specularColor 0 0 0 # exposedFi
7、eld SFColor emissiveColor 0 0 0 # exposedField SFColor shininess 0.2 #exposedField SFFlot transparency 0 #exposedField SFFlot },造型的外觀設計,diffuseColor域 設定物體的漫反射顏色:當光照射在物體表面時,物體表面向各個方向反射的基本色彩。 域值由三個浮點值組成,分別代表紅、綠、藍三原色(RGB)。 默認值為0.8 0.8 0.8,淺灰色。 ambientIntensify域 設定有多少環(huán)境光線被物體表面反射。 環(huán)境光各向同性,以dif
8、fuseColor*ambientIntensify來計算。 默認值為0.2。,造型的外觀設計,specularColor域 設定鏡面反射光的顏色。 入射角等于反射角是鏡面反射的基本原理。 設置了鏡面反射,會因觀察角度變化感受到強弱不同的反射效果。 默認值為0 0 0 ,反射光為黑色。 emmisiveColor域 設定發(fā)光物體產(chǎn)生光的顏色。 默認值為0 0 0,表示不發(fā)光。,造型的外觀設計,shininess域 設定物體表面的亮度。 取值范圍從漫反射表面的0到高度拋光表面的1; 較小的取值表示像纖維材質(zhì); 較大的取值表示像金屬材質(zhì)。 默認值為 0.2。 Transparency域 設定物體的
9、透明度。 取值范圍從不透明的0到完全透明的1。 默認值為0.0,表示不透明。,造型的外觀設計,,創(chuàng)建文本造型,文本(Text)是場景中的一種造型,但不是幾何造型。 VRML的文本對場景進行說明、信息提示和超級鏈接。 性質(zhì): 有不同的外觀和材質(zhì)屬性; 可以進行紋理包裝; 它是一個沒有厚度的平面造型,不具備三維立體特征。 Text語法 Text{ string [ ] #exposedField MFString length [ ] #exposedField MFFlot maxExtent 0.0 #exposed SFFLot fontStyle NULL #exposed
10、 SFNode },創(chuàng)建文本造型,string域 設定要創(chuàng)建的文本內(nèi)容。 域值可以是一行文本,也可以是多行文本。 每一行的文本都要包含在雙引號內(nèi),多行文本要用逗號或空格分隔,或者分行書寫,在引號內(nèi)的回車符、換行符無效。 行間距由FontStyle文本外觀節(jié)點的Spacing域的域值設定。 默認值為空列表,不創(chuàng)建任何文本。 例:[“Hello”,”I am a Student”] [“Welcom To ”,“Xiamen Univ.” ],創(chuàng)建文本造型,length域 域值為每一行文本造型設定長度。 長度以VRML長度單位計算。 根據(jù)設定的長度,系統(tǒng)自動改變字符的尺寸或字符間距來滿足設定的長
11、度。 默認值為空列表,由系統(tǒng)自動設定。 maxExtent域 域值設定任意行或列文本的最大有效長度。 當某一行文本造型的長度大于它的域值時,系統(tǒng)將通過改變字符尺寸和字符間距將其壓縮到其域值所設定的最大有效長度內(nèi)。 默認值為0.0,不對長度進行最大限制。 注意:其他沒被壓縮行的字符間距與被壓縮行的字符間距相同。,創(chuàng)建文本造型,fontStyle域 設定文本造型的外觀特征。 域值為NULL或一個FontStyle結(jié)點。 當域值NULL時,表示使用默認的外觀特征: 左對齊; 水平從左到右排列; 垂直方面從上到下排列; 文本高度為1.0; 文本間距為1.0; 字體為Serif。,創(chuàng)建文本造型,Font
12、Style節(jié)點 用于設定文本的語種、字符的大小和形狀、字體的風格以及文本的對齊方式、排列方式,行間距或列間距等。 語法: FontStyle{ family “SERIF” #SFString size 1.0 #SFFloat spacing 1.0 #SFFloat style “PLAIN” #SFString Horizontal TRUE #SFBool justify [“BEGIN”] #MFString leftToRight TRUE #SFBool topToBottom TRUE #SFBool langu
13、age “” #SFString },創(chuàng)建文本造型,family域 設定文本造型的字符集。 字符集有三種: “SERIF”,它是一種細線變寬字體,系統(tǒng)選用Times New Roman字體; “SANS”,它是一種簡單變寬字體,系統(tǒng)選用Helvertica字體; “TYPEWRITER”,它是一種等寬字體,系統(tǒng)選用Coutier字體。 默認值為”SERIF”。 size域 設定文本字符的尺寸; 水平排列時,設定文本高度;垂直排列時,設定文本寬度; 默認時為1.0。,創(chuàng)建文本造型,spacing域 設定文本字符的行間距。 當水平排列時,為行間距; 當垂直排列時,為列間距; 默認值為1
14、.0。 style域 設定文本造型的字體風格; 有四種:“PLAIN” 普通體;“BOLD”粗體; “ITALIC”斜體; “BOLDITALIC” 加粗斜體。 默認值為 “PLAIN”。,創(chuàng)建文本造型,Horizontal域 設置文本造型的主排列方向:水平或垂直; 默認值為TRUE,表示水平方向是主排列方向、垂直方向是次排列方向。 Justify域 表示文本造型中字符塊的對齊方式; 域值為含有一個或兩個域值的列表; 有兩個域值時,用空格或逗號分隔; 第一個為主對齊方式;第二個為次對齊方式; 當水平排列時,主對齊方式為水平方向,次對齊方式為垂直方向; 當垂直排列時,主對齊方式為垂直方向,次對齊
15、方式為水平方向。 有四種類型:“BEGIN”左對齊;“MIDDLE”居中對齊;“END”右對齊;“FIRST”; 默認值為 [ “BEGIN”,“FIRST” ]。,創(chuàng)建文本造型,leftToRight域 設定文本造型的字符是否從左到右排列; 默認值TRUE,從左到右。 topToBottom域 設定文本造型中的文本是否從上到下排列; 默認值為TRUE,從上到下。 Language域 設定文本造型使用的語言; 以兩個字母表示,有不同語言編碼的地區(qū)在語言代碼后加連字符和地區(qū)編碼: ar(阿拉伯);de(德語);de_DE(德語[德國]);de_CH(德語[瑞士]);en(英語);en_US(英語
16、[美國]);en_GB(英語[英國]);hi(印度);jp(日語);ru(俄語);sa(梵語);zh(中文);zh_TW(中文繁體);zh_CN(中文簡體);,創(chuàng)建文本造型,舉例:例3-39、3-40、3-41、3-42、3-43,高級三維模型,PointSet點集節(jié)點 VRML中點的造型是用X、Y、Z三維坐標定位,大小為一個像素的空間點。 點集就是不同位置空間點的集合。 用途: 模擬天上閃爍的繁星和遠處點點的燈光; 特性: 不受光源影響; 不能粘貼紋理; 不能進行碰撞檢測;,高級三維模型,語法: PointSet { coord NULL #exposedField SFNode col
17、or NULL #exposedField SFNode } coord 域設定離散點的三維坐標位置; color 域設定空間點的顏色;,高級三維模型,當域coord 可取值NULL,表示無任何點造型。 當域coord取值Coordinate坐標節(jié)點時,表示對點的坐標進行定位。 Coordinate坐標節(jié)點語法 Coordinate { point [ ] #exposedField MFVec3f } Point域的域值提供了一張三維坐標列表,用來設定一個或一組空間點的XYZ坐標。 三個數(shù)一組,用空格分隔;組與組之間用逗號分隔。 如 point [ 1 1 1, 1 2 0, 3 4 5
18、],高級三維模型,如圖: 垂直三角錐體有4個頂點 geometry Pointset{ coord Coordinate{ point [ 0 0 0 2 0 0 0 2 0 0 0 2 ] } },高級三維模型,當color域取值NULL,表示不對空間點著色; 當color域取值Color節(jié)點時,表示設定每個空間點的顏色; Color節(jié)點語法: Color{ color [ ] #exposedField MFColor } Color域的域值設定了一系列的顏色列表。 例3-18,作業(yè)1,自由練習: 編組節(jié)點、文本造型、點集節(jié)點 作業(yè):設計一個文本造型如圖所示。,作業(yè)提交注意:,上傳到:學院教學FTP://上傳作業(yè)-夏侯建兵-虛擬現(xiàn)實作業(yè)文件夾中。 作業(yè)提交的文件夾命名規(guī)則:學號_姓名_作業(yè)序號。 例:30920078102589_白旋旋_第xx講01(作業(yè)一)/02(作業(yè)二) 說明:請大家上傳作業(yè)時統(tǒng)一用壓縮文件打包上傳。,