Anoma is a product design studio headed by Ruchika Grover to produce artwork made of natural stone, using a combination of digital manufacturing and traditional hand craftmanship.
What I admire about Grover’s work is that she incorporates natural textures and shapes of nature itself into her work. She first draws a 2-D illustration on paper, and then uses computer-aided modeling for precise measurements and adding intricate details. This is where she modifies the measurements before she develops the prototype.
Then, prototypes are developed for about 4-6 months with dimensions translated into manufacturing directives and into a Computer Numerical Controlled (CNC) milling machine. A cylindrical tool then cuts and drills based on computer directions, with recycled water circulated in order to regulate the temperature of the cutting tool and base stone so that the rapid tool doesn’t wear and there’s no thermal expansion of the stone.
Finally, artisans carve detailed textures into the stone which adds a human touch to the digitally-fabricated artwork.
To the viewers, you could clearly see Grover’s background and interest in botanics as her inspiration for her artwork. The shapes and intricate details of each work resembles some shape or texture to those of nature. It is fascinating to see an artist create a work of nature generated by computer.
Link to Grover’s work: https://www.archdaily.com/898786/digital-design-and-indian-craft-merge-to-generate-these-beautiful-cladding-patterns
]]>var eyeSize = 30;
var faceWidth = 260;
var faceHeight = 320;
var noseX = 275;
var noseY = 270;
var noseSize = 15;
var faceX = 300;
var faceY = 265;
var eyecolor = 255;
var pupilcolor = 0;
var lefteyeX = 250;
var eyeY = 200;
var righteyeX = 350;
var leftpupilX = 250;
var rightpupilX = 350;
var pupilY = 200;
var pupilWidth = 10;
var pupilHeight = 10;
var browHeight = 160;
var leftbrowX = 220;
var rightbrowX = 330;
var browY = 160;
var leftbrowWidth = 270;
var rightbrowWidth = 380;
var earHeight = 45;
var earY = 250;
var leftearX = 150;
var rightearX = 450;
var mouthX = 300;
var mouthY = 350;
var mouthSize = 45;
var r = 255;
var g = 241;
var b = 209;
function setup() {
createCanvas(640, 480);
// background(220);
// noStroke(0);
}
function draw() {
background(227, 103, 84);
noStroke(0);
fill(255, 241, 209); //face
ellipse(faceX, faceY, faceWidth, faceHeight);
fill(eyecolor, eyecolor, eyecolor); //left eye
ellipse(lefteyeX, eyeY, eyeSize, eyeSize);
fill(eyecolor, eyecolor, eyecolor); //right eye
ellipse(righteyeX, eyeY, eyeSize, eyeSize);
fill(pupilcolor, pupilcolor, pupilcolor); //right pupil
ellipse(rightpupilX, pupilY, pupilWidth, pupilHeight);
if (mouseX < width*0.33) {
fill(255, 0, 0);
} else if (mouseX > width*0.66) {
fill(0, 255, 0);
} else {
fill(0, 0, 255);
}
fill(pupilcolor, pupilcolor, pupilcolor); //left pupil
ellipse(leftpupilX, pupilY, pupilWidth, pupilHeight);
if (mouseX < width*0.33) {
fill(255, 0, 0);
} else if (mouseX > width*0.66) {
fill(0, 255, 0);
} else {
fill(0, 0, 255);
}
circle(mouthX, mouthY, mouthSize); // mouth
stroke(0, 0, 0); // left eyebrow
line(leftbrowX, browY, leftbrowWidth, browHeight);
stroke(0, 0, 0); // right eyebrow
line(rightbrowX, browY, rightbrowWidth, browHeight);
fill(255, 241, 209); // left ear
circle(leftearX, earY, earHeight);
fill(255, 241, 209); // right ear
circle(rightearX, earY, earHeight);
fill(0); // nose
ellipse(275, 270, noseSize, noseSize);
ellipse(275 + 20, noseY, noseSize, noseSize);
}
function mousePressed() {
faceWidth = random(260, 300);
faceHeight = random(320, 400);
eyeSize = random(10, 50);
noseX = random(275, 300);
noseY = random(270, 300);
leftbrowWidth = random(270, 300);
rightbrowWidth = random(380, 400);
}
In my process of making this face, I learned a lot about using variables to code. I also experimented a lot with “else” and “if” to produce what I want to happen.
]]>In my process of making this face, I learned a lot about using variables to code. I also experimented a lot with “else” and “if” to produce what I want to happen.
var eyeSize = 30;
var faceWidth = 260;
var faceHeight = 320;
var noseX = 275;
var noseY = 270;
var noseSize = 15;
var faceX = 300;
var faceY = 265;
var eyecolor = 255;
var pupilcolor = 0;
var lefteyeX = 250;
var eyeY = 200;
var righteyeX = 350;
var leftpupilX = 250;
var rightpupilX = 350;
var pupilY = 200;
var pupilWidth = 10;
var pupilHeight = 10;
var browHeight = 160;
var leftbrowX = 220;
var rightbrowX = 330;
var browY = 160;
var leftbrowWidth = 270;
var rightbrowWidth = 380;
var earHeight = 45;
var earY = 250;
var leftearX = 150;
var rightearX = 450;
var mouthX = 300;
var mouthY = 350;
var mouthSize = 45;
var r = 255;
var g = 241;
var b = 209;
function setup() {
createCanvas(640, 480);
// background(220);
// noStroke(0);
}
function draw() {
background(227, 103, 84);
noStroke(0);
fill(255, 241, 209); //face Q: HOW DO I USE VARIABLES FOR THIS?
ellipse(faceX, faceY, faceWidth, faceHeight);
fill(eyecolor, eyecolor, eyecolor); //left eye
ellipse(lefteyeX, eyeY, eyeSize, eyeSize);
fill(eyecolor, eyecolor, eyecolor); //right eye
ellipse(righteyeX, eyeY, eyeSize, eyeSize);
fill(pupilcolor, pupilcolor, pupilcolor); //right pupil
ellipse(rightpupilX, pupilY, pupilWidth, pupilHeight);
if (mouseX < width*0.33) { // HOW DO I CHANGE FACE COLOR?
fill(255, 0, 0);
} else if (mouseX > width*0.66) {
fill(0, 255, 0);
} else {
fill(0, 0, 255);
}
fill(pupilcolor, pupilcolor, pupilcolor); //left pupil
ellipse(leftpupilX, pupilY, pupilWidth, pupilHeight);
if (mouseX < width*0.33) { // HOW DO I CHANGE FACE COLOR?
fill(255, 0, 0);
} else if (mouseX > width*0.66) {
fill(0, 255, 0);
} else {
fill(0, 0, 255);
}
circle(mouthX, mouthY, mouthSize); // mouth
stroke(0, 0, 0); // left eyebrow
line(220, 160, 270, 160);
stroke(0, 0, 0); // right eyebrow
line(330, 160, 380, 160);
fill(255, 241, 209); // left ear
circle(150, 250, 45);
fill(255, 241, 209); // right ear
circle(450, 250, 45);
fill(0); // nose
ellipse(275, 270, 15, 15);
ellipse(275 + 20, 270, 15, 15);
}
function mousePressed() {
faceWidth = random(260, 300);
faceHeight = random(320, 400);
eyeSize = random(10, 50);
noseX = random(275, 300);
noseY = random(270, 300);
leftbrowWidth = random(270, 300);
rightbrowWidth = random(380, 400);
}
]]>I was inspired by Manolo Gamboa Naon who is a generative artist from Argentina. What I admire from his work is that it appears to be a work of the 20th century, even though it was all generated by code. Manolo defies the common misconception of digital art as cold and mechanical, with his vibrant pieces and extensive attention to color coordination.
mantel – Manolo Gamboa Naon, 2018
MMGGK2 – Manolo Gamboa Naon, 2018
He pieces each geometric figure into algorithms and code to produce his art. Manolo uses Processing. Manolo’s appreciation for geometry in his work is evident in his code, centered as his main focus alongside color. He states he is not very interested in AI or deep learning, as he is content with generative art and geometric figures. I admire how we sees failures in code as beautiful mistakes in his art. It is evident that Manolo is not concerned over accuracy, but rather the coordination of shapes and color.
Manolo’s work: https://www.behance.net/manoloide
]]>Video documentary of Magic Leap’s AR video game Dr. Grordbort’s Invaders. Source: Next Reality: Hands-On with Magic Leap & Weta Workshop’s Dr. Grordbort’s Invaders by Adario Strange
This is a fascinating project developed by New Zealand studio Weta Workshop and partnered by Magic Leap. It was actually a WIP for nearly a decade, when Magic Leap CEO Rony Abovitz met with Weta Workshop’s CEO Richard Taylor to introduce and develop this video game. In this game, users experience an AR gaming experience using Magic Leap technology in their surroundings.
To start, users use Magic Leap One to map out their surrounding walls, floors, and furniture. A spatial audio guides them to map out the room and not to let too much light in, or else the mapping will pause. The Control device acts as a weapon, and the author of this article reported the tracking was accurate 85% of the time.
One cool feature is how you can use your hand not holding a device as a shield, and may even feel a tingle. The game tracks your hand and allows you to use your physical hand in the AR game. This is particularly interesting because it points to a future that holds the intertwining of physical human touch with AR. This can especially be seen in the workplace, home, and public space/services. Another feature I admire is the crispness and vividness of the designs. The main character, Dr. Grordbort, is seen translucent, while the rest of the bots are perfectly vivid. This is fascinating how designers/programmers can create the difference in texture and precision in these AR figures.
]]>/*Erin Lim
*Section A
*eylim@andrew.cmu.edu
*Assignment 01-Self Portrait
*/
function setup() {
createCanvas(900, 800);
background(227, 209, 200);
fill(255, 241, 209); //face
ellipse(500, 495, 460, 450)
fill(255, 255, 255); //left eye
ellipse(380, 470, 40, 40);
fill(255, 255, 255); //right eye
ellipse(580, 470, 40, 40)
fill(3, 3, 3) //right pupil
ellipse(580, 468, 30, 30)
fill(3, 3, 3) //left pupil
ellipse(380, 468, 30, 30)
fill(255, 255, 255) // mouth
triangle(450, 600, 550, 650, 560, 600)
stroke(255, 202, 0); // left hair
fill(0, 0, 0)
curve(560, 1800, 250, 550, 560, 270, 1100, 600)
stroke(255, 202, 0); // right hair
fill(0, 0, 0)
curve(350, 650, 750, 550, 550, 270, 20, 500)
fill(5, 5, 5) // left eyebrow
line(300, 430, 420, 430)
fill(5, 5, 5) // right eyebrow
line(550, 430, 670, 430)
fill(255, 241, 209) // left ear
circle(250, 500, 45)
fill(255, 241, 209) // right ear
circle(750, 500, 45)
function draw() {
}
}
]]>function setup() {
}
function draw() {
createCanvas(300, 300);
background(200);
ellipse(150, 150, 100, 70);
}
]]>