Annonce

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


#1 2015-10-15 14:29:12 structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

structuration d'un sketch



Je débute sur prosessing. Et déjà une question : si j'ai bien compris, seule la fonction draw() permet de redessiner ? Donc :
- est-ce qu'il y a une autre fonction pour rafraichir l'écran, par exemple quand on est dans une autre fonction qui doit afficher des formes, mais sans repasser par draw() ?
- ou bien sinon, est-ce que l'on peut aller d'un sketch à un autre ?

Dans mon programme, j'ai en effet un premier choix pour le style d'animation (des cercles ou bien des lignes ou autre chose), et ensuite je boucle sur cette animation (qui est interactive avec la souris). Quelle serait la structure à faire ? (sinon j'ai bien l'idée de tout faire dans draw(), mais usine à gaz si je ne peux pas programmer les types d'animations dans une fonction propre à chaque fois).

Merci de votre aide.

Julien

Hors ligne

 

#2 2015-10-15 19:09:36 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Ton draw() va rafraichir 60x par seconde.

Ce que tu peux faire tu créer tes deux fonctions à part.
Puis tu mets ta condition dans le draw().

void animation1(){
    tatata
}

void animation2(){
    tututu
}
void draw(){
     if(choix){
          animation1(); 
    }else animation2();
}

Expliquer du code n'est pas aisé, n'hésites pas à le poster.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#3 2015-10-16 09:52:08 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



Je suis effectivement parti sur une telle structure de code : mais si je reste dans animation1, rien n'est rafraichit à l'écran, tant que je ne repasse pas par Draw() (enfin il me semble). Donc on peut "écrire sur l'écran" dans animation1, mais comment voir ces changements à l'écran (sans sortir de animation1) ?


void animation1(){
   ICI on boucle sur les touches pressées pour changer l'image
      {
       on affiche des formes, en fonction de la position de la souris
      }
    // RIEN ne se passe à l'écran.
}

void animation2(){
   ICI on boucle sur les touches pressées pour changer l'image
      {
       on affiche d'AUTRES formes, en fonction de la position de la souris et d'autres actions
      }
    // RIEN ne se passe à l'écran.
}
void draw(){
     if(choix){
          animation1();
    }else animation2();
}



Et si pas possible, peut-on enchainer, depuis un sketch vers un autre ? ce qui permettrait de structurer le code). Sinon, faut-il construire le code pour toujours repasser par draw() pour mettre à jour l'écran ?

Hors ligne

 

#4 2015-10-16 17:52:45 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Oui, il faut que tu structure ton code pour passer chaque fois par le draw.
On le fait par soucis de lisibilité et par aspect pratique.

Rien ne t'empêche de mettre le résultat de ton choix dans une variable et de switcher dans le draw vers
l'animation choisie.

Ce que tu veux faire ne fait penser à l'exemple 9-04 du processing book.
Que tu peux installer facilement avec la nouvelle interface de Processing 3.

Je peux encore t'aider toute cette soirée.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#5 2015-10-16 18:31:40 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



Merci de ton aide.
Je me suis orienté effectivement vers la solution avec une variable contenant le type d'animation, puis dans chaque fonction draw(), keyPressed(), mousePressed(), je refais un aiguillage vers les bonnes règles d'animation en fonction du type d'animation.

Je suis cependant sous processing 2 car j'utilise une kinect, et la lib simpleOpenNI ne marche pas encore sous Pro 3.0.

Merci encore pour l'aide.

Hors ligne

 

#6 2015-10-16 19:00:25 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Je serais curieux de voir ton code car selon ce que tu dis il aurait moyen de le simplifier
en mettant tes évenements hors du draw().

Sinon j'ai trouvé ça pour Passer à P3 http://www.instructables.com/id/Easy-co … essing-30/
avec une kinect. Tu as à y gagner point de vue performance et pour le futur de ton projet.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#7 2015-10-19 15:15:25 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



Voici à titre d'info le code source. Pas de très haut niveau, mais je suis preneur de conseils sur la structuration, rapport à la question initiale.
Je mets tout le code, un peu long mais au moins il y a tout !

Hors ligne

 

#8 2015-10-19 16:56:31 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Ok, aujourd'hui j'ai pas le temps mais je regarde demain fin d'après-midi.


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#9 2015-10-20 18:02:09 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Ne possédans pas de kinect, je ne peux compiler ton code
mais voici quelques petites modifications à apporter après lecture:

Il vaudrait mieux dans tes fonctions ne plus intitialiser
tes PVector, fait le une fois pour toutes au début de ton programme
et utilise la fonction .set() pour leur assigner une valeur

On utilise le switch quand il y beaucoup d'élements à vérifier
au lieu de

 switch(e)
    {
    case 1: 
      angle=angle-(PI/90);
      break;
    case -1: 
      angle=angle+(PI/90);
      break;
    }

il suffit de mettre

if(e==1) angles -= PI/90;
else if(e==-1) angle += PI/90; 
//ou encore mieux toujours dans l'optique de faire le moins de test possible 
else angle += PI/90;

dans ta fonction action_corps()
il faudrait simplifier les conditions en mieux les hiérarchisant
par example au lieu de :

if ( (positionBrasGauche>4)&&(angleBrasGauche>25)&&(angleBrasGauche<70) )
    {
      rayon+=5;
      if (rayon>=700)
        rayon = 700 ;
    }
if ( (positionBrasGauche<-3)&&(angleBrasGauche>25)&&(angleBrasGauche<70))            
    {
      rayon-=5;
      if (rayon<10)
        rayon = 10 ;
    } 

//utilise :

if ((angleBrasGauche>25)&&(angleBrasGauche<70)){
	if(positionBrasGauche>4) rayon = min(rayon+5, 700);
	else if(positionBrasGauche<-3) rayon = max(rayon-5, 10);
}

et n'oublie pas d'utilser des else et else if, ainsi si la condition est bonne il saute toutes les autres conditons. Dans ton code il les vérifie toutes ce qui le ralentit.
Il y a un gros travail à faire à ce niveau

supprimer les 4 conditons ligne 390 et suivante, à la place ligne 387 et 388 :

posX = constrain((jointPosMainDroite.x ... etc), 0, width);

à partir de la ligne 422 : tu peux remplacer tous les x=x+ par x+=, etc

Voilà pour un débutant, ne n'est pas mal du tout


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#10 2015-10-20 18:49:45 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



Merci pour tous ces conseils, c'est sympa de prendre du temps pour cela. Je vais nettoyer tout ceci.
Si tout marche bien, je posterais un message sur cette question si on fait une démo un jour en live !

Hors ligne

 

#11 2015-10-21 15:29:30 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



Je reviens sur ta proposition de passer en processing 3.0 avec OpenKinect. Si cela semble fonctionner avec processing 3, pour faire de la détection de squelette, il faut la lib KinectPV2, qui ne marche elle qu'avec la kinect Microsoft V2... que je n'ai pas, et qui est plus du triple à l'achat...

Me trompe-je ?

Hors ligne

 

#12 2015-10-21 18:00:51 Re : structuration d'un sketch

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: structuration d'un sketch



Selon ce lien ça fonctionne avec toutes les kinects : http://www.instructables.com/id/Easy-co … -ejemplos/

Ca vaudrait le coup d'essayer


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#13 2015-10-21 18:44:58 Re : structuration d'un sketch

moduloo
membre
Date d'inscription: 2015-10-15
Messages: 13

Re: structuration d'un sketch



C'est bien ce lien que j'ai suivi (dans notre autre sujet), mais ensuite pour faire de la détection de squelette, il faut une autre lib, qui elle est uniquement sous microsoft kinect V2.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024