xxxxxxxxxx
310
var video;
var poseNet;
var playing = false;
var noseX = 0;
var noseY = 0;
var eyelX = 0;
var eyelY = 0;
var eyerX = 0;
var eyerY = 0;
var handlX = 0;
var handlY = 0;
var handrX = 0;
var handrY = 0;
var videosup = [];
var videosdn = [];
var videosf = [];
var videosr = [];
var videosl = [];
var song;
var amp;
var on = false;
function preload() {
song = loadSound("song.mp3");
videosup = [createVideo('u0.mp4'), createVideo('u1.mp4'), createVideo('u2.mp4'),createVideo('u3.mp4')];
videosup[0].size(640, 480);
videosup[0].hide();
videosup[1].size(640, 480);
videosup[1].hide();
videosup[2].size(640, 480);
videosup[2].hide();
videosup[3].size(640, 480);
videosup[3].hide();
videosdn = [createVideo('d0.mp4'), createVideo('d1.mp4'),createVideo('d2.mp4'), createVideo('d3.mp4')];
videosdn[0].size(640, 480);
videosdn[0].hide();
videosdn[1].size(640, 480);
videosdn[1].hide();
videosdn[2].size(640, 480);
videosdn[2].hide();
videosdn[3].size(640, 480);
videosdn[3].hide();
videosf = [createVideo('f0.mp4'), createVideo('f1.mp4'), createVideo('f2.mp4'),createVideo('f3.mp4')];
videosf[0].size(640, 480);
videosf[0].hide();
videosf[1].size(640, 480);
videosf[1].hide();
videosf[2].size(640, 480);
videosf[2].hide();
videosf[3].size(640, 480);
videosf[3].hide();
videosr = [createVideo('r0.mp4'), createVideo('r1.mp4'), createVideo('r2.mp4'),createVideo('r3.mp4')];
videosr[0].size(640, 480);
videosr[0].hide();
videosr[1].size(640, 480);
videosr[1].hide();
videosr[2].size(640, 480);
videosr[2].hide();
videosr[3].size(640, 480);
videosr[3].hide();
videosl = [createVideo('l0.mp4'), createVideo('l1.mp4'), createVideo('l2.mp4'),createVideo('l3.mp4')];
videosl[0].size(640,480);
videosl[0].hide();
videosl[1].size(640, 480);
videosl[1].hide();
videosl[2].size(640, 480);
videosl[2].hide();
videosl[3].size(640, 480);
videosl[3].hide();
}
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
video.size(640, 480);
poseNet = ml5.poseNet(video, modelReady);
poseNet.on('pose', gotPoses)
button = createButton("play");
button.mousePressed(togglePlaying);
amp = new p5.Amplitude();
playVideosUp();
playVideosDown();
playVideosForward();
playVideosRight();
playVideosLeft();
}
function gotPoses(poses) {
//console.log(poses);
if (poses.length > 0) {
let nX = poses[0].pose.keypoints[0].position.x;
let nY = poses[0].pose.keypoints[0].position.y;
let elX = poses[0].pose.keypoints[1].position.x;
let elY = poses[0].pose.keypoints[1].position.y;
let erX = poses[0].pose.keypoints[2].position.x;
let erY = poses[0].pose.keypoints[2].position.y;
let hlX = poses[0].pose.keypoints[9].position.x;
let hlY = poses[0].pose.keypoints[9].position.y;
let hrX = poses[0].pose.keypoints[10].position.x;
let hrY = poses[0].pose.keypoints[10].position.y;
noseX = lerp(noseX, nX, 0.5);
noseY = lerp(noseY, nY, 0.5);
eyelX = lerp(eyelX, elX, 0.5);
eyelY = lerp(eyelY, elY, 0.5);
eyerX = lerp(eyerX, erX, 0.5);
eyerY = lerp(eyerY, erY, 0.5);
handlX = lerp(handlX, hlX, 0.5);
handlY = lerp(handlY, hlY, 0.5);
handrX = lerp(handrX, hrX, 0.5);
handrY = lerp(handrY, hrY, 0.5);
}
}
function modelReady() {
console.log('model ready');
}
function draw() {
playSong();
//videoView();
if (song.isPlaying()) {
if (noseY > height/2) {
image(videosdn[downVideoIndex], 0, 0, 640, 480);
} else if (handrX < width/2 && handrY < height/2 && handlX > width/2 && handlY < height/2){
image(videosup[upVideoIndex], 0, 0, 640, 480);
} else if (handlX > width/2 && handlY < height/2) {
image(videosl[leftVideoIndex],0, 0, 640, 480);
} else if (handrX < width/2 && handrY < height/2) {
image(videosr[rightVideoIndex], 0, 0, 640, 480);
} else {
image(videosf[forwardVideoIndex], 0, 0, 640, 480);
}
}
}
function playVideosUp() {
upVideoIndex = floor(random(videosup.length));
videosup[upVideoIndex].play();
videosup[upVideoIndex].onended(function() {
playVideosUp();
}); }
function playVideosDown() {
downVideoIndex = floor(random(videosdn.length));
videosdn[downVideoIndex].play();
videosdn[downVideoIndex].onended(function() {
playVideosDown();
});
}
function playVideosForward() {
forwardVideoIndex = floor(random(videosf.length));
videosf[forwardVideoIndex].play();
videosf[forwardVideoIndex].onended(function() {
playVideosForward();
}); }
function playVideosRight() {
rightVideoIndex = floor(random(videosr.length));
videosr[rightVideoIndex].play();
videosr[rightVideoIndex].onended(function() {
playVideosRight();
}); }
function playVideosLeft() {
leftVideoIndex = floor(random(videosl.length));
videosl[leftVideoIndex].play();
videosl[leftVideoIndex].onended(function() {
playVideosLeft();
}); }
function playSong() {
var vol = amp.getLevel();
var diam = map(vol, 0, 0.5, 10, 200);
}
function togglePlaying() {
if (!song.isPlaying()) {
song.play();
button.html("stop");
} else {
song.stop();
button.html("play");
}
}
function videoView() {
image(video, 0, 0, 640,480);
stroke(126);
line(eyelX, eyelY, noseX, noseY);
line(eyerX, eyerY, noseX, noseY);
fill(255, 0, 0);
ellipse(noseX, noseY, 20);
fill(0, 0, 255);
ellipse(handlX, handlY, 20);
fill(0, 255, 0);
ellipse(handrX, handrY, 20);
fill(65, 187, 244);
ellipse(eyelX, eyelY, 20);
fill(238, 244, 66);
ellipse(eyerX, eyerY, 20);
//left hand up
if (handlX > 320 && handlY < 240) {
fill(0, 255, 0);
rect(500, 100, 50, 100);
}
//right hand up
if (handrX < 320 && handrY < 240) {
fill(0, 255, 0);
rect(100, 100, 50, 100);
}
//both hands up
if (handrX < 320 && handrY < 240 && handlX > 320 && handlY < 240) {
fill(0, 255, 0);
rect(320, 240, 50, 100);
}
//head down
if (noseY > height/2) {
fill(220, 139, 237);
ellipse(320, 400, 60, 60);
}
/* //hands out
if (handlX < 120 && handrX > 520 && handlY < 300 && handrY < 300) {
fill(0, 255, 0);
rect(340, 100, 60, 60);
}
/* //right arm stretch
if (handrX > 320 && handrY < 240) {
fill(255, 0, 0);
rect(480, 100, 50, 100);
}
let eld = dist(eyelX, eyelY, noseX, noseY);
let erd = dist(eyerX, eyerY, noseX, noseY);
/*
// head looking right/left or down
if (eyelY && eyerY < height / 2) {
if (eld > erd + 10) {
fill(0, 0, 255);
rect(260, 300, 70, 150);
} else {
fill(0, 0, 0);
rect(340, 300, 70, 150);
}
}
*/
}