




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
虛擬現(xiàn)實(shí)技術(shù)主講:楊文暉6動(dòng)動(dòng)態(tài)感感知虛擬擬現(xiàn)實(shí)節(jié)節(jié)點(diǎn)在VRML中,最具具特色的的“節(jié)點(diǎn)點(diǎn)”就是是具有動(dòng)動(dòng)態(tài)、交交互和感感知特性性的節(jié)點(diǎn)點(diǎn),其中中包括TimeSensor時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)動(dòng)畫插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)觸摸節(jié)點(diǎn)點(diǎn)感知節(jié)點(diǎn)點(diǎn)等。動(dòng)畫插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)在VRML中,動(dòng)畫畫插補(bǔ)器器節(jié)點(diǎn)可可以實(shí)現(xiàn)現(xiàn)模擬大大干世界界萬物的的變化。。包括的的動(dòng)畫控控制節(jié)點(diǎn)點(diǎn)有:PositionInterpolator位置插補(bǔ)補(bǔ)器OrientationInterpolator朝向插補(bǔ)補(bǔ)器節(jié)ScalarInterpolator標(biāo)量插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)ColorInterpolator顏色插補(bǔ)補(bǔ)器節(jié)CoordinateInterpolator坐標(biāo)插補(bǔ)補(bǔ)器NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)觸摸節(jié)點(diǎn)點(diǎn)VRML觸摸節(jié)點(diǎn)點(diǎn)在路由由的作用用下,動(dòng)動(dòng)畫插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)聯(lián)合使使用可以以產(chǎn)生更更加生動(dòng)動(dòng)、逼真真的動(dòng)態(tài)態(tài)交互效效果,使使觀測者者有身臨臨其境的的感覺。。觸摸節(jié)節(jié)點(diǎn)有::由TouchSensor觸摸傳感感器節(jié)點(diǎn)點(diǎn)PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)SphereSensor球面檢測測器節(jié)點(diǎn)點(diǎn)感知節(jié)點(diǎn)點(diǎn)VRML感知節(jié)點(diǎn)點(diǎn)已具有有初級(jí)智智能作用用,是VRML最具代表表性節(jié)點(diǎn)點(diǎn),也是非常常重要的的節(jié)點(diǎn)。。感知節(jié)節(jié)點(diǎn)包括括:VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)ProximtitySensor親近度傳傳感器節(jié)節(jié)點(diǎn)Collision碰撞傳感感器節(jié)點(diǎn)點(diǎn)6.1時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)在現(xiàn)實(shí)世世界中,,萬物的的變化往往往是自自動(dòng)的,,而且是是有一定定規(guī)律的的,即不不是隨人人的意志志而改變變。這就就需要在在VRML虛擬世界界中,創(chuàng)創(chuàng)建出能自動(dòng)變變化而不不需要人人為改變變的造型型。我們可以以通過設(shè)定時(shí)間間按某種種規(guī)律變變化來控控制造型型變化,而控制制時(shí)間按按某種規(guī)規(guī)律變化化最常見見的就是是時(shí)間傳傳感器。。TimeSenor時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)的作用用就是創(chuàng)建一個(gè)個(gè)虛擬時(shí)鐘鐘,并對(duì)其他他節(jié)點(diǎn)發(fā)送時(shí)間間值,控制VRML立體空間間的動(dòng)態(tài)態(tài)對(duì)象的的開始、變變化和結(jié)結(jié)果過程程的時(shí)間間,實(shí)現(xiàn)空間間物體造造型的移動(dòng)、變變色、變變形等自自動(dòng)變化化。TimeSensor時(shí)間傳感感器又包包含絕對(duì)時(shí)間間(AbsoluteTime)和部分時(shí)間間(FractionalTime)兩個(gè)概念念。絕對(duì)時(shí)間間是以秒秒為單位位計(jì)算的的。在絕絕對(duì)時(shí)間間內(nèi),1秒發(fā)生在在絕對(duì)日日期的時(shí)時(shí)間經(jīng)過過1秒之后,,如2003年6月16日08點(diǎn)58分59秒,經(jīng)過過1秒鐘變?yōu)闉?003年6月16日08點(diǎn)59分。部分時(shí)間間又稱相相對(duì)時(shí)間間,是空空間物體體運(yùn)動(dòng)從從某一時(shí)時(shí)刻0.0開始運(yùn)動(dòng)動(dòng)一直到到1.0為止。從從0.0時(shí)刻到1.0時(shí)刻稱為為相對(duì)時(shí)時(shí)間,相相對(duì)時(shí)間間的差可可以是絕絕對(duì)時(shí)間間的30秒,10分鐘或1小時(shí)等,,這段時(shí)時(shí)間差也也稱為動(dòng)動(dòng)態(tài)對(duì)象象的運(yùn)動(dòng)動(dòng)周期。。TimeSensor時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)在VRML中并不產(chǎn)生生任何造造型和可可視效果果。其作用用只是向各插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)輸出事事件,以使插插補(bǔ)器節(jié)節(jié)點(diǎn)產(chǎn)生生所需要要的動(dòng)畫畫效果。。該節(jié)點(diǎn)可可以包含含在任何何組節(jié)點(diǎn)點(diǎn)中作為為子節(jié)點(diǎn)點(diǎn),但獨(dú)獨(dú)立于所所選用的的坐標(biāo)系系。TimeSensor時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)各種插補(bǔ)器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)TimeSensor節(jié)點(diǎn)語法法TimeSensor{enableTRUE##exposedFieldSFBoolstartTime0.0##exposedFieldSFTimestopTime0.0##exposedFieldSFTimecycleInterval1.0##exposedFieldSFTimeloopFALSE##exposedFieldSFBoolisActive##eventOutSFTimeTime##eventOutSFTimecycleTime##eventOutSFTimefraction_changed##eventOutSFFloat}域名和域域值詳解解cycleInterval域的域值值定義了一一個(gè)時(shí)間間長度,,用來說說明這這個(gè)時(shí)間間傳感器器從0.0時(shí)刻到1.0時(shí)刻之間間的周期期間隔,,單位為為秒。該該域值必必須大于于0.0,其默認(rèn)認(rèn)值為1.0秒。Enabaled域的域值值定義了時(shí)時(shí)間傳感感器的打打開或關(guān)關(guān)閉。該該域值為為布爾量量。若為為TRUE,時(shí)間傳傳感器被被打開;;若為FALSE時(shí),時(shí)節(jié)節(jié)傳感器器被關(guān)閉閉。其默默認(rèn)值為為TRUE。loop域的值定義了時(shí)時(shí)間傳感感器是否否循環(huán)輸輸出。該該域值為為布爾量量。如果果為TRUE,則時(shí)間間傳感器器會(huì)自動(dòng)動(dòng)循環(huán),,一直到到停止時(shí)時(shí)間為止止;如果果為FALSE,時(shí)間傳傳感器不不循環(huán),,只經(jīng)過過一個(gè)周周期后,,就會(huì)自自動(dòng)停止止。其默默認(rèn)值為為FALSE。(4)startTime域的值定義了時(shí)時(shí)間傳感感器開始始輸出事事件的時(shí)時(shí)間(絕對(duì)時(shí)間間)。該域值值的默認(rèn)認(rèn)值為0.0秒。(5)stopTime域的值定義了時(shí)時(shí)間傳感感器停止止輸出事事件的時(shí)時(shí)間(絕對(duì)時(shí)間間)。該域值值的默認(rèn)認(rèn)值為0.0秒。上述startTime和stopTime,cycleInterval和loop域值共同同控制著著時(shí)間傳傳感器的的事件輸輸出。當(dāng)當(dāng)這4個(gè)域同時(shí)時(shí)使用時(shí)時(shí),根據(jù)據(jù)這4個(gè)域值之之間的關(guān)關(guān)系,決決定時(shí)間間傳感器器的工作作狀態(tài)。。6.2VRML動(dòng)畫控制制節(jié)點(diǎn)在VRML中,動(dòng)畫畫控制節(jié)節(jié)點(diǎn)是用用來實(shí)現(xiàn)動(dòng)畫畫效果的,在現(xiàn)現(xiàn)實(shí)世界界中,萬萬物都是是在變化化著的,,如太陽陽的升落落,樹葉葉由綠變變黃等,,這些都都是自然然界中實(shí)實(shí)現(xiàn)的動(dòng)動(dòng)畫效果果。在VRML中也可以以實(shí)現(xiàn)同同樣動(dòng)畫畫效果,,使VRML世界更加加生動(dòng)、、真實(shí)。。VRML提供了多多個(gè)用來來控制動(dòng)動(dòng)畫的插插補(bǔ)器。。插補(bǔ)器(Interpolator)節(jié)點(diǎn)是為線性關(guān)鍵鍵幀動(dòng)畫畫而設(shè)計(jì)的的,其采用一組關(guān)鍵鍵數(shù)值,且每個(gè)關(guān)鍵鍵值對(duì)應(yīng)應(yīng)一種狀狀態(tài)。這個(gè)狀狀態(tài)允許許以各種種形式表表示,如如SFVec3f或SFColor,瀏覽器會(huì)會(huì)根據(jù)這這些狀態(tài)態(tài)生成連連續(xù)的動(dòng)動(dòng)畫。一般來說說,瀏覽覽器在兩兩個(gè)相鄰鄰關(guān)鍵幀幀之間生生成的連連續(xù)幀是是線性的的。插補(bǔ)器節(jié)節(jié)點(diǎn)可根根據(jù)其所所插值的的類型不不同分為為6種:①位置插補(bǔ)器(PositionInterpolator)②朝向插補(bǔ)器(OrientationInterpolator)③顏色插補(bǔ)器(ColorInterpolator)④標(biāo)量插補(bǔ)器(ScalarInterpolator)。⑤坐標(biāo)插補(bǔ)器(CoordinateInterpolator)⑥法線插補(bǔ)器(NormalInterpolator)6.2..1PositionInterpolator位置插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)PositionInterpolator位置插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)是空間造型型位置移移動(dòng)節(jié)點(diǎn)點(diǎn),用來來描述一一系列用用于動(dòng)畫畫的關(guān)鍵鍵值,使使物體移移動(dòng)形成成動(dòng)畫。。該節(jié)點(diǎn)不不創(chuàng)建任任何造型型,在一一組SFVec3f值之間進(jìn)進(jìn)行線性性插值,,適合于于對(duì)于平平移進(jìn)行行插值PositionInterpolator位置插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)如圖圖Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)PositionInterpolator位置插補(bǔ)器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)PositionInterpolator{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的值定義了一一張變化化時(shí)刻關(guān)關(guān)鍵值列列表。每每一個(gè)時(shí)時(shí)間值都都代表全全部動(dòng)態(tài)態(tài)時(shí)間中中的一個(gè)個(gè)相對(duì)時(shí)時(shí)間,每每個(gè)時(shí)刻刻值一般般在0.0與1.0之間,并并且由0依次到1。然而關(guān)關(guān)鍵時(shí)刻刻值可以以是任意意大小的的正值或或負(fù)值,,但必須須以遞增增的順序序排列,,其默認(rèn)認(rèn)值是一一張空列列表[]。(2)keyValue域的值定義了一一組三維維坐標(biāo)值值列表。。每一組組坐標(biāo)值值都對(duì)應(yīng)應(yīng)key域值中的的一個(gè)相相對(duì)時(shí)間間段,其其默認(rèn)值值是一張張空列表表[]。事件說明明(1)set__fraction為入事件件(eventIn),當(dāng)接收收到一個(gè)個(gè)時(shí)刻值值時(shí),PositionInterpolator節(jié)點(diǎn)計(jì)算算出基于于關(guān)鍵位位置表和和相關(guān)的的關(guān)鍵時(shí)時(shí)刻的一一個(gè)位置置,并通通過value_changed事件出口口輸出新新的位置置列表。。(2)value_changed為出事件件(eventOut),將信息息傳送給給目標(biāo)節(jié)節(jié)點(diǎn),傳傳遞內(nèi)容容為一組組方位值值。為了更好好的理解解、掌握握和控制制動(dòng)畫的的插補(bǔ)器實(shí)實(shí)現(xiàn)動(dòng)畫畫過程,結(jié)合下下面實(shí)例例將動(dòng)畫所所需時(shí)間間傳感器器相對(duì)時(shí)時(shí)間的邏邏輯值和和空間坐坐標(biāo)的位位置值對(duì)對(duì)應(yīng)起來來,如圖圖6-3所示。再結(jié)合空空間物體體造型的的立體空空間坐標(biāo)標(biāo)示意圖圖,如圖圖6-4所示,可可以更好好的理解解和掌握握VRML具有動(dòng)態(tài)態(tài)交互互的各個(gè)個(gè)節(jié)點(diǎn)。。keykeyValue0.0
000
#從坐標(biāo)原點(diǎn)出發(fā)0.2
00-200.4
85-200.5
8-5-20
#經(jīng)過曲折路徑0.6-8-5-200.8-85-200.9
00-2001.0
000
#返回原點(diǎn)相對(duì)時(shí)間間的邏輯輯值空空間坐標(biāo)標(biāo)的位置置對(duì)應(yīng)值值key0.0keyValue(000)(00-200)keyValue(85-20)keyValue(8-5-20)keyValue(-8-5-20)keyValue(-85-20)keyValuekeyValue(00-20)key0.2圖6-4立體空間間物體造造型移動(dòng)動(dòng)軌跡的的立體空空間坐標(biāo)標(biāo)示意圖圖使用位置置插補(bǔ)器器節(jié)點(diǎn),,引入VRML飛碟空空間造型型;在時(shí)時(shí)間傳感感器與位位置插補(bǔ)補(bǔ)器共同同作用下下,使飛飛碟沿著著指定路路徑飛馳馳;從坐坐標(biāo)原點(diǎn)點(diǎn)出發(fā),,經(jīng)過曲曲折的路路徑最后后返回原原點(diǎn),并并循環(huán)往往復(fù)運(yùn)行行。實(shí)例例6--1路由把每每一個(gè)節(jié)節(jié)點(diǎn)聯(lián)系系起來,,其中,,fraction__changed為時(shí)時(shí)間傳感感器的出出事件傳傳送給位位置插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)的set_fraction入事事件,然然后再由由位置插插補(bǔ)器節(jié)節(jié)點(diǎn)的value_changed出事件件傳遞給給立體空空間造型型飛碟中中坐標(biāo)變變換節(jié)點(diǎn)點(diǎn)的暴露露域set_translation入時(shí)時(shí)間,從從而實(shí)現(xiàn)現(xiàn)飛碟的的飛行。。飛碟如何何運(yùn)動(dòng)??范范例6-26.2..20rientationInterpolator朝向插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)0rientationInterpolator朝向插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)是方位變換換節(jié)點(diǎn),用來描述述一系列列在動(dòng)畫畫中使用用的旋轉(zhuǎn)轉(zhuǎn)值。該節(jié)點(diǎn)不不創(chuàng)建任任何造型型,可以以在不同同時(shí)刻旋旋轉(zhuǎn)到所所對(duì)應(yīng)的的方位(朝向)。通過使用用該節(jié)點(diǎn)點(diǎn),可以以使造型型旋轉(zhuǎn)。。orientationInterpolator朝向插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)0rientationInterpolator位置插補(bǔ)器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)OrientationInterpolator節(jié)點(diǎn)語法法OrientationInterpolator{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的域值值定義了一一組相對(duì)對(duì)時(shí)間間間隔的時(shí)時(shí)間關(guān)鍵鍵值。時(shí)時(shí)間值一一般在0.0和1.0之間,并并且由0依次到1以遞增的的順序排排列。其其默認(rèn)值值是一張張空列表表[]。(2)keyValue域的域值值定義了一一個(gè)三維維旋轉(zhuǎn)關(guān)關(guān)鍵值的的列表。。每一個(gè)個(gè)旋轉(zhuǎn)關(guān)關(guān)鍵值是是一個(gè)4個(gè)值的組組,前3個(gè)值指定定了一個(gè)個(gè)旋轉(zhuǎn)軸軸的X、Y和Z分量,第第4個(gè)值指定定了旋轉(zhuǎn)轉(zhuǎn)軸的一一個(gè)旋轉(zhuǎn)轉(zhuǎn)角度。。其默認(rèn)認(rèn)值是一一張空列列表[]。(1)set_fraction為入事件件(eventIn)),當(dāng)接收收到一個(gè)個(gè)時(shí)刻值值時(shí),OrientationInterpolator朝向插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)根據(jù)關(guān)關(guān)鍵時(shí)刻刻列表和和其對(duì)應(yīng)應(yīng)關(guān)鍵旋旋轉(zhuǎn)列表表計(jì)算出出一個(gè)關(guān)關(guān)鍵旋轉(zhuǎn)轉(zhuǎn)子列表表,并通通過value_changed事件出口口輸出新新算出的的旋轉(zhuǎn)列列表。(2)value_changed為出事件件(eventOut),把信息息傳送給給目標(biāo)節(jié)節(jié)點(diǎn),傳傳遞內(nèi)容容為一組組方位值值。在藍(lán)色背背景下,,使用時(shí)時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)、內(nèi)聯(lián)聯(lián)節(jié)點(diǎn)和和朝向插插補(bǔ)器節(jié)節(jié)點(diǎn)使飛飛船沿Y軸旋轉(zhuǎn)180°°,且循環(huán)環(huán)執(zhí)行。。vrml6-3..wrl6.2..3ScalarInterpolator標(biāo)量插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)ScalarInterpolator標(biāo)量插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)是強(qiáng)度變換換動(dòng)態(tài)節(jié)點(diǎn)點(diǎn),描述述的是在在動(dòng)畫中中使用的的一系列列關(guān)鍵值值。該節(jié)點(diǎn)不不創(chuàng)建任任何造型型,在一一組SFFloat值之間進(jìn)進(jìn)行線性性插值,,這個(gè)插插值適合合于用簡簡單的浮浮點(diǎn)值定定義的任任何參數(shù)數(shù)。使用ScalarInterpolator標(biāo)量插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)和TimeSensor時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)來改變變光線節(jié)節(jié)點(diǎn)中的的Intensity域的域值值(光線強(qiáng)度度),使光線線強(qiáng)度隨隨時(shí)間的的改變而而變化,,實(shí)現(xiàn)動(dòng)動(dòng)態(tài)效果果。ScalarInterpolator標(biāo)量插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)ScalarInterpolator標(biāo)量插補(bǔ)器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)DirectionalLight方向光源節(jié)點(diǎn)ScalarInterpolator節(jié)點(diǎn)語法法ScalarInterpolator{{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的域值值提供了一一組時(shí)間間關(guān)鍵值值列表,,每個(gè)時(shí)時(shí)間值代代表一個(gè)個(gè)相對(duì)時(shí)時(shí)間段的的值,該該時(shí)間值值一般在在0.0和1.0之間,但但必須以以遞增的的順序排排列。其其默認(rèn)值值是一張張空列表表[]。(2)keyValue域的值指定了一一系列三三維坐標(biāo)標(biāo)值。每每一組坐坐標(biāo)值都都對(duì)應(yīng)key域的域值值中的一一個(gè)相對(duì)對(duì)時(shí)間段段的值。。其默認(rèn)認(rèn)值為一一個(gè)空的的序列[]。(1)set__fraction為入事件件(eventIn),當(dāng)收到到一個(gè)時(shí)時(shí)刻值時(shí)時(shí),ScalarInterpolator節(jié)點(diǎn)根據(jù)據(jù)關(guān)鍵值值的序列列和它們們對(duì)應(yīng)的的關(guān)鍵時(shí)時(shí)刻值,,計(jì)算一一個(gè)浮點(diǎn)點(diǎn)值,并并通過value_changed事件出口口輸出計(jì)計(jì)算后的的浮點(diǎn)值值。(2)value_changed為出事件件(ewntOut),它把信信息傳送送給目標(biāo)標(biāo)節(jié)點(diǎn),,傳遞內(nèi)內(nèi)容為一一組方位位值。ScalarInterpolator節(jié)點(diǎn)還可可以用來來控制VRML造型的透透明度,,通過控控制Mateirial節(jié)點(diǎn)的transparency域值,使使造型的的透明度度改變vrml6-4..wrl在立體空空間背景景下,利利用方向向光源節(jié)節(jié)點(diǎn)、時(shí)時(shí)間傳感感器、內(nèi)內(nèi)聯(lián)節(jié)點(diǎn)點(diǎn)和標(biāo)量量插補(bǔ)器器節(jié)點(diǎn),,使平行行光源的的光照強(qiáng)強(qiáng)度發(fā)生生變化,,創(chuàng)建動(dòng)動(dòng)態(tài)視覺覺效果vrml6-5..wrl讓空間球球體的透透明度發(fā)發(fā)生變化化,從而而使啞鈴鈴的可見見度也發(fā)發(fā)生變化化6.2..4ColorInterpolator顏色插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)ColorInterpolator顏色插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)是用來來表示顏顏色間插插值的節(jié)節(jié)點(diǎn),使使立體空空間場景與造造型顏色色發(fā)生變變化。該節(jié)點(diǎn)并并不創(chuàng)建建造型,,在VRML場景中是是看不見見的。該節(jié)點(diǎn)可可以作為為任何編編組節(jié)點(diǎn)點(diǎn)的子節(jié)節(jié)點(diǎn),但但又獨(dú)立立于所使使用的坐坐標(biāo)系,,即不受受坐標(biāo)系系的限制制。ColorInterpolator顏色插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)ColorInterpolator顏色插補(bǔ)器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)DirectionalLight方向光源節(jié)點(diǎn)ColorInterpolator節(jié)點(diǎn)語法法ColorInterpolator{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的域值值提供了一一組時(shí)間間關(guān)鍵值值列表,,每個(gè)時(shí)時(shí)間值代代表一個(gè)個(gè)相對(duì)時(shí)時(shí)間段的的值,該該時(shí)間值值一般在在0.0至1.0之間,但但必須以以遞增的的順序排排列。其其默認(rèn)值值是一張張空列表表[]。(2)keyValue域的值指定了一一系列三三維坐標(biāo)標(biāo)的關(guān)鍵鍵RGB色彩值。。每個(gè)RGB色彩都是是由在0.0至1.0區(qū)間內(nèi)的的3個(gè)浮點(diǎn)數(shù)數(shù)所表示示的,它它們分別別表示混混合色中中紅、綠綠、藍(lán)的的數(shù)值。。每一組組坐標(biāo)值值都對(duì)應(yīng)應(yīng)key域的域值值中的一一個(gè)相對(duì)對(duì)時(shí)間段段的值。。其默認(rèn)認(rèn)值為一一張空列列表[]。(1)set_fraction為入事件件(eventIn),當(dāng)收到到一個(gè)時(shí)時(shí)刻值時(shí)時(shí),ColorInterpolator顏色插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)就在關(guān)關(guān)鍵色彩彩值和它它們相應(yīng)應(yīng)的關(guān)鍵鍵時(shí)間值值的基礎(chǔ)礎(chǔ)上計(jì)算算出一個(gè)個(gè)RGB色彩值,,并通過過value_changed出事件輸輸出該RGB色彩值。。(2)value__changed為出事件件(eventOut)),用來輸輸出計(jì)算算后的RGB色彩值。。[實(shí)例6-6]]利用方向向光源節(jié)節(jié)點(diǎn)、時(shí)時(shí)間傳感感器節(jié)點(diǎn)點(diǎn)、內(nèi)聯(lián)聯(lián)節(jié)點(diǎn)及及顏色插插補(bǔ)器節(jié)節(jié)點(diǎn)來改改變顏色色,實(shí)現(xiàn)現(xiàn)動(dòng)態(tài)控控制顏色色的變化化的效果果,并在在場景中中利用路路由控制制和傳遞遞信息vrml6-6..wrlvrml6-7..wrl6.2..5CoordinateInterpolator坐標(biāo)插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)CoordinateInterpolator坐標(biāo)插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)是表示示坐標(biāo)插值值的節(jié)點(diǎn),,該節(jié)點(diǎn)點(diǎn)在一組組MFVec3f值之間進(jìn)進(jìn)行線性性插值。。通過使用用該節(jié)點(diǎn)點(diǎn),可以以使一個(gè)個(gè)造型的的組成坐坐標(biāo)發(fā)生生變化。。同ColorInterpolator節(jié)點(diǎn)一樣樣,CoordinateInterpolator節(jié)點(diǎn)也不不創(chuàng)建任任何造型型,在VRML場景中也也是不可可見的。。坐標(biāo)插補(bǔ)補(bǔ)器的作作用是利用坐標(biāo)標(biāo)點(diǎn)的移移動(dòng)實(shí)現(xiàn)現(xiàn)動(dòng)畫。。通過使使用CoordinateInterpolator節(jié)點(diǎn),可可使VRML中的物體體造型上上的各個(gè)個(gè)坐標(biāo)點(diǎn)點(diǎn)形成獨(dú)獨(dú)自的運(yùn)運(yùn)動(dòng)軌跡跡,可以以使物體體造型改改變運(yùn)動(dòng)動(dòng)方向。。CoordinateInterpolator坐標(biāo)插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)CoordinateInterpolator顏色插補(bǔ)器節(jié)點(diǎn)ROUTE路由Shape模型節(jié)點(diǎn)CoordinateInterpolator坐標(biāo)插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法CoordinateInterpolator{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的域值值提供了一一組時(shí)間間關(guān)鍵值值列表,,每個(gè)時(shí)時(shí)間值代代表一個(gè)個(gè)相對(duì)時(shí)時(shí)間段的的值。該該時(shí)間值值一般在在0.0至1.0之間,但但必須以以遞增的的順序排排列。其其默認(rèn)值值是一張張空列表表1)。(2)keyValue域的值指定了一一系列三三維坐標(biāo)標(biāo)的列表表。每一一個(gè)坐標(biāo)標(biāo)都包含含3個(gè)浮點(diǎn)數(shù)數(shù)值,分分別為向向量的X、Y和Z分量。每每一組坐坐標(biāo)值都都對(duì)應(yīng)key域的域值值中的一一個(gè)相對(duì)對(duì)時(shí)間段段的值。。其默認(rèn)認(rèn)值為一一張空的的列表[]。(1)set_fraction為入事件件(eventIn),當(dāng)收到到一個(gè)時(shí)時(shí)刻值時(shí)時(shí),CoordinateInterpolator節(jié)點(diǎn)就依依據(jù)關(guān)鍵鍵時(shí)刻列列表和它它們相對(duì)對(duì)應(yīng)的關(guān)關(guān)鍵坐標(biāo)標(biāo)子列表表計(jì)算出出一張坐坐標(biāo)的子子列表,,并通過過value_changed出事件輸輸出新的的坐標(biāo)列列表。(2)value__changed為出事件件(eventOut)),用來輸輸出計(jì)算算后的新新的坐標(biāo)標(biāo)列表值值。[實(shí)例6-8]]使用坐標(biāo)標(biāo)插補(bǔ)器器節(jié)點(diǎn)和和時(shí)間傳傳感器節(jié)節(jié)點(diǎn),并并利用面面節(jié)點(diǎn)控控制面的的尺寸大大小,從從而使立立體空間間造型產(chǎn)產(chǎn)生循環(huán)環(huán)運(yùn)動(dòng)的的動(dòng)畫效效果,也也可以使使造型畸畸形變化化。vrml6-8..wrlvrml6-9..wrl6.2..6NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)可以改改變法向向量Normal節(jié)點(diǎn)中vector域的域值值。vector域的域值值定義了了一個(gè)法法向量列列表(XYZ)),法向量量Normal節(jié)點(diǎn)是面面節(jié)點(diǎn)和和海拔柵柵格節(jié)點(diǎn)點(diǎn)中的一一個(gè)節(jié)點(diǎn)點(diǎn)。NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)在時(shí)間間傳感器器的配合合下,產(chǎn)產(chǎn)生虛擬擬世界的的各種逼逼真的動(dòng)動(dòng)感效果果。NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)NormalInterpolator顏色插補(bǔ)器節(jié)點(diǎn)ROUTE路由Shape模型節(jié)點(diǎn)NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)語法NormalInterpolator{key[[]##exposedFieldMFFloatkeyValue[[]]##exposedFieldMFVec3fset__faction##eventInSFFloatvalue_changed##eventOutSFVec3f}域名和域域值詳解解(1)key域的域值值提供了一一組時(shí)間間關(guān)鍵值值列表,,每個(gè)時(shí)時(shí)間值代代表一個(gè)個(gè)相對(duì)時(shí)時(shí)間段的的值。該該時(shí)間值值一般在在0.0至1.0之間,但但必須以以遞增的的順序排排列。其其默認(rèn)值值是一張張空列表表[]。(2)keyValue域的值指定了一一系列法法向量列列表。每每一個(gè)坐坐標(biāo)都包包含3個(gè)浮點(diǎn)數(shù)數(shù)值,分分別為向向量的X、Y和Z分量。每每一組坐坐標(biāo)值都都對(duì)應(yīng)key域的域值值中的一一個(gè)相對(duì)對(duì)時(shí)間段段的值。。其默認(rèn)認(rèn)值為一一個(gè)空的的列表[]。(1)set__fraction為入事件件(eventIn),當(dāng)收到到一個(gè)時(shí)時(shí)刻值時(shí)時(shí),NormalInterpolator法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)就依據(jù)據(jù)關(guān)鍵時(shí)時(shí)刻列表表和它們們相對(duì)應(yīng)應(yīng)的關(guān)鍵鍵法向量量列表計(jì)計(jì)算出一一個(gè)法向向量子列列表,通通過Ⅷ如echanged出事件輸輸出新的的法向量量列表。。(2)value_changed為出事件件(eventOut)),用來輸輸出計(jì)算算后的新新法向量量列表值值。[實(shí)例6-10]在藍(lán)色立立體空間間背景下下,利用用模型節(jié)節(jié)點(diǎn)、面面節(jié)點(diǎn)、、時(shí)間傳傳感器節(jié)節(jié)點(diǎn)及法法線插補(bǔ)補(bǔ)器節(jié)點(diǎn)點(diǎn)使立體體空間造造型的兩兩個(gè)垂直直面在法法向量的的控制下下產(chǎn)生變變化的效效果vrml6-10.wrl6.3VRML觸摸檢測測器節(jié)點(diǎn)點(diǎn)實(shí)現(xiàn)VRML的交互功功能,需需要設(shè)計(jì)計(jì)觸動(dòng)檢檢測器或或傳感器器。在VRML虛擬世界界中,用用戶與虛虛擬現(xiàn)實(shí)實(shí)世界之之間的交交互是通通過一系系列檢測器節(jié)節(jié)點(diǎn)來實(shí)現(xiàn)的的,通過過使用這這些檢測測器節(jié)點(diǎn)點(diǎn),使瀏瀏覽器感感知用戶戶的各種種操作,,比如開開門、旋旋轉(zhuǎn)、移移動(dòng)和飛飛行等。。這樣用用戶就可可以和VRML虛擬世界界中的三三維對(duì)象象直接進(jìn)進(jìn)行交互互。觸動(dòng)檢測測器是用來檢測測用戶的的觸動(dòng)動(dòng)動(dòng)作的,其中中包括TouchSensor節(jié)點(diǎn)Planesensor節(jié)點(diǎn)CylinderSensorr節(jié)點(diǎn)SphereSensor節(jié)點(diǎn)等6.3..1TouchSensor觸摸傳感感器節(jié)點(diǎn)點(diǎn)TouchSensor觸摸傳感感器節(jié)點(diǎn)點(diǎn)是瀏覽者與與虛擬對(duì)對(duì)象之間間相接觸觸型傳感感器節(jié)點(diǎn)點(diǎn)。TouchSensor觸摸傳感感器節(jié)點(diǎn)點(diǎn)創(chuàng)建了了一個(gè)檢檢測用戶戶動(dòng)作并并將其轉(zhuǎn)轉(zhuǎn)化后輸輸出,以以觸發(fā)一一個(gè)動(dòng)畫畫的檢測測器。它它用來測測試用戶戶觸摸事事件的檢檢測器。。該節(jié)點(diǎn)可可以為任任何成組組節(jié)點(diǎn)的的子節(jié)點(diǎn)點(diǎn),并感感知用戶戶對(duì)該組組節(jié)點(diǎn)的的動(dòng)作。。TouchSensor觸摸傳感感器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)各種插補(bǔ)檢測器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)TouchSensor觸摸傳感器節(jié)點(diǎn)TouchSensor節(jié)點(diǎn)語法法(觸摸傳感感器節(jié)點(diǎn)點(diǎn))TouchSensor{enableTRUE##exposedFieldSFBoolisActive##eventOutSFBoolisOver##eventOutSFBooltouchTime##eventOutSFVec3fhitPoint_changed##eventOutSFVec3fhitNormal__changed##eventOutSFVec3fhitTexcood_changed##eventOutSFVec3f}域名和域域值詳解解enabled域的域值值定義了一一個(gè)開關(guān)關(guān),即是是否激活活觸摸傳傳感檢測測器。當(dāng)當(dāng)該域值值為TRUE時(shí),該檢檢測器允允許被用用戶激活活,并產(chǎn)產(chǎn)生輸出出;當(dāng)該該域值為為FALSE時(shí),用戶戶無法激激活該檢檢測器。。該域值值的默認(rèn)認(rèn)值為TRUE。事件說明明(1)isOver為出事件件,當(dāng)用用戶的鼠鼠標(biāo)位于于被感應(yīng)應(yīng)的三維維對(duì)象上上方時(shí),,將引發(fā)發(fā)isOver事件,且且該事件件為TRUE。反之,,當(dāng)用戶戶的鼠標(biāo)標(biāo)不在被被感應(yīng)的的三維對(duì)對(duì)象上方方時(shí),該該事件值值為FALSE。(2)hitPoint__changed為出事件件,當(dāng)用用戶在被被感應(yīng)的的幾何圖圖形(由isOver指定)上單擊鼠鼠標(biāo)時(shí),,發(fā)送該該值。其其值表示示對(duì)象上上點(diǎn)的坐坐標(biāo)。(3)hitNormal_changed為出事件件,當(dāng)用用戶在被被感應(yīng)的的幾何圖圖形(由isOver指定)上單擊鼠鼠標(biāo)時(shí),,發(fā)送該該值。其其值表示示對(duì)象上上點(diǎn)的表表面法向向量。(4)hitTexCoord__changed為出事件件,當(dāng)用用戶在被被感應(yīng)的的幾何圖圖形(由isOver指定)上單擊鼠鼠標(biāo)時(shí),,發(fā)送該該值。其其值表示示對(duì)象上上點(diǎn)的紋紋理坐標(biāo)標(biāo)。紋理理坐標(biāo)功功能是VRML中很重要要的一個(gè)個(gè)功能。。我們使使用這一一功能可可以像HTML網(wǎng)頁一樣樣實(shí)現(xiàn)在在一幅貼貼圖上面面劃分多多個(gè)區(qū)域域,然后后將每個(gè)個(gè)區(qū)域設(shè)設(shè)置各自自的交互互。(5)isActive為出事件件,當(dāng)用用戶單擊擊對(duì)象時(shí)時(shí),檢測測器被激激活,該該域值由由FALSE變?yōu)門RUE;反之當(dāng)當(dāng)檢測器器失效時(shí)時(shí),該域域值將由由TRUE變?yōu)镕ALSE。(6)touchTime為出事件件,當(dāng)isOver為TRUE,而isActive為FALSE時(shí)發(fā)送該該事件,,所發(fā)送送的值是是系統(tǒng)當(dāng)當(dāng)前的時(shí)時(shí)間。[實(shí)例6-11]在藍(lán)色立立體空間間背景下下,首先先將光標(biāo)標(biāo)移到飛飛碟立體體空間造造型上,,當(dāng)出現(xiàn)現(xiàn)觸摸圖圖標(biāo)時(shí),,一直按按住鼠標(biāo)標(biāo)左鍵不不放開,,這時(shí)在在屏幕上上會(huì)看見見一個(gè)在在觸摸節(jié)節(jié)點(diǎn)觸發(fā)發(fā)下飛行行的飛碟碟第一個(gè)路路由是把把(Touch.isActive)觸摸傳傳感器節(jié)節(jié)點(diǎn)鼠標(biāo)標(biāo)按下時(shí)時(shí)間的”TRUE”傳送給((Time.enabled)時(shí)間傳傳感器節(jié)節(jié)點(diǎn)的控控制開關(guān)關(guān)“enabled”,使enabled由“FALSE”變成““TRUE”第二個(gè)路路由是把把(Touch.touchTime)觸摸傳傳感器節(jié)節(jié)點(diǎn)的單單擊事件件的發(fā)生生時(shí)間傳傳送給((Time.startTime)時(shí)間傳傳感器的的開始時(shí)時(shí)間第三個(gè)路路由是把把(Time.fraction_changed)時(shí)間傳傳感器的的執(zhí)行一一段時(shí)間間值傳送送給(flyinter.set__fraction)移動(dòng)位位置節(jié)點(diǎn)點(diǎn)的一個(gè)個(gè)時(shí)間片片。第四個(gè)路路由是把把(flyinter.value_changed)移動(dòng)位位置節(jié)點(diǎn)點(diǎn)的一組組值傳送送給目標(biāo)標(biāo)節(jié)點(diǎn)((flyinter.set__translation)使飛碟碟沿著設(shè)設(shè)定的路路徑飛行行。6.3..2PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)是使虛虛擬對(duì)象象在X-Y平面移動(dòng)動(dòng)型傳感器節(jié)節(jié)點(diǎn)。PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)能感應(yīng)應(yīng)到觀察察者的拖拖動(dòng)行為為,進(jìn)而而改變虛虛擬現(xiàn)實(shí)實(shí)對(duì)象的的位置但但是不能能改變方方位,而且只限限定于X-Y平面。當(dāng)當(dāng)觀察者者拖動(dòng)虛虛擬造型型時(shí),光光標(biāo)會(huì)在在虛擬造造型上變變?yōu)橐粋€(gè)個(gè)收裝的的光標(biāo)。。該節(jié)點(diǎn)創(chuàng)創(chuàng)建了一一個(gè)可將將瀏覽者者的動(dòng)作作轉(zhuǎn)換成成適于操操作造型型的輸出出的檢測測器。該節(jié)點(diǎn)可可以為任任何成組組節(jié)點(diǎn)的的子節(jié)點(diǎn)點(diǎn),用以以感知用用戶對(duì)該該組節(jié)點(diǎn)點(diǎn)的動(dòng)作作,使造造型按用用戶的動(dòng)動(dòng)作而平平移。PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)PlaneSensor平面檢測器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)PlaneSensor平面檢測測器節(jié)點(diǎn)點(diǎn)語法PlaneSensor{enableTRUE##exposedFieldSFBoolautoOffsetTRUE##exposedFieldSFBooloffset0.00.00..0##exposedFieldSFVec3fmaxPosition--1.0-1.0##exposedFieldSFVec2fminPosition1.01..0##exposedFieldSFVec2fisActive##eventOutSFBooltranslation_changed##eventOutSFVec3ftracPoint__changed##eventOutSFVec3f}域名和域域值詳解解(1)enabled域的域值值是布爾量量,定義義了一個(gè)個(gè)開關(guān),,即是否否激活平平面移動(dòng)動(dòng)傳感檢檢測器,,當(dāng)該域域值為TRUE時(shí),該檢檢測器允允許被用用戶激活活,并產(chǎn)產(chǎn)生輸出出;當(dāng)該該域值為為FALSE時(shí),用戶戶無法激激活該檢檢測器。。其默認(rèn)認(rèn)值為TRUE。(2)autoOffset域的域值值是一個(gè)布布爾量。。如果為為TRI正時(shí),Ⅵ(L億程序會(huì)會(huì)根據(jù)用用戶實(shí)際際拖拉鼠鼠標(biāo)的情情況,計(jì)計(jì)算出每每一次平平移的偏偏移量;;如果為為F虬SE時(shí),表示示每當(dāng)用用戶進(jìn)行行一次新新的拖曳曳后,就就會(huì)自動(dòng)動(dòng)重新回回到默認(rèn)認(rèn)值。其其默認(rèn)值值為TR(正。(3)maxPosition域的域值值用來設(shè)置置檢測器器的最大大位置值值,其功功能是限限制移動(dòng)動(dòng)對(duì)象的的范圍只只能在X—Y平面的某某一點(diǎn)的的下方和和此點(diǎn)的的左半部部。其默默認(rèn)值為為(–1––1)。(4)minPosition域的域值值用來設(shè)置置檢測器器的最小小位置值值,其功功能是限限制移動(dòng)動(dòng)對(duì)象的的范圍只只能在X—Y平面的某某一點(diǎn)的的上方和和此點(diǎn)的的右半部部。其默默認(rèn)值為為(00))。(5)offset域的域值值用于設(shè)置置偏移量量,即每每一次輸輸出位置置時(shí)的偏偏移量。。當(dāng)autoOffset域的域值值為TRUE時(shí),人為為設(shè)置的的偏移量量將被忽忽略。其其功能是是每當(dāng)用用戶進(jìn)行行一次新新的拖曳曳時(shí),能能夠從默默認(rèn)位置置被移動(dòng)動(dòng)到的最最遠(yuǎn)距離離。其默默認(rèn)值為為(000))。事件說明明(1)isActive為出事件件(eventOut),若該事事件為TRUE時(shí),表示示鼠標(biāo)是是被按下下的狀態(tài)態(tài),若為為FALSE時(shí),則反反之。該該事件只只會(huì)送出出鼠標(biāo)鍵鍵是否被被按下,,但不是是處于拖拖曳狀態(tài)態(tài)。(2)trackPoint_changed為出事件件,表示示進(jìn)行拖拖曳后,,用戶的的鼠標(biāo)在在X—Y平面上的的確切位位置。當(dāng)當(dāng)檢測器器被激活活且用戶戶單擊鼠鼠標(biāo)時(shí),,該出事事件發(fā)送送該值。。其值代代表的是是虛擬平平面上的的當(dāng)前單單擊點(diǎn)。。(3)translation_changed為出事件件,表示示在進(jìn)行行拖曳的的任意時(shí)時(shí)刻,用用戶的鼠鼠標(biāo)在X—Y平面上的的暫時(shí)位位置。當(dāng)當(dāng)檢測器器被激活活且用戶戶單擊鼠鼠標(biāo)時(shí),,該出事事件發(fā)送送該值。。其值代代表虛擬擬平面上的平平移坐標(biāo)標(biāo)值。[實(shí)例6-12]使用平面面檢測器器節(jié)點(diǎn),,能使帆帆船在VRML立體空間間行駛;;當(dāng)用戶戶單擊帆帆船造型型后,帆帆船會(huì)按按指定路路徑左移移到指定定位置vrml6-12.wrl6.3..2CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)是虛擬擬造型按圓柱體體的中心心軸旋轉(zhuǎn)轉(zhuǎn)型傳感器。。CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)用來創(chuàng)創(chuàng)建一個(gè)個(gè)將用戶戶動(dòng)作轉(zhuǎn)轉(zhuǎn)換成造造型圍繞繞Y軸旋轉(zhuǎn)的的檢測器器。該節(jié)點(diǎn)可可以作為為任何組組節(jié)點(diǎn)的的子節(jié)點(diǎn)點(diǎn)。此節(jié)節(jié)點(diǎn)能夠夠感應(yīng)到到用戶的的拖動(dòng)動(dòng)動(dòng)作,讓讓被拖動(dòng)動(dòng)的虛擬擬對(duì)象沿沿著Y軸旋轉(zhuǎn),,虛擬對(duì)對(duì)象就繞繞著圓柱柱體的中中心軸被被拖動(dòng)旋旋轉(zhuǎn)。CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)CylinderSensor平面檢測器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)CylinderSensor圓柱檢測測器節(jié)點(diǎn)點(diǎn)語法CylinderSensor{enableTRUE##exposedFieldSFBooldiskAngle0.262##exposedFieldSFFloatautoOffsetTRUE##exposedFieldSFBooloffset0##exposedFieldSFVec3fmaxAngle--1.0##exposedFieldSFFloatminAngle0.0##exposedFieldSFFloatisActive##eventOutSFBoolrotation_changed##eventOutSFVec3ftracPoint__changed##eventOutSFVec3f}域名和域域值詳解解(1)enabled域值是布爾量量。若為為TRUE時(shí),表示示檢測器器允許被被用戶激激活;若若為FALSE時(shí),檢測測器未被被用戶激激活。其其默認(rèn)值值為TRUE。(2)autoOffset域的值也是布爾爾量。若若該域值值為TRUE時(shí),VRML程序會(huì)根根據(jù)用戶戶實(shí)際拖拖拉鼠標(biāo)標(biāo)的情況況,計(jì)算算出每一一次旋轉(zhuǎn)轉(zhuǎn)的偏移移量;若若為FALSE時(shí),表示示每當(dāng)用用戶重新新拖拉一一次鼠標(biāo)標(biāo)后,就就會(huì)自動(dòng)動(dòng)回到默默認(rèn)值。。其默認(rèn)認(rèn)值為TRUE。(3)offset域的值指定了物物體旋轉(zhuǎn)轉(zhuǎn)的偏移移量,即即虛擬對(duì)對(duì)象能夠夠從默認(rèn)認(rèn)位置被被旋轉(zhuǎn)多多少弧度度。其默默認(rèn)值為為0。當(dāng)autoOffset字段的值值為TRUE時(shí),人為為設(shè)置的的偏移量量將被忽忽略。(4)maxAngle域的值定義了檢檢測器輸輸出的最最大旋轉(zhuǎn)轉(zhuǎn)角度。。(5)minAngle域的值定義了檢檢測器輸輸出的最最小旋轉(zhuǎn)轉(zhuǎn)角度。。(6)diskAngle域的值定義了檢檢測器在在圓盤行行為和圓圓柱行為為之間切換角度度。默認(rèn)認(rèn)值為0.262弧度。事件說明明(1)isActive為出事件件,當(dāng)檢檢測器被被激活時(shí)時(shí),若該該值為TRUE,表示當(dāng)前前用戶正正在進(jìn)行行拖拉操操作,若若為FALSE則反之。。(2)trackPoint_changed為出事件件,當(dāng)用用戶激活活檢測器器并進(jìn)行行拖拉操操作時(shí),,將引發(fā)發(fā)該事件件值。其其值代表表圓柱體體表面點(diǎn)點(diǎn)的坐標(biāo)標(biāo)。(3)rotation_changed為出事件件,當(dāng)用用戶激活活檢測器器并進(jìn)行行拖拉操操作時(shí),,將引發(fā)發(fā)該事件件值。該該值是虛虛擬的圓圓柱體的的旋轉(zhuǎn)值值。[實(shí)例6-13]在藍(lán)色立立體空間間背景下下,使用用圓柱檢檢測器節(jié)節(jié)點(diǎn),打打開一扇扇門;當(dāng)當(dāng)用戶單單擊門造造型時(shí),,此門旋旋轉(zhuǎn)90度打開vrml6-13.wrlvrml6-14.wrl6.3..4SphereSensor球面檢測測器節(jié)點(diǎn)點(diǎn)SphereSensor球面檢測測器節(jié)點(diǎn)點(diǎn)是使虛虛擬對(duì)象象按任意軸軸方向旋旋轉(zhuǎn)型傳感器。。SphereSens球面檢測測器節(jié)點(diǎn)點(diǎn)創(chuàng)建了了一個(gè)將將用戶動(dòng)動(dòng)作轉(zhuǎn)換換成造型型繞某一一點(diǎn)旋轉(zhuǎn)轉(zhuǎn)的檢測測器。該節(jié)點(diǎn)可可作為其其他組節(jié)節(jié)點(diǎn)的子子節(jié)點(diǎn)。。它能感感受到用用戶使用用鼠標(biāo)的的拖動(dòng)行行為,使使造型在在沒有固固定旋轉(zhuǎn)轉(zhuǎn)軸的情情況下,,被任意意拖動(dòng)地地旋轉(zhuǎn),,也可以以改變方方位,但但不能移移動(dòng)位置置。空間間造型可可在一個(gè)個(gè)以球體體為中心心的任意意旋轉(zhuǎn)軸軸上旋轉(zhuǎn)轉(zhuǎn)。SphereSensor球面檢測測器節(jié)點(diǎn)點(diǎn)語法結(jié)結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)SphereSensor平面檢測器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)SphereSensor球面監(jiān)測測器節(jié)點(diǎn)點(diǎn)語法SphereSensor{{enableTRUE##exposedFieldSFBoolautoOffsetTRUE##exposedFieldSFBooloffset0.01.00..00.0##exposedFieldSFVec3fisActive##eventOutSFBoolrotation_changed##eventOutSFVec3ftracPoint__changed##eventOutSFVec3f}域名和域域值詳解解(1)enabled域值是布爾量量。若為為TRUE時(shí),表示示檢測器器允許被被用戶激激活;若若為FALSE,檢測器器未被用用戶激活活。其默默認(rèn)值為為TRUE。(2)autoOffset域的值是布爾量量。若為為TRUE,表示物物體拖拉拉前后所所移動(dòng)的的軌跡,,且停在在拖拉后后的位置置;若為為FALSE,則表示示每當(dāng)用用戶進(jìn)行行一次新新的拖拉拉后,就就會(huì)自動(dòng)動(dòng)重新回回到默認(rèn)認(rèn)值。其其默認(rèn)值值為TRUE。該域值值作用是是指定該該旋轉(zhuǎn)值值是否發(fā)發(fā)生偏移移。(3)offse真域的域域值指定了檢檢測器每每一次輸輸出的旋旋轉(zhuǎn)量。。作用是是每當(dāng)用用戶執(zhí)行行一次新新的拖拉拉時(shí),虛虛擬對(duì)象象能夠從從默認(rèn)方方位被旋旋轉(zhuǎn)一定定的角度度。其默默認(rèn)值為為(0100))。當(dāng)autoOffset域值設(shè)置置為TRUE時(shí),本字字段的設(shè)設(shè)置將被被忽略。。vrml6-15.wrl飛船會(huì)按按要求旋旋轉(zhuǎn),當(dāng)當(dāng)用戶單單擊飛船船時(shí),可可使飛船船在以球球體為中中心的任任意軸上上旋轉(zhuǎn)6.4VRML感知檢測測器節(jié)點(diǎn)點(diǎn)運(yùn)用VRML感知檢測測器可以以感知用用戶與造造型的接接近程度度。感知檢測測器包括括VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)、ProximtitySensor親近度傳傳感器節(jié)節(jié)點(diǎn)Collision碰撞傳感感器節(jié)點(diǎn)點(diǎn)6.4..1VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)也稱稱為可見見性感知知檢測器器節(jié)點(diǎn)。。VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)用來來從觀察察者的方方向和位位置感知知一個(gè)長長方體區(qū)區(qū)域在當(dāng)當(dāng)前的坐坐標(biāo)系中中何時(shí)才才是可視視的。該該節(jié)點(diǎn)可可作為任任意組節(jié)節(jié)點(diǎn)的子子節(jié)點(diǎn)。。VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)語法法結(jié)構(gòu)Group組節(jié)點(diǎn)Background背景節(jié)點(diǎn)TimeSensor時(shí)間傳感器節(jié)點(diǎn)VisibilitySensor能見度傳感器節(jié)點(diǎn)ROUTE路由Inline內(nèi)聯(lián)節(jié)點(diǎn)PositionInterpolator
位置插補(bǔ)器節(jié)點(diǎn)VisibilitySensor能見度傳傳感器節(jié)節(jié)點(diǎn)語法法VisibilitySensor{enabledTRUE##exposedFieldSFBoolcenter0.00..00.0##exposedFieldSFVec3fsize0..00.00.0##exposedFieldSFVec3fisActive##eventOutSFBoolenterTime##eventOutSFTimeexitTime##eventOutSFTime}域名和域域值詳解解(1)enabled域的域值值是一個(gè)布布爾量。。若為TRUE,表示能能見度傳傳感器節(jié)節(jié)點(diǎn)可以以感受到到能見度度的改變變;若為為FALSE,則反之之。(2)center域的域值值定義了一一個(gè)箱型型區(qū)域中中的一個(gè)個(gè)可感知知區(qū)域的的幾何中中心點(diǎn)的的三維坐坐標(biāo)。若若在這個(gè)個(gè)限制的的箱型區(qū)區(qū)域內(nèi),,表示能能見度識(shí)識(shí)別最大大,傳感感器可以以啟動(dòng)一一些動(dòng)態(tài)態(tài)行為;;若在這這個(gè)限制制箱型區(qū)區(qū)域外,,則表示示能見度度識(shí)別較較差,傳傳感器將將停止一一些動(dòng)態(tài)態(tài)行為。。該域值值的默認(rèn)認(rèn)值為坐坐標(biāo)原點(diǎn)點(diǎn)(000))。(3)size域的域值值指定了一一個(gè)能見見度傳感感器節(jié)點(diǎn)點(diǎn)箱型長長方體區(qū)區(qū)域的尺尺寸(XYZ)),該域值值的3個(gè)數(shù)值分分別表示示長方體體區(qū)域的的寬度、、高度和和深度。。該域值值的默認(rèn)認(rèn)值是在在原點(diǎn)的的一個(gè)點(diǎn)點(diǎn)區(qū)域(000))。[實(shí)例6-16]在立體空空間背景景下,利利用能見見度傳感感器節(jié)點(diǎn)點(diǎn)使飛碟碟與帆船船在可見見性感知知檢測器器節(jié)點(diǎn)控控制下產(chǎn)產(chǎn)生動(dòng)態(tài)態(tài)運(yùn)動(dòng)行行為vrml6-16.wrl6.4..2ProximitySensor親近度傳傳感器節(jié)節(jié)點(diǎn)ProximitySensor親近度傳傳感器節(jié)節(jié)點(diǎn)也稱稱為接近近感知器器節(jié)點(diǎn),,用來感感知用戶戶何時(shí)進(jìn)進(jìn)入、退退出和移移動(dòng)于坐坐標(biāo)系內(nèi)內(nèi)的一個(gè)個(gè)長方體體區(qū)域。。該節(jié)點(diǎn)能能夠感應(yīng)應(yīng)觀測者者進(jìn)入和和移動(dòng)VRA4L虛擬現(xiàn)實(shí)實(shí)場景中中的長方方體感知知區(qū)域。。當(dāng)觀測測者穿越越這個(gè)長長方體感感知區(qū)域域時(shí),可可以使親親近度傳傳感器啟啟動(dòng)某個(gè)個(gè)動(dòng)態(tài)對(duì)對(duì)象;當(dāng)當(dāng)觀測者者離開這這個(gè)長方方體感知知區(qū)域,,將停止止某個(gè)動(dòng)動(dòng)態(tài)對(duì)象象。例如如,親近近度傳感感器節(jié)點(diǎn)點(diǎn)控制一一個(gè)自動(dòng)動(dòng)門,當(dāng)當(dāng)觀測者
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)合同范本寫
- 240鉆機(jī)租賃合同范本
- epc工程合同使用合同范本
- 人工加材料合同范本
- 全新貨車購車合同范例
- 保險(xiǎn)公司擔(dān)保貸款合同范本
- it 顧問合同范本
- 分公司發(fā)票合同范本
- 代招合同范本
- 出租摩托協(xié)議合同范本
- 《公路智慧養(yǎng)護(hù)信息化建設(shè)指南(征求意見稿)》
- 《書籍裝幀設(shè)計(jì)》 課件 項(xiàng)目4 書籍裝幀版式設(shè)計(jì)
- 作物栽培學(xué)課件
- 2024年遼寧大連中遠(yuǎn)海運(yùn)川崎船舶工程有限公司招聘筆試參考題庫含答案解析
- 《單層廠房鋼結(jié)構(gòu)》
- 人音版二年級(jí)上冊第六課《跳起舞》 單元作業(yè)設(shè)計(jì)
- 第43講閉合電路歐姆定律(講義)
- 在社區(qū)結(jié)對(duì)共建簽約儀式上的講話3篇
- 2023年湖北省煙草專賣局(公司)考試真題
- 小班社會(huì)《多喝水身體好》課件
- 資產(chǎn)盤點(diǎn)方案策劃
評(píng)論
0/150
提交評(píng)論