Simple Elevator


#VRML V2.0 utf8

# starting viewpoint
Viewpoint {
   position 0 1.75 5
}

DirectionalLight {
   direction 0 -1 0
}

# elevator geometry in a transform
DEF MOVEME Transform {
   children [

      # elevator viewpoint
      Transform {
	 translation 0 1.75 0
	 children DEF EVIEW Viewpoint {
	    position 0 0 0
	    jump FALSE
	 }
      }

      # elevator floor
      Shape {
	 appearance Appearance { material Material { diffuseColor 1 .8 .5 } }
	 geometry Box { size 2 .1 2 }
      }

      # proximity sensor to trigger elevator motion and viewpoint binding
      DEF SENSOR ProximitySensor {
	 center 0 0 0
	 size 2 4 2
      }
     ]
}

# visual reference geometry
Transform { 
   translation 0 -2 -20
   children [
      Shape {
	 appearance Appearance { material Material { diffuseColor .2 .9 .7 } }
	 geometry Sphere { radius 10 }
      }
      Shape {
	 appearance Appearance { material Material { diffuseColor .2 .3 .1 } }
	 geometry Box { size 40 .1 40 }
      }
     ]
}

# elevator interpolator
DEF MOVER PositionInterpolator {
   key [ 0 1 ]
   keyValue [ 0 0 0,  0 30 0 ]
}

DEF TIMER TimeSensor {
   cycleInterval 20
}

ROUTE SENSOR.isActive TO EVIEW.set_bind
ROUTE SENSOR.enterTime TO TIMER.startTime
ROUTE TIMER.fraction_changed TO MOVER.set_fraction
ROUTE MOVER.value_changed TO MOVEME.translation


mrl