Face Planets

After my final presentation in class, Aankit and me continued to work on the project for the environmental fluid dynamics lab. Trying to figure out what interaction would be best to create with passers by in the street, we decided it would be interesting to have the fluids respond to a person’s image. We decided to use the Flir thermal camera to capture the video and translated the grasycale input to different coloured particles.

The next iterations were:

  • Using the flowfield image example to create a flow field based on a person’s face
  • Importing a video from the Flir camera
  • Drawing the vehicles, in colours mapped to the luminance of the image and in the location of the relevant pixel
  • Adding Syphon to connect to Mad Mapper
  • After the 1st day of the show, we decided to add a button to let the user capture their own image when they like it.

All the portraits created by the display are in a tumblr blog with the user’s names.

These are some user interactions, with different styles we used for the graphics.

Rena

The final code is here:

Nature of Code final – turntable simulation

NOC_earthy

For this final, I want to present progress I made with two separate projects involving fluid dynamics.

This is currently where I am at with the turntable simulation:
We have a circular flowfield, two particles systems that see each other, but a lot of things to solve still:

  • Sketch needs to run faster
  • respond to hand gestures
  • more fluid like
  • closer to the aesthetic of marble paper.

I am happy with the current state of the project but intend to improve on it in the next two weeks.
planetsplanets4planets3
Another thing I wanted to use the fluid dynamics for is an installation Ive started in a different class where the users draw each others image using hand gestures.
I wanted to make the movement more fluid like and then project the two images on top of each other in different tints. Here are some visual examples of the effect right now:

2colors_2

Screen Shot 2014-05-06 at 7.44.29 AM

Midterm / final proposal

maxresdefault 2

For the midterm, I am presenting a beginning of something I would like to continue o work on as a final.
The idea came from working on a Spatial Media project, creating an interactive space for a capsule motel / sleeping pods.

I want to create a way for people to interact through hand gestures and that will be revealing the image if the other person and projected on the ceiling of the capsule / bed.

After iterating with Kinect, I decided to switch to work with Leap Motion. Right now I have the basic prototype working but here is a list of things I need to add to the code:

  • Basing the graphics in the alpha channel on fluid dynamics, maybe with MSA fluid.
  • Creating different responses for different hand gestures
  • Improving the physical interface
  • Considering a mobile device and touch instead of Leap Motion
  • Combining footage from two cameras and adding color coding

Nature of Code midterm / final proposal from ziv schneider on Vimeo.

Popcorn fail

This week I watched all the videos from chapters and initially tried to work with Javascript.
It was maybe too much to take at once – the math concepts and a new language so I went back to processing and Java for now, until I get used to working with the browser and js.

My goal was to create a movement that emulates popcorn, as you can see in this sketchmovement_sketch-01I managed to get one kernel bouncing but I couldn’t get it to do it only once.
Also, when I tried to make an array of kernels, I keep getting a Null pointer exception error.

Here is my buggy code for now:

Corn[] c ;
int count = 100;

void setup() {
size(700,700);
c= new Corn[10];

}
void draw() {
background(255);

fill(0);
rect(0,350,700,350);

for (int i = 0; i < 10; i++) {
c[i].display();
c[i].checkEdges();

}}

class Corn{
PVector location;
PVector velocity;
PVector acceleration;
float gravity = 0.48;
float vy = 0;
float bounce = -1;

Corn(){
location = new PVector(random(100,600),(height/2));
velocity = new PVector(1,1);
acceleration = new PVector(random(0,0.02),random(0.1,0.2));
}
// void update() {
// velocity.sub(acceleration);
// location.add(velocity);
// }
void display() {
noStroke();
fill(#FFCC00);
ellipse(location.x, location.y, 10, 10);
translate(width/2, height/2);

}
void checkEdges() {
vy += gravity;
location.y+=vy;
if(location.y > height – 15)
{
vy *= bounce;
}
else if (location.y < 0) {
location.y = height;
}
}

}