Kyle Leve-Project-10-Landscape

sketch

// Kyle Leve
// kleve@andrew.cmu.edu
// Section A
// Project-10-Landscape

var img1;
var img2;
var snowman = [];
var terSpeed1 = 0.0002;
var terDetail1 = 0.01;
var terSpeed2 = 0.00025;
var terDetail2 = 0.005;
var terSpeed3 = 0.0003;
var terDetail3 = 0.0001;

// Loads ski guy and snowman images
function preload() {
	img1 = loadImage('https://i.imgur.com/9Bjj5oY.jpg');
	img2 = loadImage('https://i.imgur.com/6UIcB6H.jpg');
}

function setup() {
    createCanvas(480, 480);
    frameRate(10);
}

function draw() {
	background('indigo');

    // Dark blue mountains
	fill(0, 20, 70);
	beginShape();
	vertex(0, height);
	for (var x = 0; x < width; x++) {
		var z = (x * terDetail1) + (millis() * terSpeed1);
	    var y = map(noise(z), 0, 1, 0, height/3);
		vertex(x, y);
	}
	vertex(width, height);
	endShape();

    // Lighter blue mountains
	fill(0, 20, 120);
	beginShape();
	vertex(0, height);
	for (t = 0; t < width; t++) {
		var s = (t * terDetail2) + (millis() * terSpeed2);
	    var r = map(noise(s), 0, 1, 0, height - 100);
		vertex(t, r);
	}
	vertex(width, height);
	endShape();

    // Snow hill
	fill(255);
	beginShape();
	vertex(0, height);
	for (a = 0; a < width; a++) {
		var b = (a * terDetail3) + (millis() * terSpeed3);
	    var c = map(noise(b), 0, 0.75, 0, height - 70);
		vertex(a, c);
	}
	vertex(width, height);
	endShape();

    // Ski guy image
    noStroke();
	image(img1, 20, c + 40, 70, 70);

    displaySnowman();
    removeSnowman();
    newSnowman(); 
}

// To show the snowman
function displaySnowman() { 
    for (var i = 0; i < snowman.length; i++){
        snowman[i].move();
        snowman[i].display();
    }
}

// Removes any snowmen that go off the screen
function removeSnowman() {
    var keepSnowman = [];
    for (var i = 0; i < snowman.length; i++){
        if (snowman[i].x + snowman[i].breadth > 0) {
            keepSnowman.push(snowman[i]);
        }
    }
    snowman = keepSnowman;
}

// Creates snowmen
function newSnowman() {
    var snowmanChance = 0.0005; 
    if (random(0.1) < snowmanChance) {
        snowman.push(makeSnowman(width));
    }
}

// Moves snowmen
function snowmanMove() {
    this.x += this.speed;
}

// Calls the snowman image    
function snowmanDisplay() {
    var b = (a * terDetail3) + (millis() * terSpeed3);
    var c = map(noise(b), 0, 0.75, 0, height - 70); 
    noStroke();
    push();
    translate(this.x, height - 100);
    image(img2, 10, 0, 70, 100);
    pop();
}

// Sets the location of the snowman and moves it across the screen
function makeSnowman(LocationX) {
    var snow = {x: LocationX,
                breadth: 50,
                speed: -20.0,
                move: snowmanMove,
                display: snowmanDisplay}
    return snow;
}

I found this project to be very fun because it allowed me to create a scene even if it just repeated itself. I decided to create a winter scene with a guy skiing and some snowmen. I used the snowmen as an object that would randomly generate itself as the scene continued.

Looking Outwards – 10 Min Lee

 

Vareldi’s Minicade was showcased at Eyebeam.
Minicade by Chloe Varelidi, 2015

Chloe Varelidi is an artist and designer whose mission statement is to “design and build playful products that empower humans to be creative, kind and curious about the world around them.” She studied design at Parsons School of Design and is now the founder and design director at humans who play. Her main work focuses on designing products that are both irresistable and fun.

Like many of her other projects, Minicade is an interactive and educational tool made by Veralidi that uses fun methods to teach important skills. I look up to this particular project because it is a web app that involves the user (along with others) to create and customize a playlist of games by learning how to code in HTML. It’s an extremely relevant skill to have and it’s projects like these that educate younger generations through a medium that they can enjoy.

Check it out: http://www.minica.de/

Source: http://varelidi.com/

Katherine Hua – Looking Outwards – 10

Sophia Kahn is an Australian new media artist currently living in Brooklyn, New York. She earned her BA in Fine Arts and History Goldsmith College, University of London; a Graduate Certificate in Spatial Information Architecture from RMIT University, Melbourne; and an MFA in Art and Technology Studies at the School of the Art Institute of Chicago.

