terça-feira, 2 de junho de 2015

Exercício 18: CrossFade Entre 3 Imagens

O código a seguir realiza o crossfade entre 3 imagens, o código de crossfade desenvolvida em aula é reutilizado, uma adaptação é feita para que a variável que controla o crossfade é controlada pelo movimento do mouse, enquanto o mouse esta na primeira metade da tela vertical da tela, o programa realiza o crossfade entre a imagem 1 e 2, na segunda metade este faz o crossfade entre as imagens 2 e 3, e vice e versa.

Código-Fonte:

PImage imgOriginal;
PImage img2;
PImage img3;
float a,a2,r,g,b;
int pos;

void setup(){
  a=1;
  a2=1;
  mouseY=1;
  size(320,240);
  imgOriginal = loadImage("opa.jpg");
  img2 = loadImage("trololo.jpg");
  img3 = loadImage("yopa.JPG");
}

void draw(){
  loadPixels();
  //a = a - 0.001;
 if(mouseY<height/2){
   a=float(mouseY)/float(height/2);
   println(float(mouseY)/float(height/2));
 }else{
   a2=float(mouseY-height/2)/float(height/2);
   println(float(mouseY-height/2)/float(height/2));
 }

 
  for(int x=0;x<320;x++){
    for(int y=0;y<240;y++){
      if(a>=0 && mouseY<width/2){
      pos=y*320+x;
        r = (1-a) * red(imgOriginal.pixels[pos]) + a * red(img2.pixels[pos]);
        g = (1-a) * green(imgOriginal.pixels[pos]) + a * green(img2.pixels[pos]);
        b = (1-a) * blue(imgOriginal.pixels[pos]) + a * blue(img2.pixels[pos]);
        pixels[pos] = color(r,g,b);
      }else if(a2>=0 && mouseY>height/2){
       
        pos=y*320+x;
        r = (1-a2) * red(img2.pixels[pos]) + a2 * red(img3.pixels[pos]);
        g = (1-a2) * green(img2.pixels[pos]) + a2 * green(img3.pixels[pos]);
        b = (1-a2) * blue(img2.pixels[pos]) + a2 * blue(img3.pixels[pos]);
        pixels[pos] = color(r,g,b);
       
      }
   
  }
  }

   
    updatePixels();
}

Nenhum comentário:

Postar um comentário