Original Spec| Sample

定義

VisibilitySensor { 
  exposedField SFVec3f center   0 0 0      # (-,)
  exposedField SFBool  enabled  TRUE
  exposedField SFVec3f size     0 0 0      # [0,)
  eventOut     SFTime  enterTime
  eventOut     SFTime  exitTime
  eventOut     SFBool  isActive
}
ある位置(範囲)がブラウザ上で見えているかどうかを判定する センサーです。
center
検知範囲の中心。範囲は直方体で大きさの設定も可能
enabled
検知を行うかどうかを設定
size
検知範囲の大きさ
enterTime
範囲がブラウザ上で見え始めた時間
exitTime
範囲がブラウザ上で見え終わった時間
isActive
見え始めに真、見え終りに偽を送出

サンプル

左の箱が見えるかどうかで右の円錐の色が変化します。
#VRML V2.0 utf8
Transform {
 children [ 
   Shape { geometry Box {size .3 .3 .3} }
   DEF VSensor VisibilitySensor {}
 ]
 translation -3 0 0
}
Shape {
 geometry Cone {}
 appearance Appearance {material DEF Mat Material {}}
}
DEF Polator ColorInterpolator {
 key [0, 1]
 keyValue [0 0 1 , 1 0 0]
}
DEF Polator2 ColorInterpolator {
 key [0, 1]
 keyValue [1 0 0 , 0 0 1]
}
DEF Sensor TimeSensor {}
DEF Sensor2 TimeSensor {}
ROUTE VSensor.enterTime TO Sensor.startTime
ROUTE VSensor.exitTime TO Sensor2.startTime
ROUTE Sensor.fraction_changed TO Polator.set_fraction
ROUTE Polator.value_changed TO Mat.set_diffuseColor
ROUTE Sensor2.fraction_changed TO Polator2.set_fraction
ROUTE Polator2.value_changed TO Mat.set_diffuseColor

DEF IN Viewpoint    {
 description "in"
}
DEF OUT Viewpoint    {
  description "out"
  orientation 0 1 0 -.4
}