Starting Screen

Hola, soy principiante en processing y estoy haciendo un proyecto que involucra la librería vídeo, pero estoy teniendo algunos problemas.
En primer lugar quiero hacer una pantalla de inicio para mi programa, pero la imagen que cargué no aparece en pantalla.
En segundo lugar, cada vez que cambio de objetos/filtros que tengo para la cámara los 2 primeros se sobreponen cuando doy click y quisiera que empize desde cero con el fondo negro, pero si lo pongo en el “if” se queda en loop.
Aquí esta mi código para que le hechen un vistazo.

import processing.video.*;
filtro[] ellipses;
pt[] puntos;
filtro5 filt;
pixeles r;
Capture cam;
float c;

int click,stage;
PImage starpro;
void setup(){
 
 size(640,480); 
 stage=1;
  cam= new Capture(this,640,480);
  cam.start();
  puntos=new pt[100];
  starpro=loadImage("starpro.jpg");
  
starpro.resize(width,height);
  for(int i =0; i<puntos.length;i++){
    
    puntos[i]=new pt();
  }
  ellipses = new filtro [500];
  for(int i = 0; i<ellipses.length;i++){
    
  ellipses[i]=new filtro();
  }
  filt=new filtro5();
  background(starpro);
  r= new pixeles();
  
}

void draw(){
  if(stage==1){
    
    if(mousePressed==true){
     stage=2; 
    }
  }
  if(stage==2){
    
  }
  cam.read();
  if(click==1){
   
  for(int i = 0;i<ellipses.length;i++){
  
   ellipses[i].display(); 
   ellipses[i].move();
  }
  }
  else if(click==2){

for(int i = 0;i<puntos.length;i++){

    
  puntos[i].disp();
}
  }
else if(click==3){
    
  r.pix();
  }
  else if(click==4){
   filt.filtro(); 
  }
else{
background(0);  
  
}
 
    
  


}
void keyPressed(){ 
  
if(key=='g'){
fill(255);
  save("foto.jpg");
  textSize(70);
  text("SAVED", width/2,height/4);

}
}
void mousePressed(){
  click++;
  if(click==5){
  click=0;
  }
}
  class filtro{
  float x,y,vx,vy;
  
  filtro(){
   x= width/2;
   y=height/2;
   float a= random(TWO_PI);
   float speed=random(1,2);
   vx = cos(a)*speed;
   vy = sin(a)*speed;
  }
    void display(){
      
     noStroke();
     color c= cam.get(int(x),int(y));
     fill(c,25);
   
     triangle(5+x, 25+y, 18+x, 5+y, 26+x, 25+y);
  
    }
    void move(){
     x=x+vx;
     y=y+vy;
     if(y<0){
       y=height;
      
    }
    if(y > height){
    y=0;
}
if(x<0){
  x=width;
}
if(x>width){
  x=0;
    }
    }
}
class pt{
  float pointillize=10;
  pt(){
   
  }
  
void disp(){

   int x = int(random(cam.width));
  int y = int(random(cam.height));
  
    int loc = x + y*cam.width;
    loadPixels();
  float r = red(cam.pixels[loc]);
  float g = green(cam.pixels[loc]);
  float b = blue(cam.pixels[loc]);
  noStroke();
  

  fill(r,g,b,100);
  ellipse(x,y,pointillize,pointillize); 
  
  }
    
  }
  class pixeles{
  int pixelSize=10;
float angle;
  pixeles(){

    
  }
  void pix(){
    noStroke();
     pixelSize=int(map(mouseX, width, 0, 1, 80));
  for (int x=0; x<width; x+=pixelSize) {
    for (int y=0; y<height; y+=pixelSize) {
      color c=cam.get(x, y);
      fill(c);
      rect(x, y, pixelSize, pixelSize);
    }
  }
}
  }
class filtro5{

  int cellsize = 10; 
int cols, rows; 
  filtro5(){
    
    cols = width/cellsize;             
  rows = height/cellsize;           
    
  }

void filtro(){
   for (int i = 0; i < cols; i++ ) {
    for (int j = 0; j < rows; j++ ) {
      int x = i*cellsize + cellsize/2; 
      int y = j*cellsize + cellsize/2; 
      int loc = x + y*width;           
      color c = cam.pixels[loc];       
      float yy = map(brightness(cam.pixels[loc]), 50, 255, 0, mouseX);
      pushMatrix();
      translate(x+yy, y+yy); 
      fill(c);
      noStroke();
      rectMode(CENTER);
      rect(0, 0, cellsize, cellsize);
      popMatrix();
    }
  }
}
  
}

Gracias de antemano!!

1 Like

Usted declara click. Ahora haga click = 0.

En setup(), usted dibuja background(starpro).

En draw(), verifica click. ¿Es 1, 2, 3, 4? No, 0.

else { background(0)

Ahora el background es negro, sin starpro.