Looking Outwards-02

http://blog.drwoohoo.com/turbulence-watercolor-magic/

Turbulence by Dr.Woohoo is an interesting piece since it combines the use watercolor, which is visually organic, and a robotic arm to create a precise and organic piece. I admire the artist’s desire to push the boundaries of basic mechanical systems to revolutionize traditional forms of art. I think it is a noble ambition since it provides traditional art a means to escape its own boundaries. I think the wonderful thing about are is the infinite creative ways artist can utilize the same mediums. Dr. Woohoo’s use of mechanics, increases the amount of possibilities for which these mediums could be used. The algorithm behind Turbulence, appears to be pretty simple. The machine draws simple patterns while filling up on paint when needed. I would like to know if the layout of these simple patterns are randomized or not.  Dr.Woohoo was the directly behind the design the mechanical arm was to draw. He was able to manifest his own sensibilities with various factors out of the arms control like: color, color overlap, and layering. He was also able to ensure that the pattern being drawn would evolve into a hive-like pattern.

Project-02-Variable-Face

sketch-98.js

var hairColor = "black" 
var cheekHeight = 160;
var cheekWidth = 160;
var jawHeight = 320;
var jawWidth = 160;
var chinY = jawHeight+100;
var chinX = 320;
var skin = (229,160,115);
var eyeWidth = 64;
var squint = 24;
var eyeBLX = 320-cheekWidth/2;
var eyeBY = cheekHeight; 
var eyeBRX = eyeBLX+cheekWidth;
var eyeY = eyeBY +50 ;
var eyeLX = eyeBLX;
var eyeRX = eyeBRX;
 
var eyeSize = 75;
var irisSize = eyeSize/2;
var pupilSize = irisSize/4;
var eyeColor = "blue"
var noseWidth=25;
var noseLength=80;
var nostrilWidth = noseWidth+20

var mouthHeight = jawHeight
var mouthWidth = jawWidth - 60
var lipsize = 10

function setup() {
    createCanvas(640, 480); 
}

function draw() {
    background(180,23,230);
    //noStroke();
    strokeWeight(3);

   //hair
    fill(hairColor);
    ellipse(width/2,height/2,500,500);

    fill(skin);
    beginShape();
    curveVertex(width/4,100);
    curveVertex(width/4,100);//left temple

    curveVertex(cheekWidth,cheekHeight);
    curveVertex(jawWidth, jawHeight);

    curveVertex(chinX,chinY);

    curveVertex((width-jawWidth),jawHeight); 
    curveVertex((width-cheekWidth),cheekHeight);
    curveVertex(width-(width/4),100);

    curveVertex(width-(width/4),100);//right temple
    endShape();

    //eyebrows
    fill(hairColor);
    beginShape();
    vertex(eyeBLX-eyeWidth,eyeBY);
    bezierVertex(eyeBLX,eyeBY,eyeBLX+(eyeWidth/2),eyeBY+squint,eyeBLX+eyeWidth,eyeBY);
    bezierVertex(eyeBLX,eyeBY,eyeBLX+(eyeWidth/2),eyeBY-squint,eyeBLX-eyeWidth,eyeBY);
    endShape();

    beginShape();
    vertex(eyeBRX-eyeWidth,eyeBY);
    bezierVertex(eyeBRX, eyeBY, eyeBRX+(eyeWidth/2),eyeBY-squint,eyeBRX+eyeWidth,eyeBY);
    bezierVertex(eyeBRX,eyeBY,eyeBRX+(eyeWidth/2),eyeBY+squint, eyeBRX-eyeWidth,eyeBY);
    endShape();

    //eyes
   fill("white"); //eyeball
   ellipse(eyeLX,eyeY,eyeSize*1.2,irisSize);
   ellipse(eyeRX,eyeY,eyeSize*1.2,irisSize);

   fill(eyeColor); //iris
   ellipse(eyeLX,eyeY, irisSize, irisSize);
   ellipse(eyeRX, eyeY,irisSize,irisSize);

   fill("black");//pupils
   ellipse(eyeLX,eyeY, pupilSize, pupilSize);
   ellipse(eyeRX,eyeY,pupilSize,pupilSize);

   //nose
   strokeWeight(2);
   fill(skin);
   beginShape();
   curveVertex(noseWidth+(width/2),cheekHeight+30);
   curveVertex(noseWidth+(width/2),cheekHeight+30);
   curveVertex((width/2)+nostrilWidth,cheekHeight+noseLength+30);
   curveVertex((width/2)+noseWidth, cheekHeight+noseLength+30);

   curveVertex(width/2,noseLength+cheekHeight+40);

   curveVertex((width/2)-noseWidth,noseLength + cheekHeight+30);
   curveVertex((width/2)-nostrilWidth,noseLength + cheekHeight+30);
   curveVertex((width/2)-noseWidth,cheekHeight+30);
   curveVertex((width/2)-noseWidth,cheekHeight+30);
   endShape();
   
   //mouth 

   fill(255,10,10);

   beginShape(); //lower lip
   curveVertex((width/2)-mouthWidth,mouthHeight);
   curveVertex((width/2)-mouthWidth,mouthHeight);
   curveVertex((width/2)-(mouthWidth/2),mouthHeight+(lipsize/2));
   curveVertex(width/2, mouthHeight+lipsize);
   curveVertex((width/2)+(mouthWidth/2),mouthHeight+(lipsize/2));
   curveVertex((width/2)+mouthWidth,mouthHeight);
   curveVertex((width/2)+mouthWidth,mouthHeight);
   //upper lip
   curveVertex((width/2)-mouthWidth,mouthHeight);
   curveVertex((width/2)-mouthWidth,mouthHeight);

   curveVertex((width/2)-(mouthWidth/2), mouthHeight-(lipsize));
   curveVertex(width/2,mouthHeight-lipsize);
   curveVertex((width/2)+(mouthWidth/2), mouthHeight-(lipsize));

   curveVertex((width/2)+mouthWidth,mouthHeight);
   curveVertex((width/2)+mouthWidth,mouthHeight);
   endShape();

}

