I tried experimenting with the third dimension, and this is what (with Jack’s little help) came to life.
PImage possum;
float increment;
float z;
void setup() {
size(700, 393, P3D);
possum = loadImage("possum.jpg");
increment = 7;
noStroke();
}
void draw() {
background(0);
possum.loadPixels();
for (int y=0; y<possum.height; y+=increment) {
for (int x=0; x<possum.width; x+= increment) {
int index = x + y * possum.width;
color pix = possum.pixels[index];
float diam = map(brightness(pix), 0, 255, 1, 3)*(map(mouseX, 0, width, 10, 30));
pushMatrix();
translate(x, y, diam);
fill(pix);
box(diam/2);
popMatrix();
}
}
possum.updatePixels();
}