This page tests to make sure ambientLight(), directionalLight() and pointLight()
for Processing JS work correctly on spheres.
// Test written by Andor Salga int startX, startY; int x, y; int objCounter = 0; int NUM_OBJECTS_PER_ROW = 13; boolean isDone = false; void setup() { size(500,500,OPENGL); startX = width/2 - 60; startY = height/2 - 70; x = startX; y = startY; } void draw() { background(100,135,100); drawObjects(); } void drawObjects() { camera(); noStroke(); sphereDetail(30); fill(255); drawNextObject(); // single value noFill(); drawNextObject(); // single value fill(1); drawNextObject(); fill(50); drawNextObject(); fill(128); drawNextObject(); fill(200); drawNextObject(); fill(255); drawNextObject(); //////////////////////////////////////////////// // single values for color, color - single value //////////////////////////////////////////////// ambientLight(0, 0, 32); pointLight(0,128,128,0,-1,0); fill(color(0)); drawNextObject(); fill(color(1)); drawNextObject(); fill(color(50)); drawNextObject(); fill(color(200)); drawNextObject(); fill(color(255)); drawNextObject(); /////////////////////////////// // single value - hex no alpha /////////////////////////////// fill(#000000); drawNextObject(); fill(#808080); drawNextObject(); fill(#FFFFFF); drawNextObject(); noFill(); drawNextObject(); pointLight( 0, 0, 128, 0, 100, 50 ); pointLight( 33, 66, 99, -600, 100, 50 ); fill(#00FF00); drawNextObject(); fill(#0000FF); drawNextObject(); fill(#FFFF00); drawNextObject(); fill(#FF00FF); drawNextObject(); fill(#00FFFF); drawNextObject(); fill(#214263); drawNextObject(); /////////////////////////////////////////////// // single value - color, color multiple values ////////////////////////////////////////////// fill(color(0,0,0)); drawNextObject(); fill(color(128,128,128)); drawNextObject(); fill(color(255,255,255)); drawNextObject(); fill(color(255,0,0)); drawNextObject(); fill(color(0,255,0)); drawNextObject(); fill(color(0,0,255)); drawNextObject(); fill(color(255,255,0)); drawNextObject(); fill(color(255,0,255)); drawNextObject(); fill(color(0,255,255)); drawNextObject(); fill(color(33,66,99)); drawNextObject(); ///////////////////////////////// // double values - color + alpha ///////////////////////////////// directionalLight( 128, 0, 0, -1, 0, 0 ); fill(color(0,0,0),255); drawNextObject(); fill(color(128,128,128),255); drawNextObject(); fill(color(255,255,255),255); drawNextObject(); fill(color(255,0,0),255); drawNextObject(); fill(color(0,255,0),255); drawNextObject(); fill(color(0,0,255),255); drawNextObject(); fill(color(255),255); drawNextObject(); fill(color(0,0,255),255); drawNextObject(); fill(color(0,255,0),255); drawNextObject(); fill(color(255,0,0),255); drawNextObject(); fill(color(255),255); drawNextObject(); fill(color(255),255); drawNextObject(); fill(color(255),255); drawNextObject(); fill(color(128),255); drawNextObject(); fill(color(128),255); drawNextObject(); // hex + alpha fill(#000000,255); drawNextObject(); fill(#808080,255); drawNextObject(); fill(#FFFFFF,255); drawNextObject(); fill(#FF0000,255); drawNextObject(); fill(#00FF00,255); drawNextObject(); fill(#0000FF,255); drawNextObject(); fill(#FFFF00,255); drawNextObject(); fill(#FF00FF,255); drawNextObject(); fill(#00FFFF,255); drawNextObject(); fill(#214263,255); drawNextObject(); //////////////// // gray + alpha //////////////// fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); /////////////////////// // triple values r,g,b ////////////////////// noLights(); ambientLight(0, 32, 32); pointLight(128,0,128,-300,50,0); fill(0,0,0); drawNextObject(); fill(128,128,128); drawNextObject(); fill(255,255,255); drawNextObject(); fill(255,0,0); drawNextObject(); noFill(); drawNextObject(); fill(0,0,255); drawNextObject(); fill(255,255,0); drawNextObject(); fill(255,0,255); drawNextObject(); fill(0,255,255); drawNextObject(); fill(33,66,99); drawNextObject(); /////////////// // quad values /////////////// directionalLight( 0, 128, 128, 1, 1, 0 ); fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(0,0,0,255); drawNextObject(); fill(0,0,0, 255); drawNextObject(); fill(0,0,0, 255); drawNextObject(); fill(128,128,128, 255); drawNextObject(); fill(128,128,128, 255); drawNextObject(); fill(128,128,128, 255); drawNextObject(); fill(255,255,255, 255); drawNextObject(); // !! fill(255,255,255, 255); drawNextObject(); fill(255,255,255, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(33,66,99, 255); drawNextObject(); fill(33,66,99, 255); drawNextObject(); fill(33,66,99, 255); drawNextObject(); /// extras directionalLight( 128, 128, 128, 0, -1, 0 ); fill(#00FF00); drawNextObject(); fill(#0000FF); drawNextObject(); fill(#FFFF00); drawNextObject(); fill(#FF00FF); drawNextObject(); fill(#00FFFF); drawNextObject(); fill(#214263); drawNextObject(); fill(#00FF00); drawNextObject(); fill(#0000FF); drawNextObject(); fill(#FFFF00); drawNextObject(); fill(#FF00FF); drawNextObject(); fill(#00FFFF); drawNextObject(); fill(#214263); drawNextObject(); fill(255,255,255, 255); drawNextObject(); fill(255,255,255, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(255,0,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(0,255,0, 255); drawNextObject(); fill(33,66,99, 255); drawNextObject(); fill(33,66,99, 255); drawNextObject(); strokeWeight(1); stroke(128,0,0); sphereDetail(10); directionalLight( 64, 255, 0, 0, 0, -1 ); fill(33,66,99, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(0, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(1, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(50, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(128, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); fill(255, 255); drawNextObject(); isDone = true; } void drawNextObject() { if(isDone){ isDone = false; objCounter = 0; x = startX; y = startY; } x += 10; if(objCounter % NUM_OBJECTS_PER_ROW == 0) { y += 10; x = startX; } pushMatrix(); translate(x, y, 320); sphere(5); popMatrix(); objCounter++; }