|
/* |
|
* This editor shows the possible faces that can be created |
|
*/ |
|
|
|
const canvasWidth = 960; |
|
const canvasHeight = 500; |
|
let slider1, slider2, slider3, slider4, slider5; |
|
let slider6, slider7, slider8, slider9, slider10; |
|
let faceSelector; |
|
let faceGuideCheckbox; |
|
|
|
function setup () { |
|
// create the drawing canvas, save the canvas element |
|
let main_canvas = createCanvas(canvasWidth, canvasHeight); |
|
main_canvas.parent('canvasContainer'); |
|
|
|
// create sliders |
|
slider1 = createSlider(0, 100, 50); |
|
slider2 = createSlider(0, 100, 50); |
|
slider3 = createSlider(0, 100, 50); |
|
slider4 = createSlider(0, 100, 50); |
|
slider5 = createSlider(0, 100, 50); |
|
slider6 = createSlider(0, 100, 50); |
|
slider7 = createSlider(0, 100, 50); |
|
slider8 = createSlider(0, 100, 50); |
|
slider9 = createSlider(0, 100, 50); |
|
slider10 = createSlider(0, 100, 50); |
|
|
|
slider1.parent('slider1Container'); |
|
slider2.parent('slider2Container'); |
|
slider3.parent('slider3Container'); |
|
slider4.parent('slider4Container'); |
|
slider5.parent('slider5Container'); |
|
slider6.parent('slider6Container'); |
|
slider7.parent('slider7Container'); |
|
slider8.parent('slider8Container'); |
|
slider9.parent('slider9Container'); |
|
slider10.parent('slider10Container'); |
|
|
|
faceGuideCheckbox = createCheckbox('', false); |
|
faceGuideCheckbox.parent('checkbox1Container'); |
|
|
|
faceSelector = createSelect(); |
|
faceSelector.option('1'); |
|
faceSelector.option('2'); |
|
faceSelector.option('3'); |
|
faceSelector.value('1'); |
|
faceSelector.parent('selector1Container'); |
|
} |
|
|
|
const bg_color = [225, 206, 187]; |
|
|
|
function draw () { |
|
strokeWeight(0.2); |
|
|
|
let mode = faceSelector.value(); |
|
|
|
background(bg_color); |
|
|
|
let s1 = slider1.value(); |
|
let s2 = slider2.value(); |
|
let s3 = slider3.value(); |
|
let s4 = slider4.value(); |
|
let s5 = slider5.value(); |
|
let s6 = slider6.value(); |
|
let s7 = slider7.value(); |
|
let s8 = slider8.value(); |
|
let s9 = slider9.value(); |
|
let s10 = slider10.value(); |
|
|
|
let show_face_guide = faceGuideCheckbox.checked(); |
|
|
|
// use same size / y_pos for all faces |
|
let face_size = canvasWidth / 5; |
|
let face_scale = face_size / 10; |
|
let face_y = height / 2; |
|
let face_x = width / 2; |
|
|
|
push(); |
|
translate(face_x, face_y); |
|
scale(face_scale); |
|
|
|
push(); |
|
if (mode == '1') { |
|
// draw 3rd face using values mapped from 8 sliders |
|
|
|
// length of the nose from 2 to 4 |
|
let noseLength = map(s1, 0, 100, 2, 4); |
|
|
|
// positions of each row of teeth from -1 to 2 |
|
let teethPos1 = map(s2, 0, 100, -1, 2); |
|
|
|
let teethPos2 = map(s3, 0, 100, -1, 2); |
|
|
|
let teethPos3 = map(s4, 0, 100, -1, 2); |
|
|
|
let teethPos4 = map(s5, 0, 100, -1, 2); |
|
|
|
let teethPos5 = map(s6, 0, 100, -1, 2); |
|
|
|
// positions of iris from left or right |
|
let irisPos1 = map(s7, 0, 100, -3, -1); |
|
|
|
let irisPos2 = map(s8, 0, 100, 1, 3); |
|
|
|
|
|
face1(noseLength, teethPos1, teethPos2, teethPos3, teethPos4, teethPos5, irisPos1, irisPos2); |
|
} |
|
|
|
if (mode == '2') { |
|
// draw 3rd face using values mapped from 7 sliders |
|
|
|
// positions of teeth |
|
let teethPos1 = map(s1, 0, 100, 1, 3); |
|
|
|
let teethPos2 = map(s2, 0, 100, 1, 3); |
|
|
|
let teethPos3 = map(s3, 0, 100, 1, 3); |
|
|
|
// size of eyes |
|
let eyeSize = map(s4, 0, 100, 3, 4); |
|
|
|
let iris = map(s5, 0, 100, 1, 2); |
|
|
|
// roundness of the face |
|
let rectSize = map(s6, 0, 100, 0, 3); |
|
|
|
// length of the nose |
|
let noseLength = map(s7, 0, 100, 2, 4); |
|
|
|
|
|
face2(teethPos1, teethPos2, teethPos3, eyeSize, iris, rectSize, noseLength); |
|
} |
|
|
|
if (mode == '3') { |
|
// draw 3rd face using values mapped from 7 sliders |
|
|
|
// size of eyes |
|
let eyeSize = map(s1, 0, 100, 3, 4); |
|
|
|
// size of iris |
|
let iris = map(s2, 0, 100, 1, 2); |
|
|
|
// length of nose |
|
let noseLength = map(s3, 0, 100, -1, -8); |
|
|
|
// positions of teeth |
|
let teethPos1 = map(s4, 0, 100, 1, 3); |
|
|
|
let teethPos2 = map(s5, 0, 100, 1, 3); |
|
|
|
let teethPos3 = map(s6, 0, 100, 1, 3); |
|
|
|
//let teethPos4 = map(s7, 0, 100, 1, 3); |
|
|
|
|
|
face3(eyeSize, iris, noseLength, teethPos1, teethPos2, teethPos3, teethPos4); |
|
} |
|
|
|
pop(); |
|
|
|
if(show_face_guide) { |
|
strokeWeight(0.1); |
|
rectMode(CORNER); |
|
noFill() |
|
stroke(0, 0, 255); |
|
// ellipse(0, 0, 20, 20); |
|
rect(-10, -10, 20, 20); |
|
line( 0, -11, 0, -10); |
|
line( 0, 10, 0, 11); |
|
line(-11, 0,-10, 0); |
|
line( 11, 0, 10, 0); |
|
} |
|
|
|
pop(); |
|
} |
|
|
|
function keyTyped() { |
|
if (key == '!') { |
|
saveBlocksImages(); |
|
} |
|
else if (key == '@') { |
|
saveBlocksImages(true); |
|
} |
|
} |