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