Kevin Riordan Project-02-Variable-Face-Section C

sketch

/*Kevin Riordan
Section C
kzr@andrew.cmu.edu
project_02*/
//variables for background color, random stuff
var backColorR = 0;
var backColorG = 0;
var backColorB = 0;
var strokeR = 0;
//variable for eyes (position, color, and size)
var eyeWidth = 0;
var eyeHeight = 0;
var eyeColorR = 0;
var eyeColorG = 0;
var eyeColorB = 0;
var eyePosX = 0;
var eyePosY = 0;
var eyeballWidth = 0;
var eyeballHeight = 0;
//variable for eyebrows
var browColor = 0;
var browL = 0;
var browR = 0;
//variable for face size
var faceWidth = 0;
var faceHeight = 0;
//variable for neck size
var neckW = 0;
//variable for hat color and coordinates
var hatColorR = 0;
var hatColorB = 0;
var hatColorG = 0;
var hat1 = 0;
var hat2 = 0;
var hat3 = 0;
var hat4 = 0;
var hat5 = 0;
var hat6 = 0;
//variable for nose width and height
var noseW = 0;
var noseH = 0;
//variable for mouth color and curve
var mouthR = 0;
var mouthB = 0;
var mouthG = 0;
var mouthCurveI = 0;
var mouthCurveF = 0;
var mouthStart = 0;
var mouthWeight = 0;
var mouthInside1 = 0;
var mouthInside2 = 0;
var mouthInside3 = 0;
function setup() {
    createCanvas(480, 640);
}

function draw() {
    background(backColorR,backColorG,backColorB);
    //neck
    stroke(0);
    strokeWeight(2);
    fill(250,220,200);
    rect(240-(neckW/2),320,neckW,320);
    //face
    ellipse(240,320,faceWidth,faceHeight);
    //eyes
    strokeWeight(strokeR);
    fill(255);
    ellipse(eyePosX, eyePosY, eyeWidth, eyeHeight);
    ellipse(480-eyePosX, eyePosY, eyeWidth, eyeHeight);
    strokeWeight(strokeR+2);
    fill(eyeColorR,eyeColorB,eyeColorG);
    ellipse(eyePosX, eyePosY, eyeballWidth, eyeballHeight);
    ellipse(480-eyePosX, eyePosY, eyeballWidth, eyeballHeight);
    //eyebrows
    strokeWeight(strokeR+3);
    stroke(strokeR);
    noFill();
    beginShape();
    curveVertex(eyePosX-(eyeWidth/2)-(browL*2),eyePosY-(eyeHeight/2)+browL);
    curveVertex(eyePosX-(eyeWidth/2)-(browL*2),eyePosY-(eyeHeight/2)+browL);
    curveVertex(eyePosX, eyePosY-(eyeHeight/2)-(browL*2));
    curveVertex(eyePosX+(eyeWidth/2)+(browL*2),eyePosY-(eyeHeight/2)+(browL));
    curveVertex(eyePosX+(eyeWidth/2)+(browL*2),eyePosY-(eyeHeight/2)+(browL));
    endShape();
    beginShape();
    curveVertex(480-eyePosX-(eyeWidth/2)-(browR*2),eyePosY-(eyeHeight/2)+browR);
    curveVertex(480-eyePosX-(eyeWidth/2)-(browR*2),eyePosY-(eyeHeight/2)+browR);
    curveVertex(480-eyePosX, eyePosY-(eyeHeight/2)-(browR*2));
    curveVertex(480-eyePosX+(eyeWidth/2)+(browR*2), eyePosY-(eyeHeight/2)+browR);
    curveVertex(480-eyePosX+(eyeWidth/2)+(browR*2), eyePosY-(eyeHeight/2)+browR);
    endShape();
    //mouth
    stroke(mouthR,mouthB,mouthG);
    strokeWeight(mouthWeight);
    fill(mouthInside1,mouthInside2,mouthInside3);
    beginShape();
    curveVertex(eyePosX,eyePosY+mouthStart);
    curveVertex(eyePosX,eyePosY+mouthStart);
    curveVertex(240,eyePosY+mouthStart+mouthCurveF);
    curveVertex(480-eyePosX,eyePosY+mouthStart);
    curveVertex(480-eyePosX,eyePosY+mouthStart);
    endShape();
    fill(250,220,200);
    beginShape();
    curveVertex(eyePosX,eyePosY+mouthStart);
    curveVertex(eyePosX,eyePosY+mouthStart);
    curveVertex(240,eyePosY+mouthStart+mouthCurveI);
    curveVertex(480-eyePosX,eyePosY+mouthStart);
    curveVertex(480-eyePosX,eyePosY+mouthStart);
    endShape();
    //nose
    stroke(0);
    strokeWeight(2);
    fill(250,220,200);
    beginShape();
    curveVertex(240-(noseW/2),320+(faceHeight/8));
    curveVertex(240-(noseW/2),320+(faceHeight/8));
    curveVertex(240,320-noseH);
    curveVertex(240+(noseW/2),320+(faceHeight/8));
    curveVertex(240+(noseW/2),320+(faceHeight/8));
    endShape();
    strokeWeight(strokeR-1);
    line(240-(noseW/2),320+(faceHeight/8),240+(noseW/2),320+(faceHeight/8));
    //hat
    strokeWeight(4);
    fill(hatColorR,hatColorB,hatColorG);
    triangle(hat1,hat2,hat3,hat4,hat5,hat6);
}

function mousePressed() {
    backColorR = random(0,255);
    backColorG = random(0,255);
    backColorB = random(0,255);
    hatColorR = random(0,255);
    hatColorB = random(0,255);
    hatColorG = random(0,255);
    mouthR = random(0,255);
    mouthB = random(0,255);
    mouthG = random(0,255);
    mouthCurveI = random(0,25);
    mouthCurveF = random(eyeWidth,eyeWidth*1.3);
    mouthStart = random(60,90);
    mouthWeight = random(2,5);
    mouthInside1 = random(100,200);
    mouthInside2 = random(100,200);
    mouthInside3 = random(100,200);
    strokeR = random(1,5);
    eyeWidth = random(30,80);
    eyeHeight = random(30,80);
    eyeballWidth = random(10,80);
    eyeballHeight = random(10,80);
    eyeballHeight = constrain(eyeballHeight,10,eyeHeight-10);
    eyeballWidth = constrain(eyeballWidth,10,eyeWidth-10);
    faceWidth = random(350,450);
    faceHeight = random(400,550);
    noseW = random(40,140);
    noseH = random(40,60);
    neckW = random(160,450);
    neckW = constrain(neckW,160,faceWidth-180);
    eyeColorR = random(100,200);
    eyeColorB = random(50,150);
    eyeColorG = random(75,175);
    eyePosX = random(130,150);
    eyePosY = random(280,350);
    browColor = random(0,255);
    browL = random(5,15);
    browR = random(5,15);
    hat1= 240-(faceWidth/1.5);
    hat1= constrain(hat1,0,480);
    hat2= 320-(faceHeight/1.8)+150;
    hat2= constrain(hat2,0,640);
    hat3= 240;
    hat4= 320-(faceHeight/2)-80;
    hat4= constrain(hat4,0,640);
    hat5= 240+(faceWidth/1.5);
    hat5= constrain(hat5,0,480);
    hat6= 320-(faceHeight/1.8)+150;
    hat6= constrain(hat6,0,640);
}

I changed a lot of variables for the face, so every time the mouse is clicked a lot of colors and shapes and positions change. Sometimes the face looks pretty weird, but I used constrain for a lot of the variables so the face should still look like a face no matter what. I also think I layered the mouth behind the nose well, so even when the mouth overlaps the nose, it just looks like the nose is hanging over the mouth.

Kevin Riordan Project-01

kzr-project01

/*Kevin Riordan
Section C
kzr@andrew.cmu.edu
project_01*/
function setup() {
    createCanvas(500, 525);
    background(50,50,50);
}

function draw() {
    //ears
    fill(183,128,100);
    arc(395,260,40,80,PI+HALF_PI,HALF_PI,PIE);
    arc(105,260,40,80,HALF_PI,PI+HALF_PI,PIE);
    //face
    fill(219,182,156);
    strokeWeight(1);
    quad(100,150,400,150,390,430,110,430);
    //neck and body
    rect(200,430,100,95);
    stroke(0);
    line(200,430,300,430);
    //hair
    fill(79,48,35);
    noStroke();
    quad(100,150, 250,90,440,78,420,150);
    triangle(100,150,420,150,100,170);
    stroke(0);
    //nose
    noStroke();
    fill(183,128,100);
    triangle(250,240,275,320,225,320);
    arc(250,320,60,50,PI,2*PI,PIE);
    //mouth
    stroke(0);
    strokeWeight(1);
    fill(255);
    arc(250, 350, 160, 80, 0, PI, PIE);
    line(170,350,330,350);
    //eyebrows
    stroke(79,48,35);
    strokeWeight(3);
    line(150,200,200,205);
    line(300,205,350,200);
    //eyes
    stroke(0);
    strokeWeight(2);
    ellipse(175,230,50,20);
    ellipse(325,230,50,20);
    noStroke();
    fill(0);
    ellipse(175,230,20,20);
    ellipse(325,230,20,20);
}

I have never written code before, so this was pretty hard for me, but by the time I finished I felt much more comfortable with how to add shapes, and what order to write stuff in.

Kevin Riordan Looking Outwards-01

This project is called The Healer, and was created by Brian Tessler and Jon Baken as part of their entertainment website, Cool 3D World. I could not find exactly what program they used, but it seems to be something similar to Maya, Daz3D, or Cinema 4D. This video caught my attention because of how different the style is from other animated videos, and how the backgrounds seem realistic but the character models all seem to be purposely weird and lower quality than they could be. I admire how the video doesn’t seem to be inspired by anything, and how Brian Tessler leaves the video up for interpretation, never revealing the meaning behind any of his videos. In an interview, he said that even though the video is meaningful to him, it is up to the viewer to figure out their own personal meaning, and how it affects their life, if it even does at all. He goes on to say that one of his goals with the project is to make the viewer feel all range of emotions from his videos, and even though the content is ridiculous, it can sometimes still be sad, crazy, or even scary.

I got the information from this site:  https://metalmagazine.eu/en/post/interview/brian-tessler-the-internet-in-3d