#VRML V2.0 utf8 Viewpoint { position 0 1.5 15 } NavigationInfo { type "EXAMINE" } EXTERNPROTO Square [ field SFRotation rotation field SFVec3f size field SFVec3f position field SFColor color eventIn SFRotation set_rotation ] "square.wrl" EXTERNPROTO Eye [ field SFTime blinkFreq field SFVec3f size field SFVec3f position eventIn SFTime set_blinkFreq eventIn SFFloat set_lookHorizontal eventIn SFFloat set_lookVertical ] "eye.wrl" EXTERNPROTO Mouth [ field SFVec3f position field SFVec3f size field SFColor color field SFFloat mood eventIn SFFloat set_mood ] "mouth.wrl" PROTO Face [ field SFFloat mood 0 field SFTime blinkFreq 5 eventIn SFFloat set_mood eventIn SFTime set_blinkFreq eventIn SFFloat set_lookHorizontal eventIn SFFloat set_lookVertical ] { Group { children [ Square { size 3 4 1 color .3 .3 .3 } DEF MOUTH Mouth { position 0 -2 .1 set_mood IS set_mood size .5 .5 .5 } DEF L_BROW Square { position 1.5 3 .15 color .1 .1 .1 size 1.25 .1 1 } DEF R_BROW Square { position -1.5 3 .15 color .1 .1 .1 size 1.25 .1 1 } DEF L_EYE Eye { position 1 1 .1 set_lookHorizontal IS set_lookHorizontal set_lookVertical IS set_lookVertical blinkFreq IS blinkFreq set_blinkFreq IS set_blinkFreq } DEF R_EYE Eye { position -1 1 .1 set_lookHorizontal IS set_lookHorizontal set_lookVertical IS set_lookVertical blinkFreq IS blinkFreq set_blinkFreq IS set_blinkFreq } DEF SCRIPT Script { eventIn SFFloat set_mood IS set_mood eventOut SFRotation l_brow_rotation eventOut SFRotation r_brow_rotation field SFFloat mood IS mood url "vrmlscript: function set_mood(val) { mood = val; l_brow_rotation = new SFRotation(0, 0, 1, -1.57 * mood + .79); r_brow_rotation = new SFRotation(0, 0, 1, 1.57 * mood - .79); } " } ] } ROUTE SCRIPT.l_brow_rotation TO L_BROW.set_rotation ROUTE SCRIPT.r_brow_rotation TO R_BROW.set_rotation } DEF FACE Face {} EXTERNPROTO Slider [ field SFFloat mult field SFVec3f position eventOut SFFloat value_changed eventOut SFTime timeValue_changed ] "slider.wrl" DEF SLIDER1 Slider { mult 9 position -.1 .2 -.5 } ROUTE SLIDER1.timeValue_changed TO FACE.set_blinkFreq DEF SLIDER2 Slider { mult 1 position -.1 .175 -.5 } ROUTE SLIDER2.value_changed TO FACE.set_lookHorizontal DEF SLIDER3 Slider { mult 1 position -.1 .15 -.5 } ROUTE SLIDER3.value_changed TO FACE.set_lookVertical DEF SLIDER4 Slider { mult 1 position -.1 .125 -.5 } ROUTE SLIDER4.value_changed TO FACE.set_mood
mrl