I felt inspired by some visual artists that used simple animations to create interesting effects in otherwise still art pieces. It’s sort of like the idea of a snow globe, changing around a still scenery. I decided to make an art piece that essentially replicated this.
I created a class that loops 100 times to create snow falling at different speeds down the screen, with an umbrella girl I drew from another drawing program I made. The user’s cursor is a snowflake. It’s like a simple interactive desktop image. I’m hoping to add to this by having snowflakes fall out of the cursor as it moves across the screen.
PImage Umbrella;
class Snow {
float ySpeed;
float diam;
float xsky;
float yPos;
float opacity;
float snowflake;
Snow() {
ySpeed = 0;
diam = 0;
xsky = 0;
yPos = 0;
}
void drawing(){
fill(35,1);
strokeJoin(BEVEL);
rect(600,330,100,200);
fill(35,2);
rect(600+10,330+10,100-20,200-20);
fill(35,3);
rect(600+20,330+20,100-40,200-40);
fill(190,180);
}
void snowball() {
fill(210, opacity);
xsky = random(1, width);
ellipse(xsky, yPos, diam, diam);
}
void falling() {
ySpeed = random(-1, 12);
yPos += ySpeed;
if (yPos >= height) {
yPos = 0;
}
}
void snowsize() {
diam = random(1, 25);
}
void opacity(){
opacity = map(yPos,0, height*0.87,210,0);
}
void cursory(){
fill(225);
pushMatrix();
stroke(225,opacity);
snowflake = 30;
line(mouseX,mouseY,mouseX+snowflake,mouseY-snowflake);
line(mouseX,mouseY-snowflake,mouseX+snowflake,mouseY);
line(mouseX+snowflake/2,mouseY-snowflake,mouseX+snowflake/2,mouseY);
line(mouseX,mouseY-snowflake/2,mouseX+snowflake,mouseY-snowflake/2);
popMatrix();
if(mousePressed == true){
line(pmouseX,pmouseY,pmouseX+snowflake*2,pmouseY-snowflake*2);
line(pmouseX,pmouseY-snowflake*2,pmouseX+snowflake*2,pmouseY);
line(pmouseX+snowflake*2/2,pmouseY-snowflake*2,pmouseX+snowflake*2/2,pmouseY);
line(mouseX,pmouseY-snowflake*2/2,pmouseX+snowflake*2,pmouseY-snowflake*2/2);
}
noStroke();
}
}
Snow[] unicorn;
void setup() {
size(800, 600);
background(35);
noStroke();
fill(250);
Umbrella = loadImage("Umbrella.png");
unicorn = new Snow[100];
for(int q = 0;q<unicorn.length; q++){
unicorn[q] = new Snow();
}
}
void draw() {
image(Umbrella,600,330);
noCursor();
for(int q = 0;q<unicorn.length; q++){
unicorn[q].snowball();
unicorn[q].snowsize();
unicorn[q].falling();
unicorn[q].opacity();
unicorn[q].cursory();
//unicorn[q].drawing();
}
fill(35,10);
rect(0,0,width,height);
}