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