Hey I did a thing. It’s pretty cool! Jack helped me discover box() instead of (rect) and how to rotate the image so you can really see the 3D aspect of it.
Here’s the original picture I used:
Here’s the code:
PImage img;
float increment = 5;
float incrementZ = 400;
void setup() {
size(1200, 720, P3D);
img = loadImage("pics.jpg");
rectMode(CENTER);
}
void draw() {
noStroke();
background(0);
rotateY(.2);
for (int y = 0; y<img.height; y+= increment) {
for (int x = 0; x <img.width; x+= increment) {
img.loadPixels();
int index = (x + y * img.width);
color pix = img.pixels[index];
fill(pix);
float diam = map(brightness(pix), 0, 255, 2, incrementZ/2);
pushMatrix();
translate(x, y, diam);
box(increment, increment, map(mouseX, 0, width, 0, incrementZ));
popMatrix();
}
}
img.updatePixels();
increment = map(mouseY, 0, width, 5, 30);
}
Basically, the increment size changes with the Y axis and it “explodes” on the Z axis based on the mouseX value. Here’s a video to show it off:
