#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