int objNum = 0; int maxObjNum = 1000; PFont font; Sphere[] spheres = new Sphere[maxObjNum]; void setup() { frameRate(30); size(400, 400, P3D); background(255); font = loadFont("SansSerif-24.vlw"); textFont(font,24); for (int i = 0; i < 3; i++) { addShpere(); } } void draw() { background(255); lights(); ambientLight(130,130,130); directionalLight(128, 128, 128, 0, -1, -1); for (int i = 0; i < objNum; i++) { spheres[i].update(); } fill(0); text(objNum,20,44); } void addShpere() { if (objNum < maxObjNum) { objNum ++; spheres[objNum - 1] = new Sphere(); } } void mousePressed(){ addShpere(); } /* ---------- */ class Sphere { public float diameter,distance,xr,yr,zr,vxr,vyr,vzr; Sphere () { distance = random(50,100); diameter = random(30,50); xr = random(0,360); yr = random(0,360); zr = random(0,360); vxr = random(-5,5); vyr = random(-5,5); vzr = random(-5,5); } void update() { xr += vxr; yr += vyr; zr += vzr; pushMatrix(); translate(width/2, height/2); rotateX(radians(xr)); rotateY(radians(yr)); rotateZ(radians(zr)); translate(distance,0,0); noStroke(); fill(100); sphere(diameter); popMatrix(); } }