Salut
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
Oops c'est bon, je vais me débrouiller avec la méthode moveTo(), deux variables et le controle avec le clavier…
Hors ligne
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