Bonjour, Je suis nouveau sur ce forum et débutant sur processing, je bricole,
Je travail surtout avec isadora et je cherche a jouer des sketch processing dans isadora,
pour cela je pense utiliser syphon.
j'ai trouvé une librairie syphon avec un exemple (un cube 4D qui tourne, et je peux effectivement visualiser mon sketch dans isadora,
mais je veux répéter ces codes sur les sktech qui m'interressent et la ...ça pas marche!!!,
Je vois bien que processing transmet a siphon, met sur le siphon c'est écran noir...
Je met une copie de mon sketch, (enfin, un que j'ai recuperé et que je modifie et ou j'ai recopié des lignes depuis le sketch d'exemple de syphon)
si quelqu'un peux m'aider...
Merci
J
import codeanticode.syphon.*;
PGraphics canvas;
SyphonServer syphon;
/*
Alba G. Corral
Marzo 2009, Barcelona
Motion
*/
float angle = 0.0; // Current angle
float speed = 0.01; // Speed of motion
float radius = 130.0; // Range of motion
float sx ;
float sy ;
float hh = 0;
color col;
void setup() {
size(925, 475, P3D);
canvas = createGraphics(925, 475, P3D);
syphon = new SyphonServer(this);
noStroke();
smooth();
inicia( random(5.0),random(2.0));
}
void draw() {
// EVENTOS
if(keyPressed){
if(key == '1') {
inicia(5.0,random(1));
}
if(key == '2') {
background(255);
inicia(random(1),2);
}
}
angle += speed; // Update the
println("angle:;"+angle);
float sinval = sin(angle/sy);
float cosval = cos(angle);
// Set the position of the small circle based on new
// values from sine and cosine
float x = width/2 + (cosval * radius);
float y = height/2 + (sinval * radius);
fill(255);
// Set the position of the large circles based on the
// new position of the small circle
float x2 = x + cos(angle * sx) * radius ;
float y2 = y + sin(angle * sy) * radius ;
ellipse(x2, y2, 1, 1); // Draw larger circle
//line
if(hh<255){
hh+=1;
}
else{
hh=0;
}
col = color(255,0,100+hh,15);
stroke(0,random(10,40));
line(x,y,x2,y2);
image(canvas, 0, 0);
syphon.sendImage(canvas);
}
void inicia(float _sx, float _sy ){
background(255);
sy=_sx;
sx = _sy;
println("inicia : sx: "+sx +" sy:" + sy);
}
Hors ligne
Hors ligne
Bonjour Djeizzy,
Difficile de reproduire ton problème n'ayant ni mac ni isadora!
Est ce que ce sketch fonctionne dans processing? (sans syphon)
Est ce que tu peux essayer d'autres sketchs pour comparer ce qui fait qu'un sketch fonctionne ou ne fonctionne pas avec syphon / isadora (peut-être du aux modes P3D ou OPENGL, par exemple, ou au frameRate)
En regardant le sketch, je remarque qu'il y a quelque chose qui ne colle pas, et c'est probablement pour ça que tu ne reçois qu'une image noire dans syphon. Toutes les fonctions graphique doivent se faire sur le buffer (canvas) avant d'être affichées à l'écran et envoyées vers syphon. Il faut donc que dans la boucle draw, tu indiques que les fonctions graphiques se réalisent dans le buffer. Essaye avec cette version modifiée de draw() :
void draw() { canvas.beginDraw(); // EVENTOS if(keyPressed){ if(key == '1') { inicia(5.0,random(1)); } if(key == '2') { canvas.background(255); inicia(random(1),2); } } angle += speed; // Update the println("angle:;"+angle); float sinval = sin(angle/sy); float cosval = cos(angle); // Set the position of the small circle based on new // values from sine and cosine float x = width/2 + (cosval * radius); float y = height/2 + (sinval * radius); canvas.fill(255); // Set the position of the large circles based on the // new position of the small circle float x2 = x + cos(angle * sx) * radius ; float y2 = y + sin(angle * sy) * radius ; canvas.ellipse(x2, y2, 1, 1); // Draw larger circle //line if(hh<255){ hh+=1; } else{ hh=0; } col = color(255,0,100+hh,15); canvas.stroke(0,random(10,40)); canvas.line(x,y,x2,y2); canvas.endDraw(); image(canvas, 0, 0); syphon.sendImage(canvas); }
Dans inicia(), il faut aussi indiquer canvas.background(255);
Hors ligne
Merci Emoc,
J'ai tester ta modif, et je concerve un fond noir sur siphon, et n'obtient qu'une partie du sketch...
D plus, en indiquant canvas.background(255); dans initia, mon sketch prend un fond bleu...
Ne connais tu pas une autre façon d'utiliser syphon?
J'utilise ce sketch trouvé sur le net avec la lib siphon.jar et jsyphon.jar
import codeanticode.syphon.*;
PGraphics canvas;
SyphonServer syphon;
void setup() {
size(400,400, P3D);
canvas = createGraphics(400, 400, P3D);
syphon = new SyphonServer(this);
}
void draw() {
canvas.beginDraw();
canvas.background(127);
canvas.lights();
canvas.translate(width/2, height/2);
canvas.rotateX(frameCount * 0.01);
canvas.rotateY(frameCount * 0.01);
canvas.box(150);
canvas.endDraw();
image(canvas, 0, 0);
syphon.sendImage(canvas);
}
je cherche a pouvoir modifier d'autres sketch pour pouvoir les envoyer sur syphon, qui me semble être le meilleur moyen pour récupérer le flux video dans isadora...
y en a d'autre?
merci
J
Hors ligne
Et ce n'est pas un problème de définition, le premier programme crée une image de 925 sur 475, ce ne serait pas pour ça qu'il t'en manque un bout ?
djeizzy a écrit:
Ne connais tu pas une autre façon d'utiliser syphon?
Je n'ai jamais utilisé syphon, ça ne fonctionne que sur mac
djeizzy a écrit:
je cherche a pouvoir modifier d'autres sketch pour pouvoir les envoyer sur syphon, qui me semble être le meilleur moyen pour récupérer le flux video dans isadora...
y en a d'autre?
D'autres ? Vu le code que tu montres en exemple, on peut adapter tout programme processing à une diffusion via syphon, il suffit de reprendre la méthode de création de buffer + envoi du buffer à syphon, avec peut-être un bémol pour les sketchs en openGL
Si tu cherches des exemples processing tout faits, regarde sur http://openprocessing.org, il y en a des milliers, diffusés sous des licences qui permettent leur réutilisation
Hors ligne
Merci emoc,
Je continu mes investigations syphonesque...
J
Hors ligne