xxxxxxxxxx
/*
recreation from William Forsythe's Choreographic object series
display frames from few seconds ago in rows, each frame is updated from the bottom up
try keeping your body still or rotating your body
*/
let cam;
let frames = [];
let frameDelay = 200; //set number of frames displayed, higher = more delay to actions
let frameH; //height of each frame
let slider;
function setup() {
createCanvas(800, 600);
cam = createCapture(VIDEO);
cam.size(width, height);
pixelDensity(1);
cam.hide();
frameH = height/frameDelay;
frameRate(30);
}
function draw() {
frames.push(cam.get()); //push new frames to array
if (frames.length == frameDelay) { //if all delayed frames are stored
let ystep = height/frameDelay; //calculate steps in y
for (let i = 0; i < frames.length; i++) {
image(frames[i], 0, i*ystep, width, frameH, 0, i*ystep, width, frameH); //draw a row of image with different delays
}
}
if (frames.length >= frameDelay) { //delete old frames
frames.splice(0, 1);
}
}