Periode de Delire II, Sophie Khan (2016)

She creates illustrations and videos but the main focus of her work is creating sculptures through 3D printing.She uses a precisely engineered 3D last scanner to design the body of her sculpture. When scanning, the human body is constantly moving, so the scanner receives conflicting spatial coordinates, thereby creating a glitch. This glitch is what gives her sculptures the fragmented, deconstructed appearance. She takes this scan of damaged data and re-envisions it onto a different a canvas: prints, video, hand-painted, or 3D printed sculptures.

I admire her work because her 3D printed sculptures reflects ideas of deconstruction as she blurs the lines between old and new media, digital and physical realms, and interior and exterior spaces. Her work seems to dive into the haunting challenges of time, history, and identity. They seem to resonate the idea that death is inevitable as her pieces are fragmented, giving reminders of decay and aging.

Anthony Ra – Looking Outwards 10

Filipa Valente’s Filtered Transparencies 2.0

After a lot of searching through different female interactive artists, Filipa Valente’s overall portfolio caught my eye the most, unsurprisingly, because of her incorporation of both light and architecture. Of her work, I decided to delve deeper into her “Filtered Transparencies 2.0”, an interactive art installation that uses space, sound and layered lights to create an unworldly inhabitable experience.

installation in Lisbon

This installation’s main goal is to clear the user’s head of all habitable boundaries around us to immerse ourselves into an “augmented hologram-like environment”.

this piece creates space without the practical manner of how space is normally made

I am very intrigued in how she incorporates an architectural mindset without the practical logic in how space should be made. A current architecture student would see space using walls or differing elevations or alteration in materials; however, she creates space using an illusion of mass and dimensionality, manipulating oneself in between screens and altering voids.

Filipa Valente’s website

Filtered Transparencies 2.0

Erin Fuller – Generative Landscape

//Erin Fuller
//SectionA
//efuller@andrew.cmu.edu
//Project 10

var terrainSpeed1 = 0.00009; //background mountain speed
var terrainDetail1 = 0.006; //background mountain detail

var terrainSpeed2 = 0.00025; //foreground mountain speed
var terrainDetail2 = 0.005; //foreground mountain detail

var terrainSpeed3 = 0.00025; //foreground plane speed
var terrainDetail3 = 0.0015; //foreground plane detail

var img;
var gFrameCount = 0; 

function preload() {
    img = loadImage("https://i.imgur.com/mO1FDPJ.png"); //preload image
}

function setup() {
    createCanvas(480, 480);
    frameRate(10);
}

function draw() {
//sky
    colorMode(HSB);
    var s = 55; // saturation 55
    var b = 100; //brightness 100

    gFrameCount = gFrameCount + 1;
    if (gFrameCount > 600) {
        gFrameCount = 0;
    } //add frame count, restart after 600

    if (gFrameCount > 300) {
        var s = map(gFrameCount, 300, 600, 85, 55);
        var b = map(gFrameCount, 300, 600, 25, 100);
        var m = map(gFrameCount, 300, 600, 25, 65);
    } else {
        var s = map(gFrameCount, 0, 300, 55, 85);
        var b = map(gFrameCount, 0, 300, 100, 25);
        var m = map(gFrameCount, 0, 300, 65, 25);        
    } //changes sky background + mountains to night
    background(214, s, b); 

//sun & moon
    var centerx = width / 2; 
    var centery = 170;
    var radius = 120;
    var d = 45 + random(-2, 2); //makes sun and moon more fun
    var rAngle = map(frameCount, 0, 600, 0, 360) + 45; //
    
    noStroke();
    line(centerx, centery, centerx + x, centery - y); //rotating line w circles at end

    var sX = cos(radians(rAngle)) * radius;
    var sY = sin(radians(rAngle)) * radius;

    ellipseMode(CENTER);
    fill('yellow');
    ellipse(centerx + sX, centery - sY, d, d); //sun

    var mX = cos(radians(-rAngle)) * radius; //neagtive to go in opposite of sun
    var mY = sin(radians(-rAngle)) * radius;

    fill('white');
    ellipse(centerx + mX, centery - mY, d, d); //moon

//background-mountain
    noStroke(); 
    fill(32, 60, m - 5);
    beginShape(); 
    vertex(0, height);
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail1) + (millis() * terrainSpeed1);
        var y = map(noise(t), 0, 1, height / 12, height / 3);
        vertex(x, y); 
    }
    vertex(width, height);
    endShape();

//foreground-mountain
    fill(32, 45, m); 
    beginShape(); 
    vertex(0, height);
    for (var z = 0; z < width; z++) {
        var f = (z * terrainDetail2) + (millis() * terrainSpeed2);
        var y = map(noise(f), 0, 1, height / 12, height / 2);
        vertex(z, y); 
    }
    vertex(width, height);
    endShape();

//foreground-plane
    fill(32, 30, m + 20); 
    beginShape(); 
    vertex(0, height);
    for (var z = 0; z < width; z++) {
        var p = (z * terrainDetail3) + (millis() * terrainSpeed3);
        var y = map(noise(p), 0, 1, height / 2, height * .75);
        vertex(z, y); 
    }
    vertex(width, height);
    endShape();
 
//foreground-train
    fill(10); 
    beginShape(); // clockwise

    vertex(0, 480);
    vertex(0, 0);
    vertex(480, 0);
    vertex(480, 480);

    var a = 20;
    var b = 40;
    var c = 60

    beginContour(); // counter clockwise
    vertex(b, a); //left-up
    bezierVertex(a, a, a, a, a, b);
    vertex(a, height - b - c); //left-down
    bezierVertex(a, height - a - c, a, height - a - c, b, height - a - c);
    vertex(width - b, height - a - c); //right-down
    bezierVertex(width - a, height - a - c, width - a, height - a - c, width - a, height - b - c);
    vertex(width - a, b); //right up
    bezierVertex(width - a, a, width - a, a, width - b, a);  

    endContour();
    endShape(CLOSE);

    rect(0, 115, width, 5);
    rect(0, 210, width, 5);
    rect(0, 305, width, 5);
    
    noFill(); 
    colorMode(RGB, 225);
    stroke(139, 186, 213, 130);
    strokeWeight(10);
    
    line(60, 100, 120, 40); //"window glares"
    line(62, 73, 93, 42);
    line(95, 95, 130, 59);

    line(426, 322, 387, 361); //"window glares"
    line(443, 328, 390, 381);
    line(451, 344, 412, 382);

//foreground cowboy
    image(img, -90, 140, img.width * .25, img.height * .25);
}

I generated a landscape that both travels through space and time. The cowboy is watching the desert pass by from the train, as well as the day change to night and back.

Jamie Dorst Project 10

sketch

/*
Jamie Dorst
jdorst@andrew.cmu.edu
Section A
Project-10
*/

var trees = [];
// noise variables
var terrainSpeed1 = 0.0005;
var terrainDetail1 = 0.002;
var terrainSpeed2 = 0.0003;
var terrainDetail2 = 0.004;
var terrainSpeed3 = 0.0001;
var terrainDetail3 = 0.006;

function setup() {
    createCanvas(480, 480);
    // create an initial collection of trees
    for (var i = 0; i < 7; i++){
        var rx = random(width);
        trees[i] = makeTree(rx);
    }
    frameRate(10);
}

function draw() {
    background('#E0F7FA');
    // draw sun
    fill('gold');
    noStroke();
    ellipse(100, 100, 100, 100);
    // draw clouds
    fill(255);
    ellipse(340, 80, 50, 50);
    ellipse(360, 90, 60, 60);
    ellipse(380, 70, 75, 75);
    ellipse(400, 80, 50, 50);

    ellipse(220, 200, 50, 50);
    ellipse(250, 210, 60, 60);
    ellipse(260, 190, 75, 75);
    ellipse(280, 200, 50, 50);

    drawHills();
    updateAndDisplayTrees();
    removeTreesThatHaveSlippedOutOfView();
    addNewTreesWithSomeRandomProbability(); 
}

function drawHills() {
    // blue hills
    beginShape(); 
    stroke('#3949AB');
    for (var q = 0; q < width; q++) {
        var t = (q * terrainDetail3) + (millis() * terrainSpeed3);
        var y = map(noise(t), 0,1, 25, height)
        line(q, y, q, height); 
    }
    endShape();
    // pink hills
    beginShape(); 
    stroke('#E91E63');
    for (var a = 0; a < width; a++) {
        var t = (a * terrainDetail2) + (millis() * terrainSpeed2);
        var y = map(noise(t), 0,1, height / 2, height)
        line(a, y, a, height); 
    }
    endShape();

    // yellow hills
    beginShape(); 
    stroke('#FFEB3B');
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail1) + (millis() * terrainSpeed1);
        var y = map(noise(t), 0,1, 2 * height / 3, height)
        line(x, y, x, height); 
    }
    endShape();
}

function updateAndDisplayTrees() {
    // update the trees' positions and display them
    for (var i = 0; i < trees.length; i++){
        trees[i].move();
        trees[i].display();
    }
}

