#VRML V2.0 utf8 ##:@+ bouncing ball (2) ##@ ground Transform { children [ Transform { translation 0 -10 0 children [ Shape { geometry Box { size 10 0.2 10 } appearance Appearance { material DEF MATERIAL Material { diffuseColor 1 0 0 } } } ]} ##@ object DEF OBJECT Transform { scale 0.5 0.5 0.5 children [ Shape { geometry Sphere { radius 1 } appearance Appearance { material DEF MATERIAL Material { diffuseColor 1 0 0 } } } ] } ] } ##@ sensor DEF TIME TimeSensor { loop TRUE cycleInterval 5 } # ##@ script DEF SCRIPT Script { directOutput TRUE field SFTime tick 0 field SFNode object USE OBJECT field SFNode material USE MATERIAL field SFFloat position 0 field SFFloat color 0.5 field SFInt32 sign 1 eventIn SFFloat set_fraction url "javascript: ##@ fraction function set_fraction(value) { // to regulate timing if (tick == 0) { tick = value; position = 0; color = 0.5; } while (tick < value) { update(value); tick = tick + 0.05; } tick = value; } ##@ update function update(value) { position += 0.2 * sign; color = value; object.translation.y = position; material.diffuseColor = new SFColor(1,color,color); if (position > 7) sign = -1; if (position < -9) sign = 1; } " }# ##@ routing ROUTE TIME.fraction_changed TO SCRIPT.set_fraction ##@ environment Viewpoint { position 0 0 30 } Background { skyColor 0.2 0.2 0.4 } ##