Pages: 1
Bonjour,
Est-ce que quelqu'un sait si il est possible de décomposer le mesh animé entier en plusieurs parties ?
Enfait le problème avec le keyframe c'est qu'on ne peut pas combiner plusieurs animations , par exemple :
Marcher
Sortir arme
Marcher + arme sortit : consiste à choisir Marcher ou arme sortit.
Parce qu’au début je me disais ok no problème çà me donnera un peut de boulot en plus de créer toutes les animations possibles sauf que maintenant que j'en suis là je me rend compte que c'est franchement naze comme système déjà çà me prendrait trop longtemps et en plus le résultat ne sera pas très fluide. Exemple rien que pour marcher :
Anim marcher
Anim Marcher arme 1 sortit
Anim marcher baissé
Anim marcher et tirer avec arme 1
...
Voila et j'en oubli beaucoup .Maintenant on peut faire pareil pour sauter, courir, se baisser...
En gros, prévoir toutes les animations possible me parait vraiment fastidieux comme procédé.
Ce qui serait cool serait de séparer les animations du haut du personnage (bras + tête) de celle du bas (jambes).
Ma question: Peut-on réaliser cela ? Sinon comment faites-vous pour palier à ce problème ?
Hors ligne
Je dirais que tu créé un mesh animé pour chaque partie avec chacun leur propre squelette (et donc leur animation). Ensuite, tu prends une partie comme base dans irrlicht et tu mets les autres parties en enfant (tu as donc un node par partie). ensuite, tu n'as plus qu'à gérer les animations de tes différentes parties comme tu l'entends.
Hors ligne
Merci de tas réponse.
En gros tu veux dire qu'il faut que je crée un model 3d pour chaque membre de mon personnage ?
Peut-on pas diviser le mesh complet en deux partie haut du corps et bas du corps par le code sur irrlicht ?
Si oui quelles fonctions peuvent m'aider à réaliser cela ?
Hors ligne
Quand tu créés une animation, tu sauvegardes le déplacement relatif de TOUS les bones pour chaque frame de ton animation. Donc à partir du moment que tu appeleras setFrame() ou setFrameLoop(), tu mettras tous les bones dans l'état prévu à la frame courante. Tu ne peux pas faire d'animations imbriquées, c'est une animation par mesh. Par contre, tu peux récupérer les bones et les bouger manuellement mais c'est un sacré casse-tête.
Maintenant, pour ce qui est de la modélisation, tu peux créé un mesh avec tes 2 squelettes indépendants (un pour le haut et un pour le bas). Ensuite, tu découpes ton mesh en deux et tu exportes chacun des morceaux avec son squelette. Tu importes une partie dans Irrlicht que tu prendras pour "pilote" (parent de toutes les autres parties). Quand tu veux bouger ton personnage, tu bouges le node "pilote".
Par contre, le fait de faire ton mesh avec plusieurs membres séparés va certainement te poser des problèmes de jonctions des vertex entres les membres lors des animations. Dans un mesh les vertex sont reliés entre-eux, tandis que si tu as plusieurs parties tu vas avoir des doublons aux niveaux des séparation de membres (et qui ne seront pas forcément synchronisés).
Maintenant, il se peut que tu puisses modifier les données d'animation des bones. Par exemple, tu charges ton mesh avec un squelette et tu remplis l'animation de chaques bones avec les keyframes que tu veux à la volée.
Je m'explique:
- tu prends une base de 40 frames pour une animation;
- tu créés plusieurs animations différentes pour le bas et pour le haut (en respectant ces 40 frames);
- tu récupères les données nécessaires pour chaque frame de chaque animation et tu les stockes dans un fichier xml;
- dans irrlicht, tu charge ton mesh avec une animation de 40 frames;
- ensuite, tu remplaces l'animation initiale par celle que tu veux exécuter.
Tu joueras toujours les frames 0 à 39 mais tu changeras les keyframes des bones suivant tes besoins.
Franchement, je pense qu'il vaut mieux modéliser une plus grande animation avec les différentes possibilités (il suffit de copier-coller les keyframes pour les dupliquer). Ce sera infiniment plus simple et plus rapide. Pour ce que tu veux faire, il faudrait qu'irrlicht gère la cinématique inverse afin d'alléger le travail, mais ce n'est pas demain la veille que ça ce fera.^^
Hors ligne
ok je valide la solution par découpage du model 3d c'est ma dernière piste avant que j'abandonne irrlicht.
Je déconseil fortement l'animation par bones (skelettable) car çà fonctionne mais çà prend trop de ressource, je m’étais lancé là dessus il y a quelques temps et je me suis aperçut que fallait oublier les fonctions addchild, setparent ... donc j'ai vite laissé tomber l'idée.
Je vais tester avec la modélisation de découper le mesh en deux mais à mon avis çà marche pas.
Pourquoi ?
Et bien tout simplement parce-que les positions du personnage par rapport au repère 3dsmax ne sont pas prise en compte par irrlicht sur les animation frame.
En même temps irrlicht reste un outil gratuit donc bon c'est déjà pas mal on peut toujours faire des jeux qui ont 20 ans de retard. lol
Dernière modification par jonath313 (25-04-2013 20:39:34)
Hors ligne
modère t'est propos
http://irrlicht.sourceforge.net/forum/v … hp?t=40262
il y a des gens qui respecte ce moteur et qui on passer plusieurs années a l'étudier pour en tirer quelque chose de sympas
Hors ligne
Pour ton histoire de repère, je ne comprends pas pourquoi tu as ce problème car moi je n'en ai pas avec 3DS Max. Par contre, il faut faire un "reset XForm" sur tes meshs pour recadrer la boundingbox et remettre à jour position, rotation et scale. Tant que tu n'as pas fait le "reset XForm" position, rotation et scale du mesh est géré par la scène et donc non pris en compte lors de l'exportation.
L'animation squelettale est plus gourmande en CPU (mais il est possible de manipuler les bones) tandis que l'animation par keyframe est gourmande en espace disque, en RAM (voir VRAM en VBO) et en bande passante (CPU vers GPU). Donc je ne vois pas en quoi l'animation squelettale est à déconseiller.
En ce qui concerne Irrlicht, il est très bon. Certes moins bien qu'un moteur professionnel (normal, question de moyen), mais il est possible de faire des choses incroyable avec si l'on est à la hauteur. Regardes ce que fais Copland avec les shaders. Un moteur 3D c'est bien mais si tu touches en modélisation, tu peux faire de très bon rendus. Si tu prends des modèles de Quake et que tu codes ton jeu avec le CryEngine 3, ça ne te donnera pas un Crisys!
La qualité d'un jeu ne dépend pas que du moteur. Il faut un bon programmeur (en C++ et en shader) ainsi qu'un bon modélisateur pour avoir de bon graphismes. C'est facile de dire que le moteur est pourri pour cacher son manque de compétences. Il n'y a qu'à regarder "Call of duty 4 : modern warfare", certains on dit que le moteur était dépassé mais le jeu était très beau graphiquement et pas gourmand en plus. Pourquoi? Tout simplement parce qu'il y a eu un très gros travail au niveau modélisation et shaders.
Hors ligne
En même temps irrlicht reste un outil gratuit donc bon c'est déjà pas mal on peut toujours faire des jeux qui ont 20 ans de retard. lol
Alors là je ne suis pas d'accord du tout, oui Irrlicht à des lacunes au niveau performances mais tout de même! En optimisant bien son code et en utilisant les shaders correctement, les limites du moteur sont vite oubliées et encore je dis en optimisant, mais je peux te dire que bien souvent mes codes qui pondent des rendus graphiques sympa sont pas forcément optimisés....
Donc je te trouve un peu mauvaise langue sous seul prétexte que tu n'arrives pas à programmer ce que tu veux...
Poste un peu un fichier projet pour code::blocks avec ton modèle 3D et companie qu'on puisse jetter un oeil sur tout ça, peut-être il sera plus facile de t'aider correctement.
Hors ligne
Oh les mec faut pas y prendre comme çà je plaisantais ! Je respecte ce moteur c'est juste que sur le moment j'avais un peut les boules. Et oui je suis une brêle en programmation, j'essaye d'apprendre tout seul depuis quelques années mais bon moi mon truc c'est la modélisation 3d même si çà me fait aussi rager de temps en temps !
En fait j'essais de créer un petit jeux tranquillement pour commencer mais pour le moment j'en suis au stade de recommencer encore et encore car mes codes sont mauvais, soit çà tourne plus le pc suis plus soit je m'y prends mal. Enfin bref du blabla.
En tout cas merci pour vos réponses c'est cool et c'est grâce à çà que j'avance.
Pour poser mon code en fichier projet il faut que je le mette en téléchargement et je ne sais pas faire.
Dernière modification par jonath313 (27-04-2013 00:26:20)
Hors ligne
J'ai bien reçu ton mail, j'y ai répondu rapido mais,si tu as un skype, envoi moi l'adresse par mail je t'ajouterai se soir pour qu'on vois ton code ensemble.
Il y a effectivement un certains nombre d'erreurs de "débutants", et ça plante quasiment tout tes calculs, ça peut être une première source d'erreur...
Bref, t’inquiète on s'enflamme vite sur certaines critiques qui nous paraissent pas justifier, mais c'est aussi ce qui fait la force de la communauté d'irrlicht france, on a la force de persuasion pour motiver ceux qui débutent et si tu lâches pas le morceau, t’aura toujours quelqu'un ici qui sera prêt à t'aider et tu verras qu'après t'arrivera plus à te décoller d'irrlicht.
Pour ma part, ça fait maintenant 6 ans que je bosse sur se moteur et j'en suis toujours satisfait même si des fois certaines fonctionnalités manquante me font chier .
Bref, bonne journée et à ce soir pour la séance de débug
Hors ligne
Pages: 1