http://www.monstermedia.net/
I love this company... They have been my main inspiration for deciding the create an interactive shopfront for this project. They have done some very simply, but effective designs, that have really worked (you only have to look at the public interacting with the interactive advertising in the videos on the website to see).
I know I have looked at them already, but Now I am a bit more knowledgeable on Processing and have a slightly better idea on what I would like to do for the project, I would like to look at specific projects they have done to help my finalise my idea.
Monster Media- Timberland- EarthKeepers
Loving this video! Seems like such a simply idea... as people pass it sets off video clips. Fun idea! I don't know how veasable this is with my knowledge on processing. Will have to see!
Monster Media - ESET
This idea "looks" so simple but is really effective. as soon as someone walks past the display, particles seem to follow the person and this triggers a simple movie clip that happens to be just a couple of sentences and then the company logo.
A huge possibility!
I could see if I could adapt the following code that I already have to create a similar effect using movement and particles:
import hypermedia.video.*;
import processing.opengl.*;
import processing.video.*;
OpenCV opencv; // Creates a new OpenCV Object
// add image to sketch
PImage particleImg;
Particle[] particles;
final int MAX_PARTICLES = 50;
void setup()
{
size(640,480);
frameRate(20);
opencv = new OpenCV( this ); // Initialises the OpenCV object
opencv.capture( 320, 240 ); // Opens a video capture stream
particles = new Particle[0];
particleImg = loadImage("ParticleBlue.png");
//
}
void draw()
{
background(0);
noStroke();
noTint();
imageMode(CORNER);
opencv.read(); // Grabs a frame from the camera
pushMatrix();
//scale(2,2);
translate(width,0);
scale(-2,2);
image( opencv.image(), 0, 0 ); // Display the difference image
popMatrix();
opencv.absDiff(); // Calculates the absolute difference
imageMode(CENTER);
updateParticles();
makeParticles(opencv.image());
if(particles.length>MAX_PARTICLES)
particles = (Particle[]) subset(particles, particles.length-MAX_PARTICLES);
opencv.remember(); // Remembers the current frame
}
void updateParticles()
{
for(int i =0; i<particles.length; i++)
{
Particle p = particles[i];
p.update();
p.draw();
}
}
void makeParticles(PImage img)
{
Particle p;
for(int i= 0; i<200; i++)
{
int xpos = (int) random(img.width);
int ypos = (int) random(img.height);
if(brightness(img.get(xpos,ypos))>50)
{
p = new Particle(width - (xpos*2), ypos*2);
p.draw();
particles = (Particle[]) append(particles, p);
}
}
}
class Particle
{
float xPos;
float yPos;
float xVel;
float yVel;
float rotation = 0;
float spin;
float currentAlpha = 255;
float currentScale = 0.5;
float drag = 0.98;
float fadeSpeed = 1;
float shrink = 0.8;
float gravity = 0.1;
Particle(float xpos, float ypos)
{
this.xPos = xpos;
this.yPos = ypos;
this.xVel = random(-20,20);
this.yVel = random(-20,20);
this.currentScale = random(0.01,0.05);
this.currentAlpha = 255;
//this.rotation = random(0,360);
//this.spin = random(-2,-5);
}
void update()
{
xVel*=drag;
yVel*=drag;
yVel+=gravity;
xPos += xVel;
yPos += yVel;
currentAlpha -=fadeSpeed;
currentScale*=shrink;
rotation+=spin;
}
void draw()
{
if(currentAlpha<=0) return;
pushMatrix();
tint(255,currentAlpha);
translate(xPos, yPos);
scale(currentScale);
rotate(radians(rotation));
image(particleImg, 0, 0);
popMatrix();
}
}
import processing.opengl.*;
import processing.video.*;
OpenCV opencv; // Creates a new OpenCV Object
// add image to sketch
PImage particleImg;
Particle[] particles;
final int MAX_PARTICLES = 50;
void setup()
{
size(640,480);
frameRate(20);
opencv = new OpenCV( this ); // Initialises the OpenCV object
opencv.capture( 320, 240 ); // Opens a video capture stream
particles = new Particle[0];
particleImg = loadImage("ParticleBlue.png");
//
}
void draw()
{
background(0);
noStroke();
noTint();
imageMode(CORNER);
opencv.read(); // Grabs a frame from the camera
pushMatrix();
//scale(2,2);
translate(width,0);
scale(-2,2);
image( opencv.image(), 0, 0 ); // Display the difference image
popMatrix();
opencv.absDiff(); // Calculates the absolute difference
imageMode(CENTER);
updateParticles();
makeParticles(opencv.image());
if(particles.length>MAX_PARTICLES)
particles = (Particle[]) subset(particles, particles.length-MAX_PARTICLES);
opencv.remember(); // Remembers the current frame
}
void updateParticles()
{
for(int i =0; i<particles.length; i++)
{
Particle p = particles[i];
p.update();
p.draw();
}
}
void makeParticles(PImage img)
{
Particle p;
for(int i= 0; i<200; i++)
{
int xpos = (int) random(img.width);
int ypos = (int) random(img.height);
if(brightness(img.get(xpos,ypos))>50)
{
p = new Particle(width - (xpos*2), ypos*2);
p.draw();
particles = (Particle[]) append(particles, p);
}
}
}
class Particle
{
float xPos;
float yPos;
float xVel;
float yVel;
float rotation = 0;
float spin;
float currentAlpha = 255;
float currentScale = 0.5;
float drag = 0.98;
float fadeSpeed = 1;
float shrink = 0.8;
float gravity = 0.1;
Particle(float xpos, float ypos)
{
this.xPos = xpos;
this.yPos = ypos;
this.xVel = random(-20,20);
this.yVel = random(-20,20);
this.currentScale = random(0.01,0.05);
this.currentAlpha = 255;
//this.rotation = random(0,360);
//this.spin = random(-2,-5);
}
void update()
{
xVel*=drag;
yVel*=drag;
yVel+=gravity;
xPos += xVel;
yPos += yVel;
currentAlpha -=fadeSpeed;
currentScale*=shrink;
rotation+=spin;
}
void draw()
{
if(currentAlpha<=0) return;
pushMatrix();
tint(255,currentAlpha);
translate(xPos, yPos);
scale(currentScale);
rotate(radians(rotation));
image(particleImg, 0, 0);
popMatrix();
}
}
Wicked!!!
0 comments:
Post a Comment