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: