Original Spec| Sample

定義

CylinderSensor { 
  exposedField SFBool     autoOffset TRUE
  exposedField SFFloat    diskAngle  0.262       # (0,/2)
  exposedField SFBool     enabled    TRUE
  exposedField SFFloat    maxAngle   -1          # [-2,2]
  exposedField SFFloat    minAngle   0           # [-2,2]
  exposedField SFFloat    offset     0           # (-,)
  eventOut     SFBool     isActive
  eventOut     SFRotation rotation_changed
  eventOut     SFVec3f    trackPoint_changed
}
軸の定まった2次元の回転を検知します。物体を軸に対して横に ドラッグしたとき有効になります。
autoOffset
以前の検知状態を覚えるかどうかです。偽にするとマウスボタンを押す毎に 初期状態に戻ります。
diskAngle
最初にマウスを動かした軸とこのセンサーの回転の軸がこれより小さい場合、 検知を開始すると仕様書に書いてあるように読めるのですが、例を直してもそのように 振る舞いません。申し訳ありませんが調査中です。
enabled
有効・無効の設定
maxAngle
検知する回転の最大角
minAngle
検知する回転の最小角
offset
初期(マウスボタンを押した時点)の角度
isActive
検知をはじめた瞬間に真、終えた瞬間に偽を返す
rotation_changed
検知された回転の変化
trackPoint_changed
検知された位置の変化

サンプル

下の円柱をマウスで横にドラッグしてください。
#VRML V2.0 utf8
Transform {
 children [
  Shape {geometry Cylinder {}}
  DEF Sensor CylinderSensor {}
 ]
}
DEF Obj Transform {
 translation 0 2.2 0
 scale .1 1 1
 children [
  Shape {geometry Box {}}
 ]
}
ROUTE Sensor.rotation_changed TO Obj.set_rotation