This is variation of the first portrait project. The cheek of Bao expands, and the blushes move as well. Also, the saturation of the background and the vertical size of the mouth are randomized, too.
variableface
var cheek = 200;var blushLoc = 200;var mouth = 210;var bgTint = 67;var blushSat = 87.6;
let value1x = 193;
let value1y = 250;
let value2x = 190;
let value2y = 265;
let value3x = 187;
let value3y = 250;
function setup() {
createCanvas(400, 400);
noStroke();
colorMode(HSL);
let c = color(355, 67, 67);
let value = saturation(c);
fill(c);
rect(0,0, 400, 400);
}
function draw(){
colorMode(HSL);
strokeWeight(0)
let c = color(355, bgTint, 67);
let value = saturation(c);
fill(c);
rect(0,0, 400, 400);
fill(212, 57.6, 80.6)
strokeWeight(0)
ellipse(200, 410, 460, 300)
fill(17, 56.2, 93.7);
strokeWeight(0);
beginShape();
curveVertex(200, 200); curveVertex(200, 200);
curveVertex(175, 230);
curveVertex(150, 270); curveVertex(125, 280);
curveVertex(120, 285);
curveVertex(135, 300);
curveVertex(160, 288);
curveVertex(200, 290); curveVertex(240, 288);
curveVertex(265, 300);
curveVertex(280, 285);
curveVertex(275, 280);
curveVertex(250, 270); curveVertex(225, 230);
curveVertex(200, 200);
curveVertex(200, 200);
endShape();
fill(17, 56.2, 93.7);
strokeWeight(0);
beginShape();
curveVertex(200, 100);
curveVertex(200, 100);
curveVertex(180, 135);
curveVertex(325 - cheek, cheek - 30); curveVertex(120, cheek); curveVertex(200, 220+(cheek*(1/15))); curveVertex(280, cheek); curveVertex(75 + cheek, cheek - 30); curveVertex(220, 135);
curveVertex(200, 100);
curveVertex(200, 100);
endShape();
fill(0,0,15.7);
circle(170, 175, 20)
fill(47, 89.7, 73.3);
strokeWeight(0);
beginShape();
curveVertex(180,175); curveVertex(180,175);
curveVertex(173,178);
curveVertex(170,185); curveVertex(167,178);
curveVertex(160,175);
curveVertex(167,172);
curveVertex(170,165);
curveVertex(173,172);
curveVertex(180, 175);
curveVertex(180, 175); endShape();
fill(0,0,15.7)
circle(230, 175, 20) fill(47, 89.7, 73.3);
strokeWeight(0);
beginShape();
curveVertex(240,175); curveVertex(240,175);
curveVertex(233,178);
curveVertex(230,185); curveVertex(227,178);
curveVertex(220,175);
curveVertex(227,172);
curveVertex(230,165);
curveVertex(233,172);
curveVertex(240, 175);
curveVertex(240, 175); endShape();
fill(30)
strokeWeight(1);
stroke(30);
beginShape();
curveVertex(192.5, 200);
curveVertex(192.5, 200);
curveVertex(196.5, mouth);
curveVertex(200, mouth+4);
curveVertex(203.5, mouth);
curveVertex(207.5, 200);
curveVertex(207.5, 200);
endShape();
fill(17, 56.2, 93.7);
strokeWeight(1);
stroke(30);
circle(192.5, 200, 15);
fill(17, 56.2, 93.7);
strokeWeight(1);
stroke(30);
circle(207.5, 200, 15);
fill(17, 56.2, 93.7);
strokeWeight(0);
rect(170, 190, 60, 10);
fill(355, blushSat, 74.7);
strokeWeight(0);
circle(340-blushLoc, blushLoc-10, 24); fill(355, blushSat, 74.7);
strokeWeight(0);
circle(blushLoc+60, blushLoc-10, 24)
fill(17, 56.2, 93.7);
stroke(30)
strokeWeight(1);
beginShape();
curveVertex(value1x, value1y);
curveVertex(value1x, value1y);
curveVertex(value2x, value2y);
curveVertex(value3x, value3y);
curveVertex(value3x, value3y);
endShape();
fill(17, 56.2, 93.7);
stroke(30)
strokeWeight(1);
beginShape();
curveVertex(207, 250);
curveVertex(207, 250);
curveVertex(210, 265);
curveVertex(213, 250);
curveVertex(213, 250);
endShape();
}
function mousePressed() {
bgTint = random(0, 100);
cheek = random(200, 250);
blushLoc = 200 + (cheek - 200)*(3/5);
mouth = random(210, 230)
blushSat ++;
if (value2y === 265) {
value2y = 230;
} else {
value2y = 265;
}
}