




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VRML程序設(shè)計四、造型的空間變換、編組和素材調(diào)用4.1造型的空間變換4.2造型編組和素材調(diào)用4.3其他組節(jié)點(diǎn)的使用Chapter44.1造型的空間變換在VRML中創(chuàng)建的立體造型都是以默認(rèn)坐標(biāo)系的原點(diǎn)為中心進(jìn)行定位的。Transform坐標(biāo)變換節(jié)點(diǎn)可以創(chuàng)建一個新的坐標(biāo)系,通過對坐標(biāo)系的平移、旋轉(zhuǎn)、縮放操作,實現(xiàn)對立體造型位置、角度、縮放比例的改變。一、Tronsform坐標(biāo)變換節(jié)點(diǎn)Transform坐標(biāo)變換節(jié)點(diǎn)用于創(chuàng)建一個或多個不同于默認(rèn)(原始)坐標(biāo)系的新坐標(biāo)系。Transfom節(jié)點(diǎn)是一個組節(jié)點(diǎn),在此節(jié)點(diǎn)下面可以包含一個或多個子節(jié)點(diǎn),所有子節(jié)點(diǎn)的定位中心都基于同一個坐標(biāo)系的原點(diǎn)。這些子節(jié)點(diǎn)可以是Shape造型節(jié)點(diǎn)、Group編組節(jié)點(diǎn),也可以是下一層的Transform節(jié)點(diǎn)。
Transform{eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldSFVec3fcenter000exposedFieldMFNodechildren[]exposedFieldSFRotationrotation0010exposedFieldSFVec3fscale111exposedFieldSFRotationscaleOrientation0010exposedFieldSFVec3ftranslation000fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1}二、空間坐標(biāo)的平移
空間坐標(biāo)的平移是通過對Transform節(jié)點(diǎn)的trans1ation域的域值的設(shè)定,建立新的坐標(biāo)原點(diǎn),作為children域中所有子節(jié)點(diǎn)創(chuàng)建的造型的定位點(diǎn),從而實現(xiàn)原始坐標(biāo)系和新坐標(biāo)系造型之間相對位置的移動和變化的。
三、空間坐標(biāo)的旋轉(zhuǎn)空間坐標(biāo)系旋轉(zhuǎn)的方法:利用Transform坐標(biāo)變換節(jié)點(diǎn)中rotation域的域值指定旋轉(zhuǎn)軸及旋轉(zhuǎn)角度,形成一個新的旋轉(zhuǎn)后的空間坐標(biāo)系,然后在新坐標(biāo)中創(chuàng)建一個或一組造型。
如果需要在前面變換的基礎(chǔ)上連續(xù)進(jìn)行空間變換,可以使用Transform節(jié)點(diǎn)進(jìn)行逐級的嵌套變換,嵌套級數(shù)沒有限制。
四、空間坐標(biāo)的縮放現(xiàn)實世界中的物體是千姿百態(tài)的,很難用幾種標(biāo)準(zhǔn)的造型來概括。例如,前面學(xué)習(xí)的簡單造型節(jié)點(diǎn)可以很容易地創(chuàng)建出圓球造型,但是要做出一個橢圓形的氣球就不容易了,其實這樣的造型可以通過對簡單造型圓球進(jìn)行不同方向上的縮放拉伸來完成。和造型的平移、旋轉(zhuǎn)一樣,造型的縮放必須依靠空間坐標(biāo)度量單位比例的縮放來實現(xiàn)。通常使用的空間坐標(biāo),在X、Y、Z坐標(biāo)軸上采用相同比例的度量單位,利用Transform坐標(biāo)變換節(jié)點(diǎn)中scale域scaleOrientation域和center域的域值設(shè)定不同方向坐標(biāo)軸的縮放比例,形成一個新的度量單位縮放比例不同的空間坐標(biāo)系,然后在新坐標(biāo)系中創(chuàng)建一個或一組經(jīng)過縮放處理的造型。4.2造型編組和素材調(diào)用VRML提供了一類具有編組功能的節(jié)點(diǎn),它們可以把多個造型作為自己的子節(jié)點(diǎn)組合成一個整體,一起進(jìn)行平移、旋轉(zhuǎn)、縮放、外觀設(shè)計、定義和調(diào)用等項操作。在設(shè)計中合理使用組節(jié)點(diǎn),能夠減少很多重復(fù)性的工作。這類組節(jié)點(diǎn)包括:Group編組節(jié)點(diǎn)、Transform坐標(biāo)變換節(jié)點(diǎn)、Inline內(nèi)聯(lián)接點(diǎn)、Anchor超級鏈接節(jié)點(diǎn)、Switch選擇開關(guān)節(jié)點(diǎn)、Billboard布告牌節(jié)點(diǎn)和LOD細(xì)節(jié)層次控制節(jié)點(diǎn)等。一、Group編組節(jié)點(diǎn)Group{eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldMFNodechildren[]fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1}二、素材調(diào)用的基本方法1.采用DEF節(jié)點(diǎn)定義及USE節(jié)點(diǎn)引用的方法2.利用Inline內(nèi)聯(lián)節(jié)點(diǎn),從本文件范圍之外的其他文件或者互聯(lián)網(wǎng)上,調(diào)用不需要進(jìn)行修改加工的素材,素材成為原場景的一部分3.利用帶有鏈接功能的Anchor錨節(jié)點(diǎn),把存儲在本機(jī)硬盤或互聯(lián)網(wǎng)上的素材作為一個新的完整的場景進(jìn)行調(diào)用,取代原來的場景4.利用PROTO語句和EXTERPROTO語句,在本文件內(nèi)外及互聯(lián)網(wǎng)上定義的原型節(jié)點(diǎn)和外部原型節(jié)點(diǎn),調(diào)用素材時可以根據(jù)需要對其原有的屬性進(jìn)行更改或賦予更多的功能三、節(jié)點(diǎn)的定義及引用VRML可以采用節(jié)點(diǎn)定義及引用的方法,在本文件范圍內(nèi)反復(fù)調(diào)用相同的素材。在虛擬現(xiàn)實的場景設(shè)計中,常常需要將相同的造型經(jīng)過不同的排列、旋轉(zhuǎn)組合成新的復(fù)雜造型。節(jié)點(diǎn)定義及引用的語法格式:節(jié)點(diǎn)定義:DEF節(jié)點(diǎn)名節(jié)點(diǎn){}節(jié)點(diǎn)引用:USE節(jié)點(diǎn)名四、lnline內(nèi)聯(lián)節(jié)點(diǎn)在VRML中,可以使用IMine內(nèi)聯(lián)節(jié)點(diǎn),從本文件范圍之外的其他文件或者互聯(lián)網(wǎng)的任意位置上,調(diào)用不需要進(jìn)行修改加工的素材。當(dāng)需要創(chuàng)建包括復(fù)雜場景和造型的大型虛擬世界的時候,VRML文件就會變得非常龐大,難于進(jìn)行管理和調(diào)試。采用內(nèi)聯(lián)的方法,可以將復(fù)雜的場景和造型分解成各自獨(dú)立的小文件,分別進(jìn)行設(shè)計和調(diào)試,作為素材模塊存在本地硬盤或者互聯(lián)網(wǎng)的任意位置上。構(gòu)建主程序時,在需要插入素材模塊的位置,只需利用內(nèi)聯(lián)節(jié)點(diǎn)指明素材文件的地址和文件名即可完成調(diào)用和插入素材的過程,素材可以很方便地成為整個場景中的一部分。Inline{exposedFieldMFStringurl[]fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1}五、Anchor錨鏈接節(jié)點(diǎn)內(nèi)聯(lián)節(jié)點(diǎn)是把存在本機(jī)硬盤或互聯(lián)網(wǎng)上的素材作為整個場景的一個組成部分調(diào)到原場景中來,而錨鏈接節(jié)點(diǎn)則是把存在本機(jī)硬盤或互聯(lián)網(wǎng)上的素材作為一個新的完整的場景進(jìn)行調(diào)用,在原場景中設(shè)置一個錨點(diǎn)造型,當(dāng)瀏覽者點(diǎn)擊錨點(diǎn)造型時,VRML瀏覽器即可鏈接到設(shè)定的素材文件,使瀏覽者從原場景中出來,進(jìn)入到素材文件所構(gòu)建的新場景中去。Anchor{eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldMFNodechildren[]exposedFieldSFStringdescription“"exposedFieldMFStringparameter[]exposedFieldMFStringurl[]fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1}六、原型的定義和調(diào)用前面所講的調(diào)用素材的三種方法只適用于對素材不需要進(jìn)行加工處理、原汁原味調(diào)用的情況,如果需要對素材的屬性進(jìn)行更改或賦予更多的功能后調(diào)用,可以使用PROTO原型節(jié)點(diǎn)或EXTERPROTO外部原型節(jié)點(diǎn),它們可以定義可供修改的屬性,例如:顏色、材質(zhì)、外觀等,還可以根據(jù)需要增加素材的功能。
原型具有以下功能
(1)素材調(diào)用功能。原型可以作為素材庫反復(fù)調(diào)用。(2)節(jié)點(diǎn)擴(kuò)展功能。原型可以使用標(biāo)準(zhǔn)節(jié)點(diǎn)和自定義節(jié)點(diǎn)創(chuàng)建新的節(jié)點(diǎn)類型。(3)動態(tài)更新和保護(hù)功能。原型可以通過設(shè)置接口中的域和事件,對虛擬現(xiàn)實中造型屬性進(jìn)行更改或者限制更改,從而達(dá)到場景的動態(tài)更新和保護(hù)一些造型不被改動的目的。(4)造型及動作打包功能。VRML中標(biāo)準(zhǔn)節(jié)點(diǎn)本身均不具備行為自控能力,通過原型可以將造型與交互動作、事件、腳本等VRML元素捆綁使用。(5)網(wǎng)絡(luò)運(yùn)作功能。原型(內(nèi)部原型)可以在當(dāng)前文件中定義和反復(fù)調(diào)用,外部原型可以在其他文件和網(wǎng)絡(luò)中定義,在當(dāng)前文件中反復(fù)調(diào)用。外部原型提供了跨越網(wǎng)絡(luò)調(diào)用的強(qiáng)大功能。4.3其他組節(jié)點(diǎn)的使用一、Billboard布告牌節(jié)點(diǎn)Billboard{eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldSFVec3faxisOfRotation010exposedFieldMFNodechildren[]fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1}二、Switch選擇開關(guān)節(jié)點(diǎn)Switch{exposedFieldMFNodechoice[]exposedFieldSFInt32whichChoice-1}三、LOD細(xì)節(jié)層次控制節(jié)點(diǎn)在創(chuàng)建VRML虛擬現(xiàn)實空間造型的時候,需要兼顧瀏覽器的渲染速度和造型刻畫真實度之間的關(guān)系。造型刻畫越細(xì)致就越接近于真實,然而相應(yīng)的VRML文件的體積也越大,瀏覽器的渲染速度就越低,占用計算機(jī)CPU的時間就越長。LOD(LevelofDetail)細(xì)節(jié)層次控制節(jié)點(diǎn)主要任務(wù)就是解決這個問題,該節(jié)點(diǎn)可以根據(jù)瀏覽者與造型距離的遠(yuǎn)近,選擇按照不同的細(xì)致度刻畫的造型。當(dāng)造型距離比較遠(yuǎn)的時候,選擇用較低層次細(xì)節(jié)描述方法創(chuàng)建的造型,忽略一些細(xì)節(jié)而只刻畫造型的輪廓、形狀和大小,這與在真實世界中的觀察極為相似。遠(yuǎn)距離的物體只能看到模糊的輪廓而看不到細(xì)節(jié),可以減小造型文件的體積,提高瀏覽器的速度。當(dāng)造型距離比較近的時候,選擇用較高層次細(xì)節(jié)描述方法創(chuàng)建的造型,清晰地刻畫造型的紋理和細(xì)微特征,保證造型描述的逼真性,這一點(diǎn)也與我們在真實世界中的觀察相一致,物體距離越近,能夠看到的細(xì)節(jié)越多、越清晰。LOD{exposedFieldMFNodelevel[]fieldSFVec3fcenter000fieldMFFloatrange[]}第五章、虛擬現(xiàn)實的場景環(huán)境設(shè)計5.1創(chuàng)建背景5.2創(chuàng)建光源5.3創(chuàng)建霧化效果5.4創(chuàng)建觀察視點(diǎn)和視點(diǎn)導(dǎo)航5.1創(chuàng)建背景
在VRML中添加背景是最簡單、最基本的場景環(huán)境設(shè)計方法。虛擬空間背景分為全景空間背景和天體空間背景兩種:全景空間背景是一個將造型包圍在里面的空間立方體,具有前、后、左、右、上、下六個平面,可以根據(jù)需要設(shè)置不同的材質(zhì)和圖片。天體空間背景是一個無窮大的空間球體,分為天空背景和地面背景。天空和地面的劃分以地平線為界。地平線位于原始坐標(biāo)系XOZ平面向后延伸的無窮遠(yuǎn)處,上面的球體是天空,下面的球體是地面。背景和造型的嵌套關(guān)系是:造型在最里面,全景空間背景的立方體為中間包圍層,天體空間背景的無窮大球體是最外面的包圍層。如果同時增加了全景空間和天體空間兩種背景,可以通過設(shè)置全景空間背景的透明度值決定能否看到天空和地面的顏色。默認(rèn)情況下,沒有全景空間背景,天空和地面均為黑色。空間模型 以VRML空間坐標(biāo)系的原點(diǎn)為中心的無限大球體 以Z-X平面為地平面
Y+向為天空
Y-向為地面天空角 天空位置與Y+的夾角地面角 地面位置與Y-的夾角Background{skyAngle[天空角1,天空角2,……]skyColor[天空色0,天空色1,天空色2,……]groundAngle[地面角1,地面角2,……]groundColor[地面色0,地面色1,地面色2,……]}天空色0為0度天空位置的顏色地面色0為0度地面位置的顏色天空色1,2,……對應(yīng)天空角1,2,……地面色1,2,……對應(yīng)地面角1,2,……系統(tǒng)自動過渡相鄰位置的顏色角度的單位為弧度顏色由r、g、b分量合成顏色分量的數(shù)值范圍:0.0~1.0一些常用角度的弧度值(弧度=角度*π/180)5.2創(chuàng)建光源
現(xiàn)實世界中的光源來自于各種能發(fā)光的物體,例如太陽、燈泡、蠟燭、激光器等。
在默認(rèn)情況下,VRML瀏覽器自動生成一個白色頭燈光源headlight。此光源為平行光束,與瀏覽者的視點(diǎn)同步運(yùn)動,始終照亮瀏覽者的前方,和井下工作的礦工帽子上的頭燈很相似。頭燈光源可以通過設(shè)置NavigationInfo節(jié)點(diǎn)的headlight域的域值,控制光源打開或關(guān)閉(FALSE),默認(rèn)缺省情況下,頭燈為打開狀態(tài),光源的顏色無法改變。本章之前所有的實例均采用這種默認(rèn)的白色頭燈光源。除此之外,VRML中還可以人工設(shè)置三種類型的光源:點(diǎn)光源:點(diǎn)光源
(PointLight節(jié)點(diǎn)),平行光源(DirectionalLight節(jié)點(diǎn))和錐光源(SpotLight節(jié)點(diǎn))。
PointLight點(diǎn)光源節(jié)點(diǎn)點(diǎn)光源由發(fā)光點(diǎn)向四面八方發(fā)射亮度相同的光線,各個方向具有相同性。點(diǎn)光源節(jié)點(diǎn)既可作為獨(dú)立的節(jié)點(diǎn),也可作為其他組節(jié)點(diǎn)的子節(jié)點(diǎn)使用。PointLight{exposedFieldSFFloatambientIntensity0exposedFieldSFVec3fattenuation100exposedFieldSFColorcolor111exposedFieldSFFloatintensity1exposedFieldSFVec3flocation000exposedFieldSFBoolonTRUEexposedFieldSFFloatradius100}DirectionalLight平行光源節(jié)點(diǎn)現(xiàn)實世界中的平行光源是從無窮遠(yuǎn)處照射,因此其光線是平行指向同一個方向的。例如,太陽基本是一個平行光源,太陽離地球相當(dāng)遠(yuǎn),當(dāng)太陽的光線到達(dá)地球時基本是平行的。DirectionalLight{exposedFieldSFFloatambientIntensity0exposedFieldSFColorcolor111exposedFieldSFVec3fdirection00-1exposedFieldSFFloatintensity1exposedFieldSFBoolonTRUE}
SpotLight錐光源節(jié)點(diǎn)
錐光源即光線照射呈光錐狀,光源位于圓錐體的頂點(diǎn),光線被限制在一個圓錐體的照射空間里;造型只有位于圓錐體空間中才會被照亮。VRML中,常常利用SpotLight節(jié)點(diǎn)創(chuàng)建錐光源,模擬一些特殊光照效果的場景,如舞臺燈光、探照燈、藝術(shù)攝影等。
SpotLight{exposedFieldSFFloatambientIntensity0exposedFieldSFVec3fattenuation100exposedFieldSFFloatbeamWidth1.570796exposedFieldSFColorcolor111exposedFieldSFFloatcutOffAngle0.785398exposedFieldSFVec3fdirection00-1exposedFieldSFFloatintensity1exposedFieldSFVec3flocation000exposedFieldSFBoolonTRUEexposedFieldSFFloatradius100}創(chuàng)建陰影效果VRML光源與自然光源的主要差別在于不能自動產(chǎn)生陰影。自然界的光線無法穿過不透明的物體,當(dāng)光線照射這些物體時就會出現(xiàn)陰影。由于VRML中的光照只是對造型表面明暗程度的一種模擬,造型對光線沒有遮擋作用,光線可以透過造型完全照射到后面的物體上,所以VRML中的光照只能改變造型表面的明暗分布,不能自動產(chǎn)生陰影的效果。如果想在虛擬世界中模擬自然界的光照效果,則必須人工設(shè)置陰影造型。
陰影的形狀常常是造型沿光線照射方向形狀的壓縮和變形,一般利用Transform節(jié)點(diǎn)的scale域模擬陰影的形狀。陰影的顏色通常利用Material節(jié)點(diǎn)的域值設(shè)置為灰色或者半透明的深灰色。有些陰影形狀也可以借助于簡單造型來模擬。5.3創(chuàng)建霧化效果在vrml中使用Fog霧節(jié)點(diǎn)創(chuàng)建霧化效果,模擬自然界的大氣現(xiàn)象,使虛擬現(xiàn)實的場景更加逼真、更加具有層次感,創(chuàng)造一種朦朧的美。霧化效果主要控制兩個因素:一是霧的顏色,二是霧的濃度。霧的顏色可以按照實際情況任意選擇,但通常使用白色,因為白色更接近自然界霧的本色。霧的濃度與人在霧中的能見度相反,霧越濃人的能見度越差,因此可以通過設(shè)定觀察者能見范圍的大小來調(diào)整霧的濃淡程度。
Fog{exposedFieldSFColorcolor111exposedFieldSFStringfogType"LINEAR"exposedFieldSFFloatvisibilityRange0eventInSFBoolset_bindeventOutSFBoolisBound}5.4創(chuàng)建觀察視點(diǎn)和視點(diǎn)導(dǎo)航Viewpoint視點(diǎn)節(jié)點(diǎn)Viewpoint{eventInSFBoolset_bindexposedFieldSFFloatfieldOfView0.785398exposedFieldSFBooljumpTRUEexposedFieldSFRotationorientation0010exposedFieldSFVec3fposition0010fieldSFStringdescription""eventOutSFTimebindTimeeventOutSFBoolisBound}NavigationInfo導(dǎo)航節(jié)點(diǎn)
NavigationInfo{eventInSFBoolset_bindexposedFieldMFFloatavatarSize[0.25,1.6,0.75]exposedFieldSFBoolheadlightTRUEexposedFieldSFFloatspeed1.0exposedFieldMFStringtype"WALK"exposedFieldSFFloatvisibilityLimit0.0eventOutSFBoolisBound}第六章、造型的動畫效果和交互功能6.1造型的動畫效果6.2造型的交互功能6.1造型的動畫效果在現(xiàn)實世界中,很多東西都是隨時間發(fā)生變化的,例如太陽的升起和降落、花蕾的綻開和凋謝、樹葉由綠變黃、魚兒戲水、小鳥飛翔、汽車行駛、表針轉(zhuǎn)動等等。這些就是V盯住要在虛擬環(huán)境中,通過人為設(shè)置實現(xiàn)的動畫效果。VRML創(chuàng)建動畫效果的基本方法是:由時間傳感器控制動畫的時鐘,包括動畫開始的時間、停止的時間、循環(huán)的周期等:然后將時間控制參數(shù)作為事件傳送給各種插補(bǔ)器節(jié)點(diǎn),插補(bǔ)器依據(jù)事先設(shè)計好的時間關(guān)鍵點(diǎn)和動畫關(guān)鍵值,在瀏覽器渲染時形成連續(xù)變化的動畫效果。
特點(diǎn):隨時間改變
--位置、方向、顏色等
--VRML中:不斷改變節(jié)點(diǎn)的某個域的值兩個基本的控制條件:
--何時開始、何時結(jié)束
--變化速度根據(jù)所插值的數(shù)據(jù)類型不同插補(bǔ)器節(jié)點(diǎn)可分為六種:顏色差補(bǔ)器(ColorInterpolator節(jié)點(diǎn))、位置插補(bǔ)器(PositionInterpolator節(jié)點(diǎn))、朝向插補(bǔ)器(OrientationInterpolator節(jié)點(diǎn))、標(biāo)量插補(bǔ)器(ScalarInterpolator節(jié)點(diǎn))、坐標(biāo)插補(bǔ)器(CoordinateInterpolator節(jié)點(diǎn)〉、法向量插補(bǔ)器(NomalInterpolator節(jié)點(diǎn))。事件與路由節(jié)點(diǎn)由域和事件組成,其中域的取值決定了節(jié)點(diǎn)所創(chuàng)建的造型或場景環(huán)境的當(dāng)前狀態(tài);事件則為節(jié)點(diǎn)提供了接收外界信息或向外界發(fā)送信息的能力。事件是按照指定的路徑從一個節(jié)點(diǎn)發(fā)往另一個節(jié)點(diǎn)的信息,節(jié)點(diǎn)通過事件入口[也稱入事件(eventIn)]接收來自其他節(jié)點(diǎn)的信息改變自己原有域值,通過事件出口[也稱出事件(eventout)]發(fā)送自己的信息以改變其他節(jié)點(diǎn)的域值。從一個節(jié)點(diǎn)的事件出口到另一個節(jié)點(diǎn)的事件入口,用來傳送事件的路徑稱為路由(route)。通過路由可以將多個節(jié)點(diǎn)聯(lián)系在一起,形成事件體系,使事件得以傳播而引起節(jié)點(diǎn)域值的變化。路由(ROUTE)將兩個節(jié)點(diǎn)連接起來:
--輸出節(jié)點(diǎn)的名稱和eventOut域的名稱--輸入節(jié)點(diǎn)的名稱和eventIn域的名稱示例
ROUTEMySender.rotation_changedTOMyReceiver.set_rotationROUTE和TO必須大寫TimeSensor事件傳感器節(jié)點(diǎn)TimeSensor{exposedFieldSFTimecycleInterval1exposedFieldSFBoolenabledTRUEexposedFieldSFBoolloopFALSEexposedFieldSFTimestartTime0exposedFieldSFTimestopTime0eventOutSFTimecycleTimeeventOutSFFloatfraction_changedeventOutSFBoolisActiveeventOutSFTimetime}ColorInterpolator顏色插補(bǔ)器ColorInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFColorkeyValue[]eventOutSFColorvalue_changed}ScalarInterpolator標(biāo)量插補(bǔ)器ScalarInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFFloatkeyValue[]eventOutSFFloatvalue_changed}PositionInterpolator位置插補(bǔ)器PositionInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFVec3fkeyValue[]eventOutSFVec3fvalue_changed}OrientationInterpolator朝向插補(bǔ)器OrientationInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFRotationkeyValue[]eventOutSFRotationvalue_changed}CoordinateInterpolator坐標(biāo)插補(bǔ)器CoordinateInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFVec3fkeyValue[]eventOutMFVec3fvalue_changed}NormalInterpolator法向量插補(bǔ)器NormalInterpolator{eventInSFFloatset_fractionexposedFieldMFFloatkey[]exposedFieldMFVec3fkeyValue[]eventOutMFVec3fvalue_changed}6.2造型的交互功能
VRML場景中的造型能夠?qū)g覽者的動作做出反應(yīng),稱之為交互功能。虛擬現(xiàn)實技術(shù)的魅力在于憑借強(qiáng)大的交互功能,使瀏覽者在虛擬世界中如同身臨其境。例如,瀏覽者點(diǎn)擊電視開關(guān),可以播放影視片斷;走近賓館,大門可以自動打開:可以控制造型的位移或旋轉(zhuǎn)等等。大多數(shù)節(jié)點(diǎn)只能創(chuàng)建靜態(tài)造型,時間傳感器和插補(bǔ)器雖然可以使造型產(chǎn)生連續(xù)變化的動畫效果,但是動畫的起止時間和變化規(guī)律都是設(shè)計者事先預(yù)置的,瀏覽者只是觀賞而無法參與控制。要想實現(xiàn)人機(jī)交互,首先要感知瀏覽者的操作或者在場景中的觀察位置,然后對此操作或者位置移動做出反應(yīng)。
VRML使用七種傳感器節(jié)點(diǎn)完成感知和反應(yīng)的交互功能(時間傳感器除外,前面己介紹),其中包括:TouchSensor觸摸傳感器、PlaneSensor平面?zhèn)鞲衅鳌ylindersensor圓柱體傳感器、Spheresensor球體傳感器、ProximitySensor接近傳感器、VisibilitySensor可視傳感器、Collision碰撞傳感器。第一類傳感器:通過感知瀏覽者對于鼠標(biāo)的操作行為(移動鼠標(biāo)、點(diǎn)擊鼠標(biāo)、拖動鼠標(biāo)),觸發(fā)并輸出事件,實現(xiàn)人機(jī)交互的功能。這類傳感器有TouchSensor觸摸傳感器、PlaneSensor平面?zhèn)鞲衅鳌ylinderSensor圓柱體傳感器、SphereSensor球體傳感器。第二種傳感器:通過感知瀏覽者在虛擬場景中的觀察位置,也就是當(dāng)瀏覽者的視點(diǎn)與造型的接近程度達(dá)到一定范圍的時候,觸發(fā)并輸出事件,實現(xiàn)人機(jī)交互功能。這類傳感器有ProximitySensor接近傳感器、VisibilitySensor可視傳感器、Collision碰撞傳感器。
TouchSensor觸摸傳感器TouchSensor{exposedFieldSFBoolenabledTRUEeventOutSFVec3fhitNormal_changedeventOutSFVec3fhitPoint_changedeventOutSFVec2fhitTexCoord_changedeventOutSFBoolisActiveeventOutSFBoolisOvereventOutSFTimetouchTime}PlaneSensor平面?zhèn)鞲衅鱌laneSensor{exposedFieldSFBoolautoOffsetTRUEexposedFieldSFBoolenabledTRUEexposedFieldSFVec2fmaxPosition-1-1exposedFieldSFVec2fminPosition00exposedFieldSFVec3foffset000eventOutSFBoolisActiveeventOutSFVec3ftrackPoint_changedeventOutSFVec3ftranslation_changed}CylinderSensor圓柱體傳感器CylinderSensor{exposedFieldSFBoolautoOffsetTRUEexposedFieldSFFloatdiskAngle0.262exposedFieldSFBoolenabledTRUEexposedFieldSFFloatmaxAngle-1exposedField
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 闌尾炎手術(shù)患者的護(hù)理
- 2025年鉆頭套裝項目可行性研究報告
- 2025年視頻直播服務(wù)器項目可行性研究報告
- 2025年精制豆沙餡料項目可行性研究報告
- 提升城市安全韌性方案解析
- 數(shù)字財務(wù)人才培養(yǎng)的創(chuàng)新策略與實施方案
- 2025年汽車剎車片項目可行性研究報告
- 2024年圖書管理員考試出版文化試題及答案
- 2025年實木門窗門窗項目可行性研究報告
- 原廠產(chǎn)品介紹及銷售激勵方案
- 個人信息保護(hù)法試題
- 汽車租賃公司應(yīng)急救援預(yù)案
- 矯形器裝配工(四級)職業(yè)技能鑒定考試題庫(含答案)
- 砌石頭清包協(xié)議書
- 浙江省寧波市2025屆高三數(shù)學(xué)適應(yīng)性考試二模試題
- 中職計算機(jī)選修課程設(shè)計
- 胸腔閉式引流護(hù)理-中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)
- QBT 5243-2018 手包行業(yè)標(biāo)準(zhǔn)
- 內(nèi)科學(xué)課件:胰腺炎修改版
- 2024年河南省信陽市小升初數(shù)學(xué)試卷
- 《機(jī)械基礎(chǔ)》課程標(biāo)準(zhǔn)(中職)
評論
0/150
提交評論