Animations Multidisplay

En este ejemplo de programa HOST escribe texto en un sistema multidisplay formado por tres pantallas de 1280 X 768 pixeles cada una, colocadas en distribución horizontal una al lado de la otra. El texto se mueve lentamente de un lado a otro de la pantalla:

Fichero displays.xml

<xml>
<virtualDisplay width="3840" height="768"> 
 <display id="1" x="0" y="0" width="1280" height="768" />
 <display id="2" x="1280" y="0" width="1280" height="768" />
 <display id="3" x="2560" y="0" width="1280" height="768" />
</virtualDisplay>
</xml>

Codigo Host en Proccessing

public class Mariposa {
 public String id;
 public float x;
 public float y;
 public int ancho;
 public int alto;
 public float angle; //radianes
}

DisplaysHost displaysClient;

int w = 1280;
int h = 768;
float movx;
float movy;

Mariposa mariposa;

//API
TACAPI miAPI;

void setup() {
 
 // Keystone will only work with P3D or OPENGL renderers, 
 // since it relies on texture mapping to deform
 //fullScreen( P3D);
 size(150, 75, P3D); 
 miAPI = new TACAPI();
 
 frameRate(16);
 
 //virtual screens
 displaysClient = new DisplaysHost("host"); 
  
 mariposa = new Mariposa(); 
 mariposa.id = "ma_azul_";
 mariposa.x = random(displaysClient.w);
 mariposa.y = random(768);
 mariposa.ancho = 100;
 mariposa.alto = 100;
 mariposa.angle = radians(random(360)); 

 movx = random(-6,6);
 movy = random(-6,6);
}

void draw() {
 
 //Pintar dibujable
 displaysClient.beginDraw();

 displaysClient.dibujar(mariposa.id, mariposa.x, mariposa.y, mariposa.ancho, mariposa.alto, mariposa.angle, "center"); 
 movx = random(-6,6);
 movy = random(-6,6);
 mariposa.x = mariposa.x + movx;
 mariposa.y = mariposa.y + movy;

 
 displaysClient.endDraw();
}


void eventoTAC(TAC ta) {
}

void mensajeRecibido(OscMessage theOscMessage) {
}

void keyPressed() {
 switch(key) {
 case ESC: 
 displaysClient.disconnect();
 super.stop();
 break;
 } 
}

Retos de aprendizaje


Documentación

  • Para añadir elementos multimedia a los gestores pintor, ver apartado Gestión de assets.

 

  • dibujar

Este método permite dibujar el objeto de tipo animation solicitado. Recibe los siguientes parámetros:

String id: identificador de la animación. Es imprescindible que sea igual que el nombre que se le ha puesto a su carpeta en el cliente.

float x: posición de la esquina superior izquierda del objeto en el eje X (2D).

float y: posición de la esquina superior izquierda del objeto en el eje Y (2D).

int ancho: anchura del objeto a dibujar (0 por defecto).

int alto: altura del objeto a dibujar (0 por defecto).

float angle (OPCIONAL): ángulo de rotación en radianes con el que se dibujará el objeto.

Si los valores de ancho y alto se dejan a 0, el objeto se dibujará con el tamaño original.

  • reproduccion

Este método permite cambiar la velocidad de reproducción de la animación. Recibe los siguientes parámetros:

String id: identificador de la animación(el mismo que el utilizado en el método dibujar)

float rep: velocidad de la animación.

  • intervalo

Este método permite cambiar el intervalo de fotogramas a reproducir de la animación. Recibe los siguientes parámetros:

String id: identificador de la animación(el mismo que el utilizado en el método dibujar)

int l1: primer fotograma del intervalo.

int l2: último fotograma del intervalo.

  • secuencia

Este método reproduce una secuencia de fotogramas. Recibe los siguientes parámetros:

String id: identificador de la animación(el mismo que el utilizado en el método dibujar)

int l1: primer fotograma de la secuencia.

int l2: último fotograma de la secuencia.

  • mostrarFotograma

Este método permite mostrar un fotograma en concreto. Reproduce la secuencia hasta llegar al fotograma indicado y se queda parado. Recibe los siguientes parámetros:

String id: identificador de la animación (el mismo que el utilizado en el método dibujar)

int fot: fotograma que se desea mostrar.