function removeTreesThatHaveSlippedOutOfView() {
    // if a tree has dropped off the left edge remove it from the array
    // copy all the trees we want to keep into a new array
    var treesToKeep = [];
    for (var i = 0; i < trees.length; i++){
        if (trees[i].x + trees[i].breadth > 0) {
            treesToKeep.push(trees[i]);
        }
    }
    trees = treesToKeep;
}

function addNewTreesWithSomeRandomProbability() {
    // add a new tree to the end, 20% chance
    var newTreeLikelihood = 0.2; 
    if (random(0,1) < newTreeLikelihood) {
        trees.push(makeTree(width));
    }
}

// draw the tree
function treeDisplay() {
    if (this.colors < 0.5) {
        var fillColor = 255;
        var strokeColor = 0;
    } else {
        fillColor = 0;
        strokeColor = 255;
    }
    fill(fillColor);
    noStroke();
    ellipseMode(CENTER);
    ellipse(this.x, height - this.trunkHeight, this.treeSize, this.treeSize);
    stroke(strokeColor);
    strokeWeight(3);
    line(this.x, height - this.trunkHeight - 5, this.x, height);
    line(this.x, height - this.trunkHeight + 5, this.x - 7, height - this.trunkHeight - 2);
    line(this.x, height - this.trunkHeight + 10, this.x + 7, height - this.trunkHeight + 3);
}

function makeTree(birthLocationX) {
    var tree = {
        trunkHeight: random(40, 80),
        treeSize: random(30, 50),
        colors: random(0, 1),
        x: birthLocationX,
        sizes: 50,
        breadth: 50,
        speed: -20.0,
        move: treeMove,
        display: treeDisplay
    }
    return tree;
}

// method to update position of building every frame
function treeMove() {
    this.x += this.speed;
}

For this project, I just wanted to make a fun landscape and then have a lot of contrasting colors, which is why I made the trees randomize to be black with white or white with black. I had a lot of trouble at the beginning figuring out how to get the trees to stay on the page, and then later, move. I also struggled with getting the hills to be different heights, but when I figured it out it was a pretty simple change. I think that overall though I ended up learning a lot more about objects, and I’m happy with how it turned out.

Jonathan Liang – Looking Outwards – 10

                          in the eyes of the blind

Notes on Blindness is a short film by Peter Middleton and James Spinney. The film documents the life of a blind man called John Hull, and uses virtual reality and gameplay mechanics to recreate John’s cognitive and emotional memories. The genius behind the virtual reality component is French artist and art director Béatrice Lartigue. Lartigue is primarily known for her interactive installations and currently works in the interdisciplinary collaborative Lab212. She has won many awards, including the Google International Art Prize, Tribeca Film Festival Storyscapes Award, the Lumen Prize, as well as the Sundance Film Festival.

Notes on Blindness is definitely something to check out: http://epure.it/notes-on-blindness

 

More of her interesting work can be found on her website:

http://epure.it/

 

Judy Li-Project-10-Landscape

judyli: Landscape Project 10

/*
Judy Li
Section A
judyli@andrew.cmu.edu
Project-10
*/

var terrainSpeed = 0.0005;
var terrainDetail = 0.002;
var terrainDetail1 = 0.00125;
var terrainDetail2 = 0.001;
var terrainDetail3 = 0.0005;
var yaxis = 1;
var c;
var c1;
var c2;
var star = [];

function setup() {
    createCanvas(480, 480);
    frameRate(10);
    c2 = color(179, 77, 37);
    c1 = color(64, 40, 74);
    c = color(247, 222, 85);

    star.push(drawStar());
}

function wave1() {
	beginShape();
	stroke(26, 20, 95);
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail) + (millis() * terrainSpeed);
        var y = map(noise(t), 0, 5, 0, height / 4);
        line(x, y + (height / 2), x, height); 
    }
    endShape();
}

function wave2() {
	beginShape();
	stroke(26, 40, 95);
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail1) + (millis() * terrainSpeed);
        var y = map(noise(t), 0, 4, 0, height / 2);
        line(x, y + 15 + (height / 2), x, height); 
    }
    endShape();
}

function wave3() {
	beginShape();
	stroke(26, 60, 95);
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail2) + (millis() * terrainSpeed);
        var y = map(noise(t), 0, 3.5, 0, height);
        line(x, y + 25 + (height / 2), x, height); 
    }
    endShape();
}

