The project is an animation commercial for Nike’s Air Max sneaker by ManvsMachine with stimulating visual elements. ManvsMachine uses Cinema 4D ( a competent 3D suite program)to create motion graphic which is more eye catching than 2D graphics. I agree with Graana that this project is successful on playing with different textures and lighting to demonstrate lightness and airiness of the product.
While fashion editorial have championed extremely tangible imagery, ManvsMachine achieves a different effect in this work which is more conceptual and abstract. By animate morphing objects and diffusing colors, the campaign video is able to visualize the product with a more painterly approach that also leave imagination to the customer.
In many levels, the project is an artistic approach to demonstrate both aesthetics and functions of the product.
Artist Website: https://mvsm.com/project/air-max Graana Khan’s Looking Outwards-05 post, October 05,2020 https://courses.ideate.cmu.edu/15-104/f2020/2020/10/03/looking-outwards-05-5/
For this week’s project, I decided to abstractly depict a photo of my friend and I using the idea of a bitmap and pixels. I was inspired by various 8-bit art pieces that I had found online, and wanted to make my own interactive interpretation!
Depending on the mouse’s position, you can move around to see the pixels bigger, which ‘magnifies’ and makes clearer whatever part you are toggling over! Additionally, if you click the up and down arrow, you can see the “bitmap pixels” increase or decrease in number, respectively!
// Susie Kim
// susiek@andrew.cmu.edu
// Section A
// Project 09
// set variables
var img;
var bitMap;
var grid = 19;
// load image
function preload() {
var imgURL = "https://i.imgur.com/7Vy4Fqz.jpg";
img = loadImage(imgURL);
}
function setup() {
createCanvas(480, 380);
background(255);
img.resize(480, 380); // resize image to be canvas size
img.loadPixels(); // load image pixels
}
function draw() {
background(255);
drawBits(); // call upon drawBits function
}
function drawBits() {
noStroke();
rectMode(CENTER);
// make grid of rectangles, with each growing bigger or smaller depending on mouse position
for (x = 0; x < 480; x += grid) {
for (y = 0; y < 380; y += grid) {
var dis = dist(mouseX, mouseY, x, y); // measure distance between mouse pos and each square bit
var bitMap = map(dis, 0, 480, 11+(grid*.05), 3+(grid*.05)); // map width of each rectangle bit dependent on distance
var bitColor = img.get(x,y); // get color for each rectangle bit
fill(bitColor);
rect(x, y, bitMap+(grid*.35), bitMap+(grid*.35)); // draw grid of rectangles with width adjusting
}
}
}
function keyPressed() {
// lock maximum "pixel" size at 23
if (grid > 23) {
grid = 23;
}
// lock minimum "pixel" size at 15
if (grid < 15) {
grid = 15;
}
// make "pixels" bigger with each click of up arrow, and smaller with click of down arrow
if (keyCode === UP_ARROW) { // bigger
clear();
grid += 1;
} else if (keyCode === DOWN_ARROW) { // smaller
clear();
grid -= 1
}
}
For this project I decided to create a clearer perception of the image of my aunt for the portrait and the background would start to fade away. Therefore I used smaller rectangles for the main portrait and bigger ones for the background. I also wanted to add a few interactive features so when the mouse is pressed the rectangles become bigger and rotate and when the mouse is moved around the canvas words that describe my aunt start to show up on the screen.
//Aadya Bhartia
//Section A
//abhartia@andrew.cmu.edu
/*The program begins to create more details with smaller rectangles for the main portrait and bigger
rectnagles for the background. When the mouse is pressed the rectnagles rotated and scaled and when the mouse
is moved around the screen words that describe my aunt in the portrait show up */
var port = 20; //global avriable to help determine size of portraitwhich is in focus
var img;
var word = ['artist','ritika','mom','loving','fasion']; //words displayed when mouse is on canvas
function preload(){
var imgURL = "https://i.imgur.com/vhfzHA1.jpg" ;
img = loadImage(imgURL);
}
function setup() {
createCanvas(400, 340);
background(0);
img.loadPixels(); //loading pixels from image
frameRate(1000);
rectMode(CENTER);
}
function draw() {
var px = random(width); //x position of rectangles
var py = random(height); //y position of rectangles
var cx = constrain(floor(px), 0, width-1);
var cy = constrain(floor(py), 0, height-1);
//colour at current pixel
var positionColour = img.get(cx, cy);
//colour at mouse position
var mouseColour = img.get(mouseX, mouseY);
//varying width of rectangle based on brightness at current pixel
var rectL = map(brightness(positionColour),0,200,0,20);
if(mouseIsPressed){ //when mouse is pressed rectangles becomes twice the size at rotate at 90 degrees
push();
translate(px,py);
scale(2);
rotate(PI/4);
noStroke();
fill(positionColour); //setting fill to colour at that pixel
rect(0,0,rectL,8);
pop();
}
//for the main portrait the rectangles are smaller while for the background they ae bigger
else{
if(px > port*4 & px < port*15 && py> port && py < (height- port*2)){ //setting position of the portrait
strokeWeight(0.1);//very thin stroke to emphasizse the portrait
stroke(220); //setting stroke as a light grey to distinguish between pixels
fill(positionColour);
rect(px,py,rectL/2,4); //making rectnagles smaller
}
//for the background
else{
strokeWeight(0.5);
stroke(220); //setting stroke as a light grey to distinguish between pixels
fill(positionColour); //fill based on colour at curent pixel location
rect(px,py,rectL,8);
}
}
//text is displayed based on mouse position and colour
fill(mouseColour); //text colour based on pixel colour at current location
textSize(random(5,15));
text(random(word), mouseX, mouseY); //sectiong random text from arrray and displayiong at mouse position
}
The Looking Outwards from week 4 was about sound art and I am extremely interested in how sound is being visualised today within generative art practices. Nick Wong’s LO on Nanotak Studio’s Daydream was extremely fascinating for me. Although the idea of adding sound visualisation has recently become prevalent in art and design. It does start to allow for a more immersive experience. This installation aimed at establishing a physical connection between the virtual space and the real space, blurring the limits and submerging the audience into a short detachment from reality. Lights generate abstract spaces while sounds define the echoes of virtual spaces. Daydream is an invitation to contemplation, and the frontality of the installation leads the visitors to a passive position, almost overwhelming them with the audiovisual effects. I definitely feel Nick could have added a video which would have helped me better understand the project at first glance.
Nick Wong’s Looking Outwards 4 on 27th September, 2020.
//Nicholas Wong
//Section A
//nwong1@andrew.cmu.edu
//Assignment 09
var size = 10 //Default size of stroke
function preload()
{
//A profile picture
img = loadImage("https://i.imgur.com/1XXSpjL.png")
}
function setup()
{
createCanvas(480,480);
img.loadPixels(); //Load pixels
//Set modes
imageMode(CENTER);
rectMode(CENTER);
textAlign(CENTER);
angleMode(RADIANS);
//Set custom framerate
frameRate(120)
}
function draw()
{
//Offset canvas to fit my face in the middle
translate(-100,10)
//Get random x and y coordinates
let x = floor(random(width));
let y = floor(random(height));
//Get color of coordinates
let pix = img.get(x,y);
//Create strokes
drawStrokes(x,y,pix);
drawInstructions();
}
function drawStrokes(x,y,pix)
{
push();
translate(100,0) //Recenter canvas
translate(x,y);
rotate(revolveMouse(x,y));//Rotate strokes around mouse
//Draw stroke
stroke(pix, 128);
strokeWeight(0.25*size + random(0,2)); //Stroke size influenced by mouse scroll
line(0,-size + random(0,2),0,size+ random(0,2)); //Stroke length based on mouse scroll
pop();
}
function revolveMouse(x,y)
{
//Generates angle from mouse position and (x,y) coordinate
let dx = mouseX - x;
let dy = mouseY - y;
let angle = atan2(dy,dx)
return angle; //Returns angle
}
function mouseWheel(event)
{
//Check if scrolling up
if (event.deltaY < 0)
{
size++; //Increase size
}
else //Scrolling down
{
size -= 1; //Decrease size
}
}
function drawInstructions()
{
//Text box at bottom of canvas
push();
translate(100,10);
noStroke();
fill(0)
rect(width/2,height-50,285,35)
fill(255)
textSize(10)
text('SCROLL MOUSEWHEEL TO CHANGE STROKE SIZE',width/2,height-47)
pop();
}
Strokes radiate and rotate around mouse pointer, mouse scrolling changes the stroke size; scroll up to increase size, scroll down to decrease size. Here are some examples with varying mouse positions, stroke sizes, and durations.
In catbug’s Looking outwards 6 post, catbug talks about Robbie Barrat’s Neural Network Balenciaga series. The series is comprised of a line of fasion items produced by and amalgamation of an AI’s interpretation of Balenciaga’s lookbook, runway shows, and published images. What is interesting about this is that it walks the fine line, like catbug says, “creativity and mimicry”. The AI’s interpretation at the same time not only allows us to analyze what makes the Balenciaga line Balenciaga, but also begins to examine the idea of a designer’s true need to design. If there is a commonality within all the design work done by this luxury fasion house, what’s the point of hiring new designers? Wouldn’t a computer algorithm be enough to generate the next season of their line? As long as the inputs for the current trend and the “Balenciaga DNA” is present, a continuity of their design legacy is sure to last. The ephemorality of human led design is upon us.
The project uses transparency and the mouse IS Pressed function to achieve a variety of detail with the newly generated portrait. The new portrait can range from highly abstract to an almost monet like blurry vision.
//tjchen
//hand in 9 project
var img;
var pts;// amount of divisions on the canvas
var steps;
function preload(){
//loads teh image
img= loadImage("https://i.imgur.com/68RyRgM.jpg");
}
function setup() {
background(255);
frameRate(10);
createCanvas(480, 270);
//center image on canvas
imageMode(CENTER);
noStroke();
img.loadPixels();
//generate random grid subdivision
pts = int(random(1,40));
print(pts); // for dbugging
}
function draw() {
//generate grid
for (let x = 0; x<width; x+=width/pts){
for(let y = 0; y<height; y+=height/pts){
//get color information from pixel
let c = img.get(x,y);
noStroke();
//create the subdivided pixelated image
fill(c[0],c[1],c[2],10);
square(x,y,width/pts);
}
}
//hold mouse to rescramble the image
//release to unblur
if(mouseIsPressed){
pts = int(random(1,40));
}
}
For this LO, I am looking at Bennett’s entry for the sound art LO-04. I agree with him in the sense that one of the more interesting parts of this project is the sound that is created, a smooth earthy tone that changes mildly or drastically depending on the external environments. However, I don’t quite agree with the amount of creator input that Bennett implies in this LO. The creator passes through the micro-voltage fluctuations into a oscillator that reads the frequency of the waves thus creating the sounds generated, so I personally think that the sounds generated reflect the “true tones” of the plant. Perhaps the creator intended this to be a single item project, I wonder what the tones created from various types of plants could differ from one another.
This looking outward is to honor and spread awareness of Eggdog, a CG character based off of a real Pomeranian that was groomed to look like an egg. Personally I find this 3D-model-turned-meme a very interesting, intriguing, and very relevant to Week 5’s Looking Outwards topic of 3D Computer Graphics. Eggdog’s prevalence on social media shows how 3D modeling, rendering, and animation has become so accessible over just the past decade. Almost anyone can download free 3D modeling software like Blender and learn how to create something as simple, elegant, and beautiful as Eggdog. This point was also made by the student who wrote about Eggdog.
Eggdog represents both today’s widespread availability and accessibility to 3D modeling software, and today’s ease of transferring information through social media. Any individual in the world can create anything, from Eggdogs, to feature films, to hit video games, all by themselves, and share it with the rest of the world. Eggdog, at its very core, represents the creative power of technology in the hands of everyday citizens.