Original Spec|
Sample
定義
TouchSensor {
exposedField SFBool enabled TRUE
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitPoint_changed
eventOut SFVec2f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFBool isOver
eventOut SFTime touchTime
}
触られたことを検知します。触られた時間が出力されますので
それをきっかけにTimeSensor経由で処理を行うことが多いです。
- enabled
- センサーが有効かどうか
- hitNormal_changed
- 触ったところの法線
- hitPoint_changed
- 触った場所
- hitTexCoord_changed
- 触ったところのテキスチャ座標
- isActive
- 触った(マウスボタンを押した)瞬間に真、離したときに偽
- isOver
- マウスが物体上に移動した
- touchTime
- 物体を触って離した時間
サンプル
箱を触ると動き出します。
TimeSensorの例と比較するとわかりやすいと思います。
#VRML V2.0 utf8
DEF Obj Transform {
children [
Shape {geometry Box {}}
#Boxにタッチセンス機能をつける
DEF Touch TouchSensor {}
]
}
DEF Polator PositionInterpolator {
key [0, .4, .7, 1]
keyValue [0 0 0, 3 0 0, 3 0 0, 0 0 0]
}
DEF Sensor TimeSensor {
loop FALSE
cycleInterval 2
stopTime -1
}
#タッチセンサーのイベント配送
ROUTE Touch.touchTime TO Sensor.set_startTime
ROUTE Sensor.fraction_changed TO Polator.set_fraction
ROUTE Polator.value_changed TO Obj.set_translation
#http://vrmlbyhand.hoops.ne.jp/ref/wrl/TimeSensor.wrl