Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-08-10 13:10:36 Plusieurs zones avec Keystone

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 137
Site web

Plusieurs zones avec Keystone



Salut smile

Je suis en train d'utiliser la bibliothèque Keystone (https://github.com/davidbouchard/keystone) pour du mapping.
On peut afficher une zone sans problème, mais lorsque j'essaie de multiplier le nombre de zones (au moins deux), je butte un peu… Où est l'erreur dans mon code ? J'ai l'impression de tendre vers le but, mais sans succès ! Merci beaucoup. :0)

import deadpixel.keystone.*;

int n = 2;
Keystone[] ks = new Keystone[n];
CornerPinSurface[] surface = new CornerPinSurface[n];

PGraphics[] offscreen = new PGraphics[n];
PVector [] surfaceMouse = new PVector[n];

void setup() {
  size(800, 600, P3D);
  for (int i = 0; i < n; i++) {
    ks[i] = new Keystone(this);
    offscreen[i] = createGraphics(400, 300, P3D);
    surface[i] = ks[i].createCornerPinSurface(400, 300, 20);
  }
}

void draw() {
  background(0);
  for (int i = 0; i < n; i++) {
    surfaceMouse[i] = surface[i].getTransformedMouse();
    surfaceMouse[i].x += i * 100; // test decalage
    offscreen[i].beginDraw();
    //offscreen[i].background(255, 127);
    offscreen[i].fill(i * 255, 255, 0, 127);
    offscreen[i].ellipse(surfaceMouse[i].x + i * 100, surfaceMouse[i].y, 75, 75);
    offscreen[i].endDraw();
    surface[i].render(offscreen[i]);
  }
  
}

void keyReleased() {
  switch(key) {
  case 'c':
    /*for (int i = 0; i < n; i++) {
      ks[i].toggleCalibration();
    }*/
    ks[0].toggleCalibration();
    break;

  case 'l':
    for (int i = 0; i < n; i++) {
      ks[i].load();
    }
    break;

  case 's':
    for (int i = 0; i < n; i++) {
      ks[i].save();
    }
    break;
  }
}

Dernière modification par jojolaglaise (2016-08-10 13:13:48)

Hors ligne

 

#2 2016-08-10 13:27:39 Re : Plusieurs zones avec Keystone

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 137
Site web

Re: Plusieurs zones avec Keystone



Oops c'est bon, je vais me débrouiller avec la méthode moveTo(), deux variables et le controle avec le clavier…

Hors ligne

 

#3 2016-08-10 15:54:40 Re : Plusieurs zones avec Keystone

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 137
Site web

Re: Plusieurs zones avec Keystone



Bon voilà, ça fonctionne… J'ai monopolisé un fil à moi tout seul: c'est ainsi.

import deadpixel.keystone.*;

int n = 2;
Keystone[] ks = new Keystone[n];
CornerPinSurface[] surface = new CornerPinSurface[n];

PGraphics[] offscreen = new PGraphics[n];
PVector [] surfaceMouse = new PVector[n];

int posx = 365;
int posy = 365 ;

void setup() {
  size(800, 600, P3D);
  for (int i = 0; i < n; i++) {
    ks[i] = new Keystone(this);
    offscreen[i] = createGraphics(400, 300, P3D);
    surface[i] = ks[i].createCornerPinSurface(400, 300, 20);
  }
  surface[1].moveTo(400, 400);
}

void draw() {
  background(0);
  for (int i = 0; i < n; i++) {
    surfaceMouse[i] = surface[i].getTransformedMouse();
    offscreen[i].beginDraw();
    offscreen[i].fill(i * 255, 255, 0, 127);
    offscreen[i].ellipse(surfaceMouse[i].x, surfaceMouse[i].y, 75, 75);
    offscreen[i].endDraw();
    surface[i].render(offscreen[i]);
  }
}

void keyReleased() {
  switch(key) {
  case 'c':
    for (int i = 0; i < n; i++) {
      ks[i].startCalibration();
    }
    break;
    
  case 'v':
    for (int i = 0; i < n; i++) {
      ks[i].stopCalibration();
    }
    break;

  case 'l':
    for (int i = 0; i < n; i++) {
      ks[i].load("keystone" + i + ".xml");
    }
    break;

  case 's':
    for (int i = 0; i < n; i++) {
      ks[i].save("keystone" + str(i) + ".xml");
    }
    break;
  }
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024