?? 第二十一章 空間傳感器.txt
字號:
第二十一章 空間傳感器
1、TouchSensor節(jié)點用來檢測瀏覽者在VRML瀏覽窗口中的光標動作,并且輸出一些參數(shù)來觸發(fā)和控制動畫效果。
TouchSensor語法
TouchSensor {
enable TRUE #域值類型 SFBool
isActive #輸出接口 SFBool
isOver #輸出接口 SFBool
touchTime #輸出接口 SFVec3f
hitPoint_changed #輸出接口 SFVec3f
hitNormal_changed #輸出接口 SFVec3f
hitTexcood_changed #輸出接口 SFVec3f
}
enable用來設定空間傳感器是否處于打開的狀態(tài),當域值為TRUE時,這個空間傳感器處于打開狀態(tài),并且根據(jù)瀏覽者在空間中不同的動作給出相應的輸出;而當域值為FALSE時,這個空間傳感器處于關閉狀態(tài),并不檢測瀏覽者在虛擬世界中的動作,也沒有任何的輸出。(可以使用事件接口)
當瀏覽者在瀏覽窗口中的可傳感的空間造型上按下定點設備(例如:鼠標)時,輸出接口isActive中將輸出一個FALSE值,同時從touchTime輸出接口中將輸出當前的絕對時間。并且輸出接口hitPoint_changed將輸出被單擊位置的空間三維坐標值;輸出接口hitNormal_changed將輸出被單擊處的表面法向量值;在輸出接口hitTexcood_changed中輸出的則是被單擊點的貼圖坐標值。
當瀏覽者在瀏覽窗口中的光標經(jīng)過可傳感的空間造型時,輸出接口isOver就輸出一個TRUE值;而當瀏覽者的光標離開了可傳感的空間造型時,輸出接口isOver所輸出的就是FALSE值。
[isOver輸出接口控制.wrl] 是通過TouchSensor節(jié)點的isOver輸出接口來控制造型的動畫效果的,當瀏覽者的光標在瀏覽器窗口中經(jīng)過空間長方體時,該長方體就開始旋轉,知道瀏覽者的光標離開了這個空間造型為止。
2、PlaneSensor節(jié)點
PlaneSensor節(jié)點所創(chuàng)建的空間傳感器用來檢測瀏覽者在虛擬世界中的動作,并將這些動作轉換為適于空間造型的輸出,使瀏覽者像是在一個二維的平面上所觀察到的那樣。
PlaneSensor節(jié)點語法
PlaneSensor {
enabled TRUE #域值類型 SFBool
autoOffset TRUE #域值類型 SFBool
offset 0.0 0.0 0.0 #域值類型 SFVec3f
maxPosition -1.0 1.0 #域值類型 SFVec2f
minPosition 1.0 1.0 #域值類型 SFVec2f
isActive #輸出接口 SFBool
translation_changed #輸出接口 SFVec3f
trackPoint_changed #輸出接口 SFVec3f
}
enable用來設定空間傳感器是否處于打開的狀態(tài),當域值為TRUE時,這個空間傳感器處于打開狀態(tài)。(同上)(可以使用事件接口)
當瀏覽者在瀏覽窗口中的可傳感的空間造型上按下定點設備的按鍵時,輸出接口isActive中將輸出一個TRUE值;而當瀏覽者放開了定點設備的按鍵時,輸出接口isActive中將輸出一個FALSE值。當瀏覽者在瀏覽器窗口中將光標移動到可傳感的空間造型上并且單擊時,將在單擊的位置上建立一個虛擬的空間平面,這個空間平面將和當前空間坐標系的XY面相平行,并且將單擊的位置作為這個空間平面的原點。瀏覽者在瀏覽器窗口中按下定點設備的按鍵并且移動光標時,可傳感的空間造型就將在這個平面上產(chǎn)生平移。
offset域值給出了一個三維的偏移值,也就是空間造型相對于上面的那個虛擬的空間平面坐標原點的偏移值。(可以使用事件接口)
autoOffset域值用來設置是否在平移中加上offset域值給出的偏移值。當域值為TRUE時將加上這個偏移值,而當域值為FALSE時在平移中將不加上偏移值。(可以使用事件接口)
minPosition域值和maxPosition域值是用來給出在X軸和Y軸方向上平移量的限制,前者給出最小的平移量限制,而后者給出最大的平移量限制。(可以使用事件接口)
上面介紹的這幾個域值將共同決定最終平移量的大小,而這個平移量將由輸出接口translation_changed傳送出來。
[在一個有限平面范圍內拖動空間造型.wrl] 這個例子中的空間造型就被限制在X-Y平面的一定范圍內能被拖動,瀏覽者可以試著在瀏覽器窗口中用鼠標拖動黃色的空間正方體。其實現(xiàn)方法就是將PlaneSensor節(jié)點所創(chuàng)建的空間傳感器translation_changed輸出接口輸出到Transform編組節(jié)點的輸入接口set_translation中。
[多個平移范圍傳感器的使用.wrl] 為數(shù)個空間造型指定相應的平移范圍。
3、SphereSensor節(jié)點
SphereSensor節(jié)點所創(chuàng)建的空間傳感器用來檢測瀏覽者在虛擬世界中的動作,并將這些動作轉換為適于空間造型輸出,使瀏覽者像是在一個轉動的球體上觀察到的那樣。
SphereSensor節(jié)點語法
SphereSensor {
enabled TRUE #域值類型 SFBool
autoOffset TRUE #域值類型 SFBool
offset 0.0 1.0 0.0 0.0 #域值類型 SFVec3f
isActive #輸出接口 SFBool
rotation_changed #輸出接口 SFVec3f
trackPoint_changed #輸出接口 SFVec3f
}
enable用來設定空間傳感器是否處于打開的狀態(tài),當域值為TRUE時,這個空間傳感器處于打開狀態(tài)。(同上)(可以使用事件接口)
當瀏覽者在瀏覽窗口中的可傳感的空間造型上按下定點設備的按鍵時,輸出接口isActive中將輸出一個TRUE值;而當瀏覽者放開了定點設備的按鍵時,輸出接口isActive中將輸出一個FALSE值。當瀏覽者在瀏覽器窗口中將光標移動到可傳感的空間造型上并且單擊時,將在單擊的位置上建立一個虛擬的空間球體表面,并且當前空間坐標系原點作為球體的中心點,將單擊的位置和空間坐標系原點之間的距離作為軌跡球體的半徑。瀏覽者在瀏覽器窗口中按下定點設備的按鍵并且移動光標時,可傳感的空間造型就將沿這個軌跡球體表面上產(chǎn)生移動。
offset域值給出了一個旋轉偏移值,也就是空間造型相對于上面的那個虛擬的空間球面中心的旋轉值。(可以使用事件接口)
autoOffset域值用來設置是否在旋轉中加上offset域值給出的偏移值。當域值為TRUE時將加上這個偏移值,而當域值為FALSE時在平移中將不加上偏移值。(可以使用事件接口)
上面介紹的這幾個域值將共同決定最終旋轉值的大小,而這個平移量將由輸出接口rotation_changed傳送出來。
[在球面上旋轉空間造型.wrl] 一個圓錐體造型,通過SphereSensor節(jié)點指定了一個球面的旋轉觀察方式,其實現(xiàn)方法就是由SphereSensor節(jié)點的輸出接口rotation_changed來驅動Transform節(jié)點的set_rotation輸入接口。
4、CylinderSensor節(jié)點
CylinderSensor節(jié)點所創(chuàng)建的空間傳感器用來檢測瀏覽者在虛擬世界中的動作,并將這些動作轉換為適于空間造型的輸出,使瀏覽者像是在圍繞著一根軸旋轉一個圓柱體所觀察到的那樣。
CylinderSensor節(jié)點語法
CylinderSensor {
enabled TRUE #域值類型 SFBool
diskAngle 0.262 #域值類型 SFFloat
autoOffset TRUE #域值類型 SFBool
offset 0.0 1.0 0.0 0.0 #域值類型 SFVec3f
maxAngle -1.0 #域值類型 SFFloat
minAngle 0.0 #域值類型 SFFloatf
isActive #輸出接口 SFBool
rotation_changed #輸出接口 SFVec3f
trackPoint_changed #輸出接口 SFVec3f
}
enable(同上)(可以使用事件接口)
當瀏覽者在瀏覽窗口中的可傳感的空間造型上按下定點設備的按鍵時,輸出接口isActive中將輸出一個TRUE值;而當瀏覽者放開了定點設備的按鍵時,輸出接口isActive中將輸出一個FALSE值。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -