After my first not-so-successful-exposure to Processing this summer, I was terrified to play around with it ever again. All these numbers and pixel-counting seemed nothing but confusing. However, three months later, here I am: sitting in front of my laptop and trying to battle Processing by drawing a whole self-portrait, now in Java!
With all of my courage and creativity, I decided to first draw (more like draft?) what I was about to code:
The main challenge was to figure out which features to use, which functions to include, and…count the pixels to place everything where it should be. For my hair and face, I decided to go with circles, triangles, and rectangles in the draw() function. From the previous class, I got a little curious about the pressedKey() color-changing feature and have decided to try it in my portrait. As a result, I got a portrait of myself that changes the color of the shirt whenever the ‘c’ button is pressed.
Here is how it looks like:
And, of course, the code:
// This is Amina's Portrait! float shirt_color_r = 170; float shirt_color_g = 125; float shirt_color_b = 206; // Let's set this up... void setup() { size(440, 500); } // Let's draw! void draw() { // How about a sunset sky? fill(140, 83, 131); noStroke(); rect(0, 0, 440, 280); // Earthy background... fill(204, 188, 188); rect(0, 280, 440, 560); // Hair... fill(135, 107, 85); circle(220, 170, 200); rect(120, 170, 200, 200); // Here is the face and the neck! fill(247, 212, 184); ellipse(220, 200, 150, 180); rect(190, 270, 60, 45); // Eyes: fill(255, 255, 255); triangle(190, 170, 180, 180, 200, 180); triangle(260, 170, 250, 180, 270, 180); fill(135, 107, 85); rect(180, 160, 20, 3); rect(250, 160, 20, 3); circle(190, 180, 10); circle(260, 180, 10); // Nose: fill(215, 173, 157); triangle(220, 200, 210, 230, 230, 230); // Lips: fill(215, 173, 157); stroke(245, 157, 151); triangle(220, 265, 190, 250, 250, 250); //triangle(); // Fancy t-shirt! noStroke(); fill(shirt_color_r, shirt_color_g, shirt_color_b); rect(190, 315, 60, 100); triangle(250, 315, 250, 415, 350, 415); triangle(190, 315, 190, 415, 100, 415); rect(100, 415, 250, 100); } void keyPressed() { if (key == 'c') { shirt_color_r = random(255); shirt_color_g = random(255); shirt_color_b = random(255); } }
It was a fun experience mastering the RGB-color system, the shapes syntax for Processing, and counting pixels for the frame. As there is still a lot for me to learn, coming into the future and having more time to work on the assignment, I would have made several improvements to the portrait by:
-
-
- eliminating hardcoding numbers for the pixels/dimensions;
- implementing different movement features with mouseX and mouseY functions, such as closing the eyes or smiling;
- using more advanced programming concepts and syntax, not just filling my code with shapes like rect(), triangle(), and circle();
- doing more research about Processing features and focusing on quality than quantity – thanks to my classmates who posted here now I know about arc(), strokeWeight(), vertex().
-
I am glad that I finally am becoming more comfortable using Processing and cannot wait to improve building on the present experience. Next time, I will try to be more careful with pre-assignment research and will pay close attention to the quality of my code.
One step at a time…
Amina, I am glad you enjoyed working with Processing this time and I really like how you designed the eyes in your portrait using triangles and circles. Also changing the color of the shirt is a nice addition. I was also curious about the pressedKey () function so I let the hair color change in my portrait. One step at a time 🙂