Package app

Source Code of app.SerLiquidoVisual

package app;



import java.awt.Cursor;
import java.nio.FloatBuffer;
import java.util.Date;
import java.util.Random;

import javax.media.opengl.*;
import javax.media.opengl.glu.*;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import oscP5.OscMessage;
import oscP5.OscP5;

import codeanticode.glgraphics.GLGraphics;
import codeanticode.glgraphics.GLTexture;
import codeanticode.glgraphics.GLTextureFilter;
import codeanticode.glgraphics.GLTextureWindow;





import processing.core.*;
import processing.opengl.*;
import remixlab.proscene.Camera;
import scenes.ElasticGrid;
import scenes.Grid;
import scenes.Scene;
import servers.WiiController;
import textures.FacesLoader;

import utils.Config;
import utils.ConsoleIO;

public class SerLiquidoVisual extends PApplet {

  public static void main(String[] args) {
    if(true) {      
      System.setProperty("apple.laf.useScreenMenuBar", "false");
      System.setProperty("apple.awt.fakefullscreen", "true");
     
      PApplet.main(new String[] { "--present""app.SerLiquidoVisual" });
    } else{
      PApplet.main(new String[] { "app.SerLiquidoVisual" });     
    }

  }


  ///////////////////////////////////////////////////////
  // CONFIGURACIONES:
  //
  ///////////////////////////////////////////////////////
 
  public static Logger logger = Logger.getLogger(SerLiquidoVisual.class);

  private static final long serialVersionUID = 1

  private String configFile = ("data/config.ini");
  private Config config = new Config(configFile);

  ///////////////////////////////////////////////////////
  // GUI:
  /////////////////////////////////////////////////////// 

  //TODO USAR UNIVERSE !!!
  PFont OSD_FONT = createFont("Arial", 16)

  private int GUI_W = config.getIntParameter("GUI_W");
  private int GUI_H = config.getIntParameter("GUI_H");
  private int GUI_X = config.getIntParameter("GUI_X");
  private int GUI_Y = config.getIntParameter("GUI_Y");

  //////////////////////////////////////////////////////////////////////////////////////
  // OUTPUT
  //////////////////////////////////////////////////////////////////////////////////////

  private int OUTPUT_W = config.getIntParameter("OUTPUT_W")
  private int OUTPUT_H = config.getIntParameter("OUTPUT_H");
  private int OUTPUT_X = config.getIntParameter("OUTPUT_X");
  private int OUTPUT_Y = config.getIntParameter("OUTPUT_Y");


  //////////////////////////////////////////////////////////////////////////////////////
  // TEXTURAS
  //////////////////////////////////////////////////////////////////////////////////////

  private GLTextureWindow     OUTPUT_WINDOW; 
  private GLTexture         OUTPUT_TEXTURE;
 
  private GLTexture         tex0;
  private GLTexture         nightShot;
 
  GLTextureFilter ns;
  GLTextureFilter dream;
 
  // aca voy a cargar las imagenes de las caras
  private FacesLoader faces;

  //////////////////////////////////////////////////////////////////////////////////////
  // CAMARA
  //////////////////////////////////////////////////////////////////////////////////////

  private Camera         OUTPUT_CAMERA;

  ///////////////////////////////////////////////////////
  // ESCENAS
  ///////////////////////////////////////////////////////

  private int currentScene = 1
  private ElasticGrid serLiquido ;

  ///////////////////////////////////////////////////////
  // AUDIO
  ///////////////////////////////////////////////////////



  ///////////////////////////////////////////////////////
  // VARIOS
  ///////////////////////////////////////////////////////

  private Random random = new Random();
 
  private WiiController wii = new WiiController();
  boolean wiiFeedback = false;

  ////////////////////////////////////////////////////
  //
  /////////////////////////////////////////////////////
 
  private OscP5 coreListen;
  private int inputPort = 8600;
 
  public void setup(){
   
    PropertyConfigurator.configure("./data/logs/logger.properties");

   
   
    logger.info("CREATING PAPPLET");
   
//    size(GUI_W,GUI_H, GLGraphics.GLGRAPHICS);
    size(OUTPUT_W,OUTPUT_H, GLGraphics.GLGRAPHICS);
    frameRate(60);   
    frame.setLocation(GUI_X, GUI_Y)
    frame.setCursor(Cursor.CROSSHAIR_CURSOR);

    mySetup();
   
    coreListen = new OscP5(this,inputPort);
  }


