for (i = 0; i < 100; i+=5){
head(noseX, noseY,200-i,100-i)
mouth(noseX, noseY+25, 100)
ellipse(noseX, noseY, 20, 20);
ellipse(rightHandX, rightHandY, 20, 20);
ellipse(leftHandX, leftHandY, 20, 20);
eyeBall(leftEyeX, leftEyeY, 'red');
eyeBall(rightEyeX, rightEyeY, 'blue');
function head(x,y,w,h,col){
function eyeBall(x,y,col){
let noseX = noseY = rightHandX = rightHandY = leftHandX = leftHandY = leftEyeX = leftEyeY = rightEyeX = rightEyeY = 0
vid = createCapture(640, 480)
poseNet = ml5.poseNet(vid, modelLoaded);
poseNet.on("pose", function(results) {
noseX = updateValue('nose', 'x', pose, noseX)
noseY = updateValue('nose', 'y', pose, noseY)
rightHandX = updateValue('rightWrist', 'x', pose, rightHandX)
rightHandY = updateValue('rightWrist', 'y', pose, rightHandY)
leftHandX = updateValue('leftWrist', 'x', pose, leftHandX)
leftHandY = updateValue('leftWrist', 'y', pose, leftHandY)
leftEyeX = updateValue('leftEye', 'x', pose, leftEyeX)
leftEyeY = updateValue('leftEye', 'y', pose, leftEyeY)
rightEyeX = updateValue('rightEye', 'x', pose, rightEyeX)
rightEyeY = updateValue('rightEye', 'y', pose, rightEyeY)
function updateValue(key1, key2, kp, curr) {
if (kp[key1].confidence > 0.2) {
return (kp[key1][key2] - curr) * 0.5 + curr
console.log('model is loaded')