function wave4() {
	beginShape();
	stroke(26, 70, 95);
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail3) + (millis() * terrainSpeed);
        var y = map(noise(t), 0, 3, 0, height);
        line(x, y + 50 + (height / 2), x, height); 
    }
    endShape();
}

 
function draw() {
    background("white");
    nStar();
    nPosition();
    nArray();
    setGradient(0, 0, width, height / 3, c1, c2, yaxis);
    setGradient(0, height / 3, width, 2 * (height / 3), c2, c, yaxis);

    fill(247, 222, 125);
    ellipse(width / 2, 25 + (height / 2), 50, 50);

    push();
    strokeWeight(1.5);
    stroke(255, 255, 255, 100);
    ellipse(width - 50, 50, 50, 50);
    fill(247, 222, 200);
    ellipse(width - 50, 50, 49, 49);
    pop(); 

    for (var i = 0; i < star.length; i++) {
        star[i].display();
    }

    push();
    wave1();
    wave2();
    wave3();
    wave4();
    noFill();
    rect(0, 0, width, height);
    pop();
}

function nStar() {
    if (random(0, 250) < 50) {
        star.push(drawStar());
    }
}

function nPosition() {
    for (var i = 0; i < star.length; i++) {
        star[i].move();
    }
}

function nArray() {
    var ogStar = [];
    for (var i = 0; i < star.length; i++) {
        if (star[i].x > 0) {
            ogStar.push(star[i]);
        }
    }
    star = ogStar;
}

function moveStar() {
    this.x -= this.speed;
}

function seeStar() {
    stroke(255, 255, 255, 250);
    strokeWeight(random(1, 5));
    point(this.x, this.y);
}

function drawStar() {
    var star = {x: width,
        pdist: 100,
        speed: 5,
        starsize: round(random(0, 5)),
        y: round(random(0, height / 4)),
        move: moveStar,
        display: seeStar
        }
    return star;
}

function setGradient(x, y, w, h, c1, c2, axis) {
    noFill();
    if (axis == yaxis) {  // Top to bottom gradient
	    for (var i = y; i <= y+h; i++) {
		    var inter = map(i, y, y+h, 0, 1);
		    var c = lerpColor(c1, c2, inter);
		    stroke(c);
		    line(x, i, x + w, i);
		}
	}
}

For this project, I wanted to mimic the moment of a sunset on the horizons of an ocean. I used four waves to create a different movement between the others. I also included stars slowly throughout to capture the day to night lapse. And to make it a little fun on the part of the sun, the stroke weights were in a random order so that it captures the movement of the disappearing sun. I had a lot of fun with this project, but I struggled a bit in the beginning with the details of the wave. But I think that the templates on the course page helped a lot with my other objects.

initial idea sketch

Looking Outwards – 10

Link: Production of bio-fuel through photosynthesis by algae located in Lille, France on October 2013.

From the Energy Futures project in 2012, the Algae Curtain was a part of the Living Laboratory. Materials used for this project includes: clear tubing, silicon casts, cultures of algae (specifically Nannochloropsis), nutrients for the algae, electronics and pumps, and lighting. The tubes are weaved into drapes suspended from the windows and algae is pumped inside the textile, where it performs photosynthesis to produce a bio-fuel for local use. This structure provides a permanent infrastructural support for the Future Fruits and it also formed micro-ecologies inside the plastic tubes. I find this project really unique because living organisms are integrated with a building’s structure and not only does it provide some sort of structural assistance, it could also provide fuel!

Wired Innovation Fellow, 2014

About Rachel Wingfield:
Rachel is a researcher, educator, and a designer who trained at the Royal College of Art. She specializes and studies living environments and their responses to the environments. She likes to explore emerging technological and biological futures by integrating technology, space, and living materials to create unique environments and experiences. Her past works not only showcases a new role for designers to innovate and intervene at an urban scale, but they also offered collaborative tools for public engagement activities/practices.

Other works by Studio Loop.pH:
Loop.pH is a studio based in London that experiments across the fields of the sciences, architecture, and design. This studio was founded so that people are able to create visionary experiences that can help them dream or re-imagine new visions for the future.

Jamie Dorst Looking Outward 10

For this week’s Looking Outward post I’ve chosen to write about Kate Hollenbach, an artist, programmer, and educator based in Chicago and Los Angeles. The project that really interested me by her is called phonelovesyoutoo. The project was done over one month, where she recorded her own cell phone front camera every time she used her phone. In her database, she put together all the videos arranged like a calendar, and played each tile proportional to the time of day it was recorded.

A video showing phonelovesyoutoo.

I was intrigued by this project because I think our phone usage is something that we hardly notice albeit it being one of the things we do most. I thought it was interesting to note the similarities and differences between clips in the project–a lot of her facial expressions are very similar, while the scenery around her changes. I think that has implications as to how we are spending our time–when we are on our phones, we have no emotion despite the changing world around us.