  void mySetup(){

    ////////////////////////////////////////////////////
    // OUTPUT
    /////////////////////////////////////////////////////

    logger.info("CREATING OUTPUT TEXTURE");

    OUTPUT_TEXTURE = new GLTexture(this, OUTPUT_W, OUTPUT_H);

    // a la ventana de salida yo solo le paso una textura
    // que funciona como canvas ya que luego
    // cada escena en particular me va a devolver una textura
    // de Opengl con la que puedo hacer distintas coas.
//    logger.info("CREATING OUTPUT WINDOW");
//
//    OUTPUT_WINDOW = new GLTextureWindow(this, OUTPUT_X, OUTPUT_Y, OUTPUT_W, OUTPUT_H);
//    OUTPUT_WINDOW.setTexture(OUTPUT_TEXTURE);
//    OUTPUT_WINDOW.init();
   
   
    // Loading required filters.
    logger.info("LOADING TEXTURE FILTERS");
    ns = new GLTextureFilter(this, "./data/shaders/nigth.xml");
    tex0 = new GLTexture(this, OUTPUT_W, OUTPUT_H, GLTexture.FLOAT);

   
    dream = new GLTextureFilter(this, "./data/shaders/dream.xml");
    nightShot = new GLTexture(this, OUTPUT_W, OUTPUT_H, GLTexture.FLOAT);
    ////////////////////////////////////////////////////
    // setup escene
    /////////////////////////////////////////////////////
    logger.info("CREATING ESCENE: ELASTIC GRID");
    serLiquido = new ElasticGrid( (PApplet) this, OUTPUT_W, OUTPUT_H);           
    ((ElasticGrid) serLiquido).setup();

   
    //////////////////////////////////////////////////////////
    logger.info("CREATING FACE LOADER");
    faces = new FacesLoader(this);
    //textureLoader.importImages("/Users/diex/Documents/WORK/PROGRAMACION/EclipseWS/SerLiquido/imagenes/Claudio paul");


    //////////////////////////////////////////////////////////////////////////
    // CAMARA
    //////////////////////////////////////////////////////////////////////////

    // cuando creo la camara le paso false
    // para que no la asocie con la matriz de camara
    // que usa el PAPlet que uso como gui.   
//    OUTPUT_CAMERA = new Camera(false, this);
    OUTPUT_CAMERA = new Camera(false, this);
    OUTPUT_CAMERA.centerScene();

  }

  ////////////////////////////////////////////////////
  // PROCESSING DRAW
  /////////////////////////////////////////////////////
 
  boolean canUpdateTextures = false;

  public void draw(){ 
   
   
    background(0);
    fill(0);


    OUTPUT_CAMERA.setPosition(new PVector(-OUTPUT_W/2, -OUTPUT_H/2));

    //////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////
    // OUTPUT
    //////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////

    if(canUpdateTextures) setFaces(name1, name2);
   
      // TODO mecanismo para que el update de la escena corra en un thread
     
      serLiquido.noiseShake(frameCount , .5f );
     
      if(random(1) < 0.1f){
        if(faces.hasFaces()) flipFace();
      }
     
      serLiquido.update();

      // transformaciones
      serLiquido.setScale(50f);   
      serLiquido.setPosition(new PVector(0,1,0));
       
      // le paso una camara
      serLiquido.cameraFeed(OUTPUT_CAMERA);

      // dibujo
      serLiquido.draw();



    // capturo la textura y la paso al viewport
       
    // dream.apply(serLiquido.getTexture(), tex1);
    ns.apply(serLiquido.getTexture() , nightShot );
    OUTPUT_TEXTURE.copy(nightShot);
   
    image(OUTPUT_TEXTURE,0,0);

    ////////////////////////////////////////////////////
    // DEBUG
    /////////////////////////////////////////////////////

  //  println(frameRate);
   


 
  }


  public void stop() {
    super.stop();
  }

 
  String name1;
  String name2;
 
  void oscEvent(OscMessage theOscMessage) {

    /* check if theOscMessage has the address pattern we are looking for. */
    logger.info("RECEIVED OSC EVENT: "+ theOscMessage.addrPattern() + " : " +theOscMessage.typetag());
   
    if(theOscMessage.checkAddrPattern("/visitorReady")){   
     
      name1 = theOscMessage.get(0).stringValue();
      name2 = theOscMessage.get(1).stringValue();
           
      canUpdateTextures = true;
    }
   

    }
 
  public void setFaces(String name1, String name2){
   
    logger.info("RESETING FACES POOL");
    faces.resetTextures();
    logger.info("LOADING FACES FOR: "+ name1);
    faces.importImages("./imagenes/" + name1);
    logger.info("LOADING FACES FOR: "+ name2);
    faces.importImages("./imagenes/" + name2);
   
    canUpdateTextures = false;
  }


  public void flipFace(){
    
     
       int id = (int) random(1 , faces.getSize() - 1);
     
       logger.info("FLIP FACE: ID ="+id+" faces.size="+ faces.getSize() );
      
       serLiquido.setTexture(faces.getImage(id));
  }

  ////////////////////////////////////////////////////
  // KEYBOARD MAPPING
  /////////////////////////////////////////////////////

 
  int id = 0;
 
  public void keyPressed(){
   
    if( key == 'r') {
     
    faces.resetTextures();
    faces.importImages("./imagenes/" + "Diego alberti");
    faces.importImages("./imagenes/" + "Madonna");
   
    }
   
   
   
     if( key == 'f') {
       wiiFeedback = ! wiiFeedback;
   
       wii.forcefeedback(wiiFeedback);
     }
   
     if( key == 's') serLiquido.shake(-1);
     if( key == 'b') serLiquido.flock(-1);
    
     if( key == ']'){
       id = (id + 1) % faces.getSize();
       serLiquido.setTexture(faces.getImage(id));
     }
     if( key == '['){
       id = abs( (id - 1) % faces.getSize());
       serLiquido.setTexture(faces.getImage(id));
     }
   
    

   
   
    //    scene[currentScene].keyPressed(key);

  //  if(key == 'r' || key == 'R') serLiquido.setup();

    if(key == 's' || key == 'S') {
      System.out.println("SAVING");
    }

    if(key == 'o' || key == 'O') {
      //      millis   = 0;
      System.out.println("MILLIS 0");
    }

    if(key == ' '){
      long d = System.nanoTime();
  //    saveFrame(d + "_.jpg");
      println("SAVED : " + d + "_.jpg" );
    }
  }
public static void main(String args[]) {
PApplet.main(new String[] {"app.SerLiquidoVisual"});}
}
TOP

Related Classes of app.SerLiquidoVisual

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.