#1 

10-02-2010 22:47:22

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

Voila enfait j'utilise setFrameloop qui joue les frames de mon animation en boucle mais le soucis c'est que je voudrais juste jouer l'animation une seule foi et qu'elle se réinitialise a la première frame. Malheureusement setEndFrame n'existe pas comment puis-je faire ?


Hors ligne


#2 

10-02-2010 23:36:54

nabouill
Membres
Avatar de nabouill
Date d'inscription:
Messages: 242
IP: 77.198.96.214
Courriel

pour ça tu as un truc pour recupérer la frame en cour, du coup imaginons que tu as une animation de 100 frames. Si j'ai bien compris, tu veut jouer toutes les frames et quand tu arrive a la 100em l'animation revient a la 1er et y reste.
L'idée:

Code c++ :


//tu lance l'animation a un personnage
perso->setFrameLoop(1,100);

while(device->run())
{
    ...........
        //on creer une variable pour récupérer la frame actuel
        int frameEnCour = perso->getFrameNr();

        //on verifie si on est arrivé a la frame a la quel on souhaiterait que ça s'arrete
        if(frameTemp == 100)
        {    
              //on bloque l'animation ou on veut
              perso->setFrameLoop(1,1);
        }
  .............
}


ps: il y a parfois des petits bug du genre il ne récupèrera jamais la frame 100, il s'arretera a 99 !! je n'ai jamais pus savoir si ça venait des models ou de Irrlicht, mais je préfère le souligné car je me rappel avoir perdu pas mal de temps sur ce truc là.

Bon courage.

Hors ligne


#3 

10-02-2010 23:42:35

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

merci beaucoup !

tu me simplifie la vie j'étais entrein de chronométré mon animation et d'essayer de faire passer setAnimation à 0 speed au bout d'un certain temps mais bon c'est vraiment idiot mon idée !


Hors ligne


#4 

10-02-2010 23:59:11

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

if(frameTemp == 100)

Pourquoi frameTemp si on déclare FrameEnCour ?

Cela ne fonctionne pas :

//on creer une variable pour récupérer la frame actuel
int frameEnCour = Nbras->getFrameNr();


////////////////////////////////////////////////////////////////////////////////
////////////////////////////// BOUCLE DE RENDU 3D///////////////////////////////
////////////////////////////////////////////////////////////////////////////////

while (device->run())
{
driver->beginScene(true,true,irr::video::SColor(0,200,200,200));

//on verifie si on est arrivé a la frame a la quel on souhaiterait que ça s'arrete
if(frameEnCour == 20)
{
//on bloque l'animation ou on veut
Nbras->setFrameLoop(1,1);
}
}

Le bras joue son animation sans s'arréter
sceneManager->drawAll ();
// gui->drawAll();

driver->endScene ();
}
device->drop ();

return 0;

}


Hors ligne


#5 

11-02-2010 00:12:03

nabouill
Membres
Avatar de nabouill
Date d'inscription:
Messages: 242
IP: 77.198.96.214
Courriel

STP utilise les balise de code, ce serait plus lisible, sinon :

jonath313 Ecris:

Pourquoi frameTemp si on déclare FrameEnCour ?

Désolé, c'est mon copier coller de mes bout codes, frameTemp était en faite frameEnCour.

Aussi, je ne comprend pas bien ton code, moi je voyait plutot un truc du genre:

Code c++ :

//tu lance l'animation a un personnage
perso->setFrameLoop(1,100);

while(device->run())
{
        //on creer une variable pour récupérer la frame actuel
        int frameEnCour = perso->getFrameNr();

        //on verifie si on est arrivé a la frame a la quel on souhaiterait que ça s'arrete
        if(frameEnCour == 100)
        {    
              //on bloque l'animation ou on veut
              perso->setFrameLoop(1,1);
        }

        driver->beginScene(true,true,irr::video::SColor(0,200,200,200));
        sceneManager->drawAll ();
        driver->endScene ();
}

device->drop ();


Il faut récupérer la frame dans ta boucle, quand tu fait "int frameEnCour = perso->getFrameNr();" frameEnCour est égale a ta frame a l'instant même ou elle se deroule.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
165 invités en ligne
membre en ligne: -
RSS Feed