xxxxxxxxxx
// Example Code
// TRY Incorperating the following variables in your code
// leftHandX,leftHandY,rightHandX,rightHandY,leftEyeX,leftEyeY,rightEyeX,rightEyeY
var c3
var c2
var c1
let i = j = 0
function setup() {
createCanvas(640, 480);
loadPoseNet()
background(255);
}
function draw() {
background(vid.get())
fill(255,0,255)
let faceScale =(leftEyeX-rightEyeX)/width*10
console.log('scl:',faceScale)
phinease(noseX,noseY,faceScale)
haircolor()
}
function haircolor(){
j = i
if (i >= j){
c1 = random(255)
c2 = random(255)
c3 = random(255)
}
//text("Current Second is : " + i, 50, 30);
i = second()
}
function phinease(x, y, scl) {
translate(x-100, y - 100 * scl)
scale(scl)
// rotate(frameCount*0.01)
translate(-width / 2, -height / 2)
strokeWeight(3)
stroke(0)
fill(255,215,200)
// face
beginShape()
vertex(410,100)
vertex(350,180)
vertex(290,320)
vertex(300,370)
vertex(420,560)
vertex(530,362)
vertex(530,310)
vertex(470,160)
vertex(410,100)
endShape(CLOSE)
// left ear
strokeWeight(0)
beginShape()
vertex(295,320)
vertex(260,320)
vertex(250,340)
vertex(260,370)
vertex(270,380)
vertex(305,370)
endShape(CLOSE)
// right ear
beginShape()
vertex()
vertex(525,310)
vertex(550,300)
vertex(570,310)
vertex(580,330)
vertex(560,370)
vertex(525,360)
endShape(CLOSE)
// left ear outline
strokeWeight(3)
beginShape(LINES)
vertex(291,320)
vertex(260,320)
vertex(260,320)
vertex(250,340)
vertex(250,340)
vertex(260,370)
vertex(260,370)
vertex(270,380)
vertex(270,380)
vertex(301,370)
endShape()
// right ear outline
strokeWeight(3)
beginShape(LINES)
vertex(529,308)
vertex(550,300)
vertex(550,300)
vertex(570,310)
vertex(570,310)
vertex(580,330)
vertex(580,330)
vertex(560,370)
vertex(560,370)
vertex(530,360)
endShape()
// left eye
fill(255)
ellipse(345, 260, 100, 100)
// right eye
fill(255)
ellipse(477, 257, 100, 100)
// left eyeball
fill(0)
circle(345,260,40)
// right eyeball
fill(0)
circle(477,257,40)
// left inner eyeball
strokeWeight(0)
fill(255)
circle(487,250,10)
// right inner eyeball
strokeWeight(0)
fill(255)
circle(354,252,10)
//hair
/*stroke(255)
point(360,160)
point(350,150)
point(350,120)
point(350,130)
point(360,130)
point(350,90)
point(370,60)
point(370,70)
point(380,80)
point(380,50)
point(410,20)
point(410,40)
point(410,50)
point(470,20)
point(520,40)
point(470,60)
point(440,80)
point(460,90)
point(490,100)
point(460,110)
point(440,120)
point(460,120)
point(470,120)
point(460,130)
point(450,140)*/
strokeWeight(5)
stroke(0)
fill(c1,c2,c3)
beginShape()
curveVertex(360,160)
curveVertex(360,160)
curveVertex(350,150)
curveVertex(350,120)
curveVertex(350,130)
curveVertex(360,130)
curveVertex(350,90)
curveVertex(370,60)
curveVertex(370,70)
curveVertex(380,80)
curveVertex(380,50)
curveVertex(410,20)
curveVertex(410,40)
curveVertex(410,50)
curveVertex(470,20)
curveVertex(520,40)
curveVertex(470,60)
curveVertex(440,80)
curveVertex(460,90)
curveVertex(490,100)
curveVertex(460,110)
curveVertex(440,120)
curveVertex(460,120)
curveVertex(470,120)
curveVertex(460,130)
curveVertex(450,140)
curveVertex(450,140)
endShape()
//mouth
noFill()
strokeWeight(3)
stroke(0)
arc(410, 390, 100, 45, 0,PI)
//nose
noFill()
strokeWeight(3)
stroke(0)
arc(436,320,70,30,PI, PI + QUARTER_PI)
}
// dont touch this code here
// poseNet Variables
let vid
let noseX = noseY = rightHandX = rightHandY = leftHandX = leftHandY = leftEyeX = leftEyeY = rightEyeX = rightEyeY = 0
let img;
let poseNet;
let poses = [];
function loadPoseNet() {
vid = createCapture(640, 480)
vid.hide()
poseNet = ml5.poseNet(vid, modelLoaded);
// set some options
let options = {
imageScaleFactor: 1,
minConfidence: 0.25
}
// Listen to new 'pose' events
poseNet.on("pose", function(results) {
poses = results;
if (!poses[0]) return
let pose = poses[0].pose
if (pose) {
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
}
return curr
}
function modelLoaded() {
console.log('model is loaded')
}