Position Based Color

#VRML V2.0 utf8

NavigationInfo { type "EXAMINE" }
Viewpoint { position 0 0 4 }

DEF WHERE ProximitySensor { size 1000 1000 1000 }

Shape { 
   appearance Appearance { material DEF MAT Material { diffuseColor 0 0 1 } }
   geometry Sphere {}
}		

DEF SCRIPT Script {
   eventIn SFVec3f position
   eventOut SFColor color
   url "vrmlscript:

// clamp a value between two numbers
function clamp(v, low, high) { 
   if(v<low) return low; 
   else if(v>high) return high;
   else return v;
}

// position into color
function position(val) {
   r = clamp((val.x+2.5) / 5.0, 0, 1);
   g = clamp((val.y+2.5) / 5.0, 0, 1);
   b = clamp((val.z+2.5) / 5.0, 0, 1);
   color = new SFColor(r, g, b);
}

"

}

ROUTE WHERE.position_changed TO SCRIPT.position
ROUTE SCRIPT.color TO MAT.diffuseColor


mrl