Before starting to code and draw geometrical shapes for my portrait I had so many crazy ideas to make the portrait abstract and artsy. I literally spent an hour trying to find some ideas from artists like Matisse, Picasso, Paul Klee. But once I started searching about many ways how to do curves and went to processing reference, I gave up my hopes on pursuing my initial idea. Not gonna lie, I’m deep down disappointed that I played safe and went with the conventional style of writing a self-portrait.
I started off coding the head shape which could potentially resemble mine. To do that, I used a combination of ellipse and rectangle with rounded angles. To escape those two figures overlapping, I got rid of the stroke line and filled them with one color.
The thing that took most of my time and effort was the eyebrows. It was a complex process of trials and errors where I used different vertexes to recreate the eyebrows. I had to use beginShape() and endShape() functions to make the vertex complete, and by putting CLOSE inside the endShape i wrapped the whole figure and connected the points together
To make a nose shape I had to use a bezier curve and learn the logistics behind creating one. Basically what I did to learn how to do it was to put random numbers as arguments first and then change the arguments to mouseX and mouseY respectively and wherever my cursor landed, I imagined the scape in mind and put it according to coordinates.
int faceCenterX= width/2; int faceCenterY= height/2; int faceSize= 100; //global variables void setup() { //for smth static, initiliazing global variables size(640, 460); faceCenterX= width/2; faceCenterY= height/2; faceSize= 150; //global variables } void draw() { //looping many times drawing over and over background(153,204,255); stroke(102,51,0); fill(255,229,204); circle(390,220,30); circle(390,220,18);//left ear circle(250,220,30); circle(250,220,18);//right ear noStroke(); rect(295,310,50,50); rect(222,325,200,300,150);//body noStroke(); ellipse(faceCenterX, faceCenterY, faceSize/1.07, faceSize*1.13); rect(faceCenterX-70, faceCenterY-95, faceSize/1.07, faceSize,100);//last argument gives round corners //head structure noStroke(); fill(212,113,113); circle(280,400,15); circle(360,400,15);//breast fill(255,204,153); circle(280,400,5); circle(360,400,5);//breast inner circles stroke(255,204,153); strokeWeight(5); line(250,380,250,460); line(390,380,390,460);//armpits fill(212,113,113); strokeWeight(3); stroke(51,25,0); ellipse(faceCenterX, faceCenterY+50, 40,20); stroke(51,25,0); line(faceCenterX-20, faceCenterY+50, faceCenterX+20, faceCenterY+50);//lips noStroke(); fill(51,25,0); beginShape(); vertex(300, 200); vertex(300,195); vertex(280,195); vertex(270,200); vertex(280,198); endShape(CLOSE); //eyebrow left noStroke(); fill(51,25,0); beginShape(); vertex(340, 200); vertex(340,195); vertex(360,195); vertex(370,200); vertex(360,198); endShape(CLOSE); //eyebrow right fill(255); ellipse(285,210, 30,10); fill(0,51,51); circle(285,210,10); fill(255); circle(285,210,3);//eye left fill(255); ellipse(355,210, 30,10); fill(0,51,51); circle(355,210,10); fill(255); circle(355,210,3);//eye right fill(255,229,204); stroke(0,25,51); bezier(faceCenterX,250,340,260,285,270,faceCenterX,220);//nose fill(0,51,102); circle(270,148,25); circle(280,146,25); circle(290,144,25); circle(300,142,25); circle(310,140,25); circle(320,138,25); circle(330,136,25); circle(340,134,25); circle(350,132,25); circle(360,130,25);//hair structure bezier(faceCenterX-60,180,400,150,204,184,faceCenterX-40,140); bezier(faceCenterX-40,180,400,150,204,184,faceCenterX-20,140); bezier(faceCenterX-20,180,400,150,204,184,faceCenterX,140); bezier(faceCenterX,180,400,150,204,184,faceCenterX+20,140); bezier(faceCenterX+20,178,400,150,204,184,faceCenterX+40,140); //hair waves }
I know that it’s our very first project in a making, so I’m very excited to learn more on how to make my 2D portrait more interactive and dynamic. I might try doing portrait and update the post once I’m done!!!💖
LOVE THE DETAILS!