Tuesday

The final Video...

Wednesday

Last Post! Final Piece Sketch code!!

(With many thanks to Seb!)




And without formatting (can copy and paste!):



import hypermedia.video.*; 

import processing.opengl.*;
import processing.video.*;
PImage bg;
OpenCV opencv;                    //  Creates a new OpenCV Object

// add image to sketch
PImage particleImg;

Particle[] particles; 

final int MAX_PARTICLES = 150; 

void setup()
{

  size(1000,250); 
  frameRate(30); 
  bg= loadImage ("sky7.jpg");  
  opencv = new OpenCV( this );    //  Initialises the OpenCV object
  opencv.capture( 250,250);     //  Opens a video capture stream

  particles = new Particle[0];  
  particleImg = loadImage("shining star.png");
}


void draw()
{


  noStroke();
  noTint();  
  imageMode(CORNER); 

  opencv.read();                  //  Grabs a frame from the camera




  background (bg);


  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*4), ypos); 
      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.2; 
  float fadeSpeed = -5; 
  float shrink = 0.9; 
  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.10);
    this.currentAlpha = random (0,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();
  }
}


I'm now signing off...GoodBye and Goodnight!!

Tuesday

Acknowledgements

With great acknowledge to Seb lee-Delisle for the permission to use your code and for your hours of patience!

One Big Round-Up!

We have come to the end of the project. It's been a very difficult, but exciting project. There have been highs and also many lows (i.e not being able to get OpenCv working on windows boo!- works now yay!). Learning processing has been like learning a new language, but as they say "Practice makes perfect!" (Well, perhaps not perfect but given it a very good go!

I have documented my process throughout this project in this blog and in a sketchbook. I find the blog particularly helpful, as I can quickly create entries regarding research I have found and ideas I have come up with from home or in College. Therefore Ideas are not forgotten; It's a great tool for idea development.

I used my sketchbook to brainstorm and to sketch initial ideas. This was a great starting point before being unleashed on the computer to make some "Magic!"""".

When I started this project, I found Processing very hard going. If I am to be honest, I still do! The hardest thing with the programme is knowing what it feasible with limited knowledge on coding. During the last ten weeks, I would come up with many ideas, but my level of Processing knowledge would mean that many of this ideas were not feasible.

After carrying out much research and many, many, many experiments, I started to understand what was feasible and what would be near impossible to create without a vast knowledge of the programme. I realised that the best idea was to keep to a simple idea and use simple code, but experiment with the variables to create different and very exciting effects.

I went through a phrase of the project, where I was trying to create sketches with imported movie clips that triggered when movement was detected. After many trials and hours of reading forums online regarding the matter, I realised that this wasn't as easy it sounded. That was when I decided to keep it simple and focus on particles to create a "funky" effect. This was so much more exciting, I actually able to experiment and get some really cool results rather than spending hours with no such luck.

I experimented with changing variables in my code and changing the backgrounds, flipping my background so that it mirrored by actions e.t.c e.t.c Hours of amusement! This also meant that I could spend more time experimenting with my background image and layout, all of which has been documented on this blog.

As already discussed on the blog, my inspiration was Michael Jordan and his Jumpman website. I originally wanted to create the same style and feel as the material on his website for my advertisement, so that people could relate the two. Funny enough, only today did I look back again at the Jumpman website and find this page which I have already shown on this blog:




Note the style of the Jordan Holiday section with the snowflakes. I could find some correlation there with my stars. Besides, I feel I have captured the overall feeling of the Jumpman website in my installation with a slight feminine edge. I obviously didn't want to copy any element exactly, but to capture the "feeling" of the site using colour, font style e.t.c

If we had to develop the project further, there would be a couple of tasks I would carry out. Firstly I would actual try and get my digital advertisement installed with a public place and find out peoples reactions and level of interactivity. Secondly, I would create the website that I have already discussed in past blog posts. This would be a website to advertise the fictional range of trainers, in the same style as Michael Jordan has with his Jumpman site:  Jumpman

I would obviously include all the elements I have devised, including the altered "Jumpman" Logo and the colour coded swoosh and trainer range. I would also include endorsements by Swin Cash (as researched), the pro WNBA Basketball player in much the same way as Michael Jordan.

All in all, a very rewarding project with its huge level of commitment needed to get your head around the code!

Ta da!!! ... It's the final Showdown!!!

I know I still have a crit session to attend regarding my final piece, but here goes for now!!!:

(Sorry the extremely bad video quality! You will get a much better when the film of my installation at work is complete!).


I've got my eye on you!: Update on my target audience...

I know way back in my project I set my target audience to be 16- 30 years old; I didn't specify gender. Obviously, since that post I have developed my idea and aimed my product at one gender.

The good thing about my advertisement (hopefully) is that although it is aimed at Women. it will also appeal to men, because it isn't overly feminine and the interactive element with appeal to both genders and people of all age categories. Just because my product is aimed at the female audience, i didn't want to alienate the rest  of the population. If people were to walk down the road where this was displayed and the stars starting interacting with their movement I would hope they would have a play, regardless of their gender or age.

Who's up for a three-way?!

All the way through this project, I have thought about where my installation would be displayed and therefore created elements accordingly.

As soon as I viewed the website Monster Media, I knew that I wanted to create a shopfront installation. It would (if put into production)be placed as a digital window display. Therefore I decided to create an installation that could be projected along a whole shop front.

On a shopfront such as this Nike one!:



I set my sketch size to 1000 x 250 to create this elongated effect. Therefore my background had to be of equal size.

If in reality, my advert was to be installed, it would go along three shop windows and therefore would be on three separate projects using a three way projector.

This would also ensure that the quality for the projection was also at its best; no loss of quality.

It is hard to envisage this on a computer screen or even projected ( the real installation would be about three times the size!), but We will have to try to!

Ta da! This is how I would envisage it:


...And there you go!