function mousePressed() {
    cheekHeight = height/3 + random(-20,20);
    cheekWidth = width/4 + random(-20,20);
    jawHeight = (height/4) + random(150,200);
    jawWidth = (width/4) + random(0,100);

    chinY = jawHeight+random(100,200);
    eyeWidth = width/10 + random(0,25);
    squint = height/20 + random(-20,20);
    
    eyeBY = cheekHeight + random(-10,10);
    eyeBRX = eyeBLX + cheekWidth + random(-10,10);
    hairColor = (random(0,255),random(0,255),random(0,255));

    eyeY = eyeBY + random(30,75);
    eyeSize = random(40, 100);
    irisSize = random((eyeSize/2), eyeSize/10);
    //pupilSize = ranodom((irisSize/4),irisSize/20);
    eyeColor = ((random(0,255),random(0,255),random(0,355)));

    noseWidth = random(10,40);
    noseLength = random(10,100);
    nostrilWidth = noseWidth + random(10,40);

    mouthHeight = jawHeight + random(20,100);
    mouthWidth = random(10,90);
   // lipSize = random(5,20);
    
    skin = random("chocolate", "coral", "khaki","LightSalmon", "moccasin");
}
  

 

Upon doing this project, I realized that I had issues with scaling things in the way that I wanted them. In order to correct that, I utilized the randomized feature to click through facial features that would fit and not fit. Eventually, I decided to have my faces look comedic more than anything else. I also had trouble with randomizing colors.

vtavarez LookingOutwards1

Several people worked on this piece of performance art. The Freckledsky team consisted of producers Val Siganevich, Natalia Siganevich, and Katya Korobko. The Art Direction team included Oleg Bodnarchuk and Front Pictures studio. The dances were choreographed by Olga Goldys and Maxeknyi. The dancers consisted of Olga Sokolova and Jalen Preston. The technical director was Natalka Zheludova. The video engineer was Front Pictures studio.

These artist used Screenberry technologies (produced by Front Pictures Studios). Front Pictures Studios has been on the forefront of multimedia innovations for years. The technologies they used in this video uses large, high resolution projections to deliver immersive visual effects. I believe the artist and technicians were inspired by story telling and technological immersion.

This project is an example of the usage of multimedia for enhancing the fine arts. Here we see live performance (dance) improved by the technological advances of Front Pictures technology. On the negative side, the technology does not look as intuitive for the common user.

Vtavarez Face Project-01

sketch<-49.js

//Victor Tavarez
//Section D
//vtavarez@andrew.cmu.edu
//project-01

function setup() {
    createCanvas(500, 500); 
    
}

function draw() {

    background(196,53,255);
    //head
    noStroke();
    fill("black"); //hair
    arc(230,190,100,100, PI,PI/100);

    fill(255,153,0); //temple
    quad(190,190,210,180,210,200,190,200);

    fill(250,120,30); //forehead
    rect(200,170,80,30,10);
    
    fill(255,190,10); //lowerTemple
    rect(190,200,70,20);

    fill(255,190,90); //chin
    quad(200,200,270,200,260,260,215,260);

    fill(255,160,120);
    quad(190,220,230,220,215,260,190,240); //left cheek

    fill(255,160,90);
    quad(250,220,280,220,280,240,260,260);

    //nose
    noStroke();
    
    fill(205,200,120);
    
    arc(235,230,10,10,PI/10,PI); //left nostril
    
    fill(260,175,10);// nose tip
    ellipse(242,232,12,12);

    fill(255,200,200); //bridge
    quad(230,220,235,230,245,230,250,220);

    //ears
    fill(255,160,200);
    quad(178,187,190,190,190,220,180,210,10);

    //Glasses
    stroke(10);
    strokeWeight(5);

    fill(153,153,255);
    rect(200,200,30,20,5); //left

    fill(154,160,255)
    rect(250,200,30,20,5); //right

    noFill();
    arc(240,210,19,10,PI,0);

    line(190,200,200,200);

    //lips
    noStroke();
    fill("red");
    triangle(225,250,250,250,240,252);
    triangle(230,250,235,247,245,250);
    triangle(240,250,242,247,250,250);
    noLoop(); //saves computing power

}

Working on this assignment I became better acquainted with some of the P5.js functionalities and limitation. I particularly struggled with layering the code to present itself in the way I needed to. I enjoyed the process of designing what my image would look like, but was disappointed with my limited knowledge to execute the idea. Overall the project was a great learning experience and I am happy to be able to express myself through simple lines of code.