Bonjour,
J'aimerai savoir s'il existe un moyen dans irrlicht d'utiliser une animation stockée dans un fichier A sur un modèle stocké dans un fichier B. Je ne sais pas trop si je suis clair...
En gros je voudrais savoir s'il y a un système similaire au modèles md5 qui possèdent un fichier md5Mesh et un fichier md5Animation. Il me semble, sauf erreur de ma part, que les modèles md5 ne sont pas gérés par irrlicht.
Si ça n'existe pas, je pense savoir comment gérer ça (un fichier xml qui décrit l'animation et utiliser un modèle ms3d, b3d ou x pour faire de l'animation par bones) mais bon... Si je peux éviter de réinventer la roue je ne suis pas contre ^^
Merci d'avance
Hors ligne
Je crois que c'est impossible avec les formats supportés par Irrlicht.
En ce qui concerne le support des modèles md5, je me souviens que Sio2 avait travaillé dessus y a longtemps. En cherchant, j'ai retrouvé le topic sur le forum officiel d'Irrlicht. Il y a aussi une démo sur son site, mais malheureusement, il n'a pas mis le code source en ligne
Dernière modification par Perceval (25-07-2008 11:09:43)
Hors ligne
Merci, je vais essayer de me débrouiller alors
Hors ligne
C'est tout à fait possible
Irrlicht te permet d'accèder aux bones des objets 3D, tu peux donc les manipuler manuellement pour animer ton personnage
Tu auras juste à récupérer les transformations depuis un fichier d'animation pour automatiser le tout
Hors ligne
A partir de IRRlicht 1.7.1 (mon essais à partir de cette version, on peut le faire)
Tu doit avoir 1 "skinnedmesh" pour ton modèle et un autre skinnedmesh pour ton animation (tu sauve seulement l'animation avec ton exporter)
J'ai testé avec le format .b3d et .x et ça fonctionne très bien.
1 - Tu charge tes fichier avec les commandes "getMesh()"
2 - Tu doit ensuite spécifier à IRRlicht que tu veut prendre l'animation dans un autre meshfile..
Exemple:
// Créer une node pour le modele ISceneNode* node = smgr->addEmptySceneNode(); // Precharge les "mesh/mailles" des modèles (un seul sera affiché dans la node) IAnimatedMesh* currentModel_mesh = smgr->getMesh("referenceMDL.x"); IAnimatedMesh* currentModel_idlemesh = smgr->getMesh("idleAnimation.x"); // Créer une node animée utilisant le mesh de référence IAnimatedMeshSceneNode* currentModel_node = smgr->addAnimatedMeshSceneNode(currentModel_mesh,node); // Assigne l'animation "idle" au modèle. ISkinnedMesh* skin = (ISkinnedMesh*)currentModel_mesh; ISkinnedMesh* skinidle = (ISkinnedMesh*)currentModel_idlemesh; skin->useAnimationFrom(skinidle);
J'ai précédemment chargé les 2 fichiers (currentModel.mesh et currentModel.idlemesh) qui sont des IAnimatedMesh convertis en ISkinnedMesh.
Hors ligne
Très utile comme fonctions, se lat permais de créer par exemple beaucoup de personnage et ne pas avoir besoins de refaire l'animation à chaque coup.
Hors ligne