freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

虛擬現(xiàn)實(shí)技術(shù)―vrml篇(編輯修改稿)

2025-08-10 01:55 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 bind,view2收到“TRUE”后成為當(dāng)前視點(diǎn),所以在我們眼前場(chǎng)景發(fā)生了變化。 當(dāng)松開鼠標(biāo)左鍵,又回到原來(lái)的視點(diǎn),稱為視點(diǎn)回跳。因?yàn)樗砷_鼠標(biāo)左鍵后,接觸傳感器向view2發(fā)送了“FALSE”事件,這樣view2的當(dāng)前地位被解除。若不想回跳,則要自己來(lái)定義。在VRML中,利用Script節(jié)點(diǎn)(腳本節(jié)點(diǎn))定義用戶自定義行為,所謂定義即用腳本描述語(yǔ)言(Scripting Language)編寫腳本的過(guò)程。VRML97支持的腳本描述語(yǔ)言目前有兩種:Java和EMCAScript(這是JavaScript標(biāo)準(zhǔn)化后的名稱),關(guān)于這兩種語(yǔ)言本身,請(qǐng)參考相應(yīng)參考書,VRML97標(biāo)準(zhǔn)中定義了它們和VRML的接口方法。應(yīng)提請(qǐng)注意的是:VRML是基于節(jié)點(diǎn)的語(yǔ)言,所以腳本也是封裝在Script這個(gè)特殊節(jié)點(diǎn)中的。這里我們不過(guò)多討論腳本描述語(yǔ)言的細(xì)節(jié),主要討論把腳本集成到VRML文件中的方法。   上面我們?cè)呀佑|檢測(cè)器touchBox 和視點(diǎn)view2直接通過(guò)路徑連接起來(lái),現(xiàn)在要定義我們指定的行為,就需要在二者之間插入一個(gè)腳本節(jié)點(diǎn),也就是讓路徑繞個(gè)彎:   ROUTE TO   ROUTE TO   其中的腳本節(jié)點(diǎn)touchScript有一個(gè)事件人口touchBoxIsActive和一個(gè)事件出口bind_View2,前者接收來(lái)自接觸檢測(cè)器touchBox的事件,然后經(jīng)自己的腳本處理后,把結(jié)果發(fā)送給視點(diǎn)節(jié)點(diǎn)view2:   DEF touchScript Script {    eventIn SFBool touchBoxIsActive ?。H肟凇  ventOut SFBool bindView2    ?。3隹凇  rljavescript:         ?。D_本    function touchBoxIsActive(active) {  ?。Ec入口同名的函數(shù)被調(diào)用     bindView2= TRUE。           ?。7祷氐匠隹凇        }關(guān)于這個(gè)Script節(jié)點(diǎn),請(qǐng)注意一下幾點(diǎn): ?。?)它的事件入口touchBoxIsActive和事件出口bindView2是自定義的,其它VRML節(jié)點(diǎn)的域和事件都是固定的。 ?。?)這里定義的事件入口touchBoxIsActive(即入事件)和事件出口bindView2(即出事件)的類型都是SFBool(單值布爾型),它們與touchBox的事件出口isActive和view2的事件入口set_bind的類型保持一致?! 。?)“url”是腳本節(jié)點(diǎn)的一個(gè)域,可以直接包含腳本,也可以包含一個(gè)或多個(gè)用URL地址指示的腳本,若有多個(gè)地址,則按照先后次序獲取第一個(gè)可得到的腳本?! 。?)腳本是以函數(shù)(function)的形式給出的,函數(shù)名touchBoxIsActive 與事件入口的名稱相同,這是和ECMAScript語(yǔ)言的接口約定,表示相應(yīng)事件入口收到事件后調(diào)用此函數(shù)進(jìn)行處理。   下面我們整理一下事件流程:  ?。?)用戶在方塊上按下鼠標(biāo)左鍵。  ?。?)接觸檢測(cè)器發(fā)出一個(gè)“TRUE”事件。  ?。?)此事件進(jìn)入腳本節(jié)點(diǎn)touchScript的事件入口touchBoxIsActive.   (4)調(diào)用腳本函數(shù)touchBoxIsActive(注意函數(shù)并沒(méi)有判斷入事件的值)。   (5)函數(shù)向touchScript的事件出口bindView2發(fā)送一個(gè)“TRUE”事件(還可以進(jìn)行其它判斷或執(zhí)行其它事件)。   (6)view2節(jié)點(diǎn)收到“TRUE”事件,成為當(dāng)前視點(diǎn)。按照VRML約定,“認(rèn)為”上述事件是同時(shí)發(fā)生的,也就是這些事件的時(shí)間戳相同。  ?。?)若用戶松開鼠標(biāo)左鍵,則接觸檢測(cè)器發(fā)出一個(gè)“FALSE”事件,此事件同樣引起腳本函數(shù)調(diào)用并發(fā)送“TRUE”事件,所以view2仍然保持為當(dāng)前視點(diǎn)。 本節(jié)的完整代碼是:   VRML utf8    DEF view1 Viewpoint {     position 0 0 20     description view1     }    DEF view2 Viewpoint {     position 5 0 20     description view2     }    Group {     children [      DEF box Transform {       translation 5 0 0       children [        Shape {         appearance Appearance {          material Material {           diffuseColor 1 0 0           }          }         geometry Box {}         }        DEF touchBox TouchSensor {}        ]       }      DEF sphere Transform {       translation 0 0 0       children [        Shape {         appearance Appearance {          material Material {           diffuseColor 0 1 0          }          }         geometry Sphere {}         }        ]       }       DEF cone Tranform {        transaltion 5 0 0        children [         Shape {          appearance Appearance {           material Material {            diffuseColor 0 0 1            }           }          geometry Cone {}          }         ]        }       ] end of Group children      }     DEF touchScript Script {      eventIn SFBool touchBoxIsActive      eventOut SFBool bindView2      url javascript :       function touchBoxIsActive (active) {        bindView2 = TRUE。        }      }     ROUTE TO     ROUTE TO  這里所建立的虛擬境界并不復(fù)雜,:利用檢測(cè)器產(chǎn)生事件、利用路由傳遞事件以及利用腳本編寫自定義行為。在后面的幾節(jié)中,我們將探索一些專題性的有趣功能,而本節(jié)是基礎(chǔ),因而必須透徹理解。 (六)進(jìn)一步的完善與修飾當(dāng)用戶進(jìn)入或離開鄰近檢測(cè)器所劃定的區(qū)域時(shí)就會(huì)觸發(fā)它。正如你在標(biāo)準(zhǔn)中可以查到的那樣,ProximitySensor節(jié)點(diǎn)定義為:ProximitySensor {    exposedField SFVec3f center 0 0 0    exposedField SFVec3f size 0 0 0    exposedField SFBool enabled TRUE    eventOut SFBool isActive    eventOut SFVec3f position_changed    eventOut SFRotation orientation_changed    eventOut SFTime enterTime    eventOut SFTime exitTime    }ProximitySensor節(jié)點(diǎn)共有三個(gè)外露域(exposedField)和五個(gè)出事件(eventOut).出事件我們已經(jīng)熟悉,是節(jié)點(diǎn)狀態(tài)發(fā)生改變時(shí)用來(lái)通知其它節(jié)點(diǎn)的,這里的出事件isActive 用于ProximitySensor通報(bào)自己已被激活。enterTime和exitTime通報(bào)用戶(代表用戶的用戶化身或指示器)進(jìn)入和退出ProximitySensor檢測(cè)區(qū)的時(shí)刻。若用戶已在檢測(cè)器之內(nèi),則當(dāng)用戶的位置或方位發(fā)生變化時(shí),送出position_changed和orientation_changed出事件。這五個(gè)出事件聯(lián)合起來(lái),就定義了鄰近檢測(cè)器的功能。外露域則集域(Field)、入事件(eventIn)和出事件(eventOut)三者的功能于一身,也就是說(shuō),它既象域一樣描述了節(jié)點(diǎn)的當(dāng)前狀態(tài),又可以作為入事件由其它節(jié)點(diǎn)修改這種狀態(tài),并作為出事件把這種改變通知其它節(jié)點(diǎn)。這里的enabled外露域是布爾型的,用于ProximitySensor的啟用和停用,center和size定義形為長(zhǎng)方體的鄰近檢測(cè)區(qū)。  我們要在方塊、球體和圓柱這三個(gè)物體構(gòu)成的靜態(tài)世界,現(xiàn)在在球體周圍增加一個(gè)鄰近檢測(cè)區(qū):DEF sphere Transform {    translation 0 0 0     children [      Shape {....}      DEF eClose ProximitySensor {       center 0 0 0       size 4 4 4       }      ]     }ProximitySensor的名字為eCloser,鄰近區(qū)的中心和球體的球心重合,形狀為正方體,邊長(zhǎng)為4米,是球體直徑的兩倍。當(dāng)用戶走進(jìn)球體時(shí)就會(huì)觸發(fā)這個(gè)鄰近檢測(cè)器,檢測(cè)器發(fā)出isActive事件,我們把這個(gè)事件出口通過(guò)路由指向Script節(jié)點(diǎn)(用來(lái)綁定視點(diǎn)2):DEF eCloserScript Script {    eventIn SFBool enterProximitySensorIsActive    eventOut SFBool bindView2    url javascript :     function enterProximitySensorIsActive (active) {      bindView2=TRUE。      }    }隨后,我們?cè)卩徑鼨z測(cè)器的出事件isActive和腳本節(jié)點(diǎn)eCloserScript的入事件enterProximitySensorIsActive之間建立路由,后者收到事件后執(zhí)行函數(shù)enterProximitySensroIsActive,函數(shù)發(fā)出bindView2出事件,這個(gè)出事件通過(guò)路由連接到視點(diǎn)節(jié)點(diǎn)View2:ROUTE TO   ROUTE TO 也就是說(shuō),一旦用戶進(jìn)入鄰近區(qū),、三個(gè)物體、一個(gè)鄰近檢測(cè)器和一個(gè)腳本節(jié)點(diǎn)組成的境界的完整代碼如下:VRML utf8   DEF view1 Viewpoint {    position 0 0 20    description view1    }   DEF view2 Viewpoint {    position 0 0 20    description view2    }   Group {    children [     DEF box Transform {      translation 5 0 0      children [       S
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1