int w = 800; int h = 600; int count = 0; float r = w * 2; float zoom = 0; float xangle = 0; String[] slidefiles = { "slide01.jpg", "slide02.jpg", "slide03.jpg", "slide04.jpg" }; PImage img; PImage[] slides; void setup() { size(w, h, P3D); slides = new PImage[slidefiles.length]; for(int frame = 0; frame < slidefiles.length; frame++){ slides[frame] = loadImage(slidefiles[frame]); } img = slides[0]; noStroke(); frameRate(30); } void draw() { background(0); translate(0, 0, -r + zoom); int frame; float sector = 0; float sectorstep = 2 * PI / slides.length; for(frame = 0; frame < slides.length; frame++){ sector += sectorstep; pushMatrix(); rotateY(xangle + sector); translate(w/2, h/2, r); scale(w, h); beginShape(); texture(slides[frame]); vertex(-0.5, -0.5, 0, 0, 0); vertex(0.5, -0.5, 0, img.width, 0); vertex(0.5, 0.5, 0, img.width, img.height); vertex(-0.5, 0.5, 0, 0, img.height); endShape(); popMatrix(); } if(count % (64 * slides.length) == 0){ xangle = 0; zoom = 0; } int ticker = count % 64; if((16 <= ticker) && (ticker < 32)){ zoom -= r/16; } if((32 <= ticker) && (ticker < 48)){ xangle -= PI/32; } if((48 <= ticker) && (ticker < 64)){ zoom += r/16; } count++; }