Transform Example 6

Source

#VRML V2.0 utf8

Viewpoint {
  position 0 0 14
  orientation 0 1 0 0
}

DirectionalLight {
  direction 0 -1 0
}



#### Robot
####

Transform {

   children [

###########################
#### Robot Body
###########################

DEF UPPER_BODY Transform {

  children [

    Transform {
      translation 0 -2 0
      children [
        Shape {
           appearance Appearance {
              material Material {
                diffuseColor 0.3 0.4 1
              }
           }
           geometry Box {
              size 2 6 1.3
           }
        }
      ]
    }

    DEF LEFT_ARM Transform {
      center -0.2 1.2 0
      translation 1.5 -1.1 0
      children [
        DEF ARM_SHAPE Shape {
           appearance Appearance {
              material Material {
                diffuseColor 0.3 0.2 0.4
              }
           }
           geometry Box {
              size 0.75 4 1
           }
        }
	DEF LEFT_ARM_SENSOR SphereSensor { }
        DEF HAND_SHAPE Transform {
           translation 0 -2.25 0
	   children [
	      Transform {
		translation -0.3 0 0
                children
                   DEF FINGER_SHAPE Shape {
                      appearance Appearance {
                         material Material {
                            diffuseColor 0.9 0.2 0.4
                         }
                      }
                      geometry Box {
                         size 0.2 0.6 1
                      }
                   }
              }

              Transform {
                translation 0.3 0 0
                children
		  USE FINGER_SHAPE
              }
          ]
        }


      ]
    }

    DEF RIGHT_ARM Transform {
      center 0.2 1.2 0
      translation -1.5 -1.1 0
      children [
	USE ARM_SHAPE
	USE HAND_SHAPE
	DEF RIGHT_ARM_SENSOR SphereSensor {}

      ]
    }



  
  ] #### End Robot Body Children

}   #### End Robot Body


###############################
#### Robot Head
###############################

DEF HEAD Transform {

  scale 0.5 0.5 0.5
  translation  0 2.2 0

  children [

#### The Robot Head can be done more efficiently using PROTO
####   

   #### The Sphere ####
    Transform {
      translation   0 0 0
      scale 1 2 1
      children
        Shape {
           appearance Appearance {
              material Material {
                diffuseColor      1 0 0 
              }
           }
           geometry Sphere {
	      radius 1.75
           }   
        }
    }

   #### The Eyes ####
    Transform {
      translation -0.75 1.1 1.75
      scale 1 1 1
      children
        DEF EYE_SHAPE Shape {
           appearance Appearance {
              material Material {
                diffuseColor 1 1 1
              }
           }
           geometry Sphere {
              radius 0.4
           }
        }
    }
 
    Transform {
      translation 0.75 1.1 1.75
      scale 1 1 1
      children
	USE EYE_SHAPE
    }

   #### The Mouth ####
    DEF MOUTH Transform {
      translation 0 -1 1.4
      scale 1 2 1
      rotation 0 0 1 1.57
      children [
        Shape {
           appearance Appearance {
              material Material {
                diffuseColor 0 0 0
              }
           }
           geometry Sphere {
              radius 0.65
           }
        }
	DEF MOUTH_TIMER TimeSensor {
	  loop   TRUE
          cycleInterval   10
        }
	DEF MOVE_MOUTH PositionInterpolator {
	   keys [ 0, 0.25, 0.5, 0.75, 1]
	   values [ 0 -1 1.4, 0 -1 1.1, 0 -1 1.4, 0 -1 0.7, 0 -1 1.4 ]
        }           

      ]
    }

   #### The Ears ####
    Transform {
      translation  1.75 0.75 0
      rotation 0 0 1 0.78
      children
        DEF EAR_SHAPE Shape {
           appearance Appearance {
              material Material {
                diffuseColor  0 0 1
              }
           }
           geometry Box {
              size 1 1 1
           }
        }
    }
 
    Transform {
      translation -1.75 0.75 0
      rotation 0 0 1 0.78
      children
	USE EAR_SHAPE
    }
 
   #### The Nose ####
    Transform {
      translation   0 0.6 2.5
      scale 1 2 1
      rotation 1 0 0 1.57
      children 
        Shape {
           appearance Appearance {
              material Material {
	        diffuseColor	0 1 0
	      }
           }
           geometry Cone{ 
	     height 1
	     bottomRadius 0.6
           }
        }
    }

    DEF HEAD_TIMER TimeSensor { 
        loop      TRUE
        cycleInterval  10
    }
    DEF HEAD_ROTATER OrientationInterpolator {
	keys [ 0, 0.25, 0.5, 0.75, 1]
        values [ 0 1 0 .6, 0 1 0 0, 0 1 0 -0.6, 0 1 0 -0.8, 0 1 0 0]
    }



  ]  #### End Robot Head Children
}    #### End Robot Head

     DEF UPPER_BODY_SENSOR CylinderSensor{}

  ]   #### End Robot Children
}     #### End Robot


ROUTE UPPER_BODY_SENSOR.rotation_changed TO UPPER_BODY.set_rotation
ROUTE LEFT_ARM_SENSOR.rotation_changed TO LEFT_ARM.set_rotation
ROUTE RIGHT_ARM_SENSOR.rotation_changed TO RIGHT_ARM.set_rotation
ROUTE HEAD_TIMER.fraction TO HEAD_ROTATER.set_fraction
ROUTE HEAD_ROTATER.value_changed TO HEAD.set_rotation
ROUTE MOUTH_TIMER.fraction TO MOVE_MOUTH.set_fraction
ROUTE MOVE_MOUTH.value_changed TO MOUTH.set_translation