Je travail actuelement sur un jeu avec un personnage à la 3ième personne et je ne voi pas comment faire pour qu'il utilise des armes, faut-il charger les armes et leurs animation apart ?
Comment puis-je faire pour que quand je déguaine un pistolet il l'attrape le tienne dans la main et le repose une foi terminé?
Faut t-il faire l'animation sans les armes dans les mains et faire suivre l'arme à la main en codant ?
merci pour vôtre aide
Hors ligne
Si j'étaie toi, je chargerait mes armes a part mais en les collants sur le mesh du perso, pour cela, tu a plusieurs solutions, la plus simple serait de savoir l'endroit exact ou ton arme doit se trouver au moment de l'anim, une autre serait d'associer une valeur spécial a une face de ton mesh qui définirait l'endroit ou se trouve ton gun, a toi d'être inventif.
Hors ligne
je suis assez d'accord avec Ilovechocolat il préférable de charger les armes a part, surtout si tu compte change d'arme de temps en temps.
Ensuite tu colle ton arme à un joint de ton perso. Il y a un truc pour ça que je vais te mettre si tu veut car je me rappel avoir un peut galérer pour le trouver.
L'idée est de récuperer un joint dans le perso et de lui attacher son arme, dans cette exemple on va récuperer un joint se trouvant justement dans une main
Avec ça ton perso peut secouer son bras tant qu'il le veut, son arme sera toujours coller a sa main
Bon courage.
Dernière modification par nabouill (29-01-2010 22:59:24)
Hors ligne
oui mais si le personnage est un personnage entier et que la main est collé au bras (logique) en gros le personnage est en une pièce comment veut tu que je crée un noeud sur sa main ?
Hors ligne
Je te le répète, pour faire ce que tu veut, il y a pleins de possibilité et je te conseil plus d'utiliser des setPosition sauvagement pour ton gun .
Ou si tu veut encore faire comme t'a dit nabouill, le modèle peut être une balle que tu rend invisible avec setVisibility.
Hors ligne
jonath313 :
pièce comment veut tu que je crée un nœud sur sa main ?
je pense que tu na pas bien lu mon post. (ou peut-être que c'est moi qui me suis mal expliqué).
Sur ton personnage, si il est animé, il à bien des joints. Donc l'idée est de créer un nœud de scene (ISceneNode *) corespondant a un joint. Dans mon exemple mon perso a un joint dans sa main qui s'appel FIRESPOT. donc je créer un noeud de scene appelé mainDuPerso
et je dit que ce noeud de scene corespond a mon joint appelé FIRESPOT. Ce joint est dans mon personnage c'est donc sur lui que je le récupère avec :
Ce qui donne donc :
Si tu ne sais pas comment s'appel les joints sur ton model je te conseil d'utiliser Fragmotion on exellent petit soft qui permet de faire plein de chose sur les models. (dont modifier les joints)
EDIT: Ha j'oubliais, je ne suis pas un expert en modelage, mais il me semble que certain format utilise autre chose que les joints, si c'est le cas, il est possible que mon truc ne marche pas avec ton model suivant son format, en tout cas ça marche avec les fichier .x et .b3d
Dernière modification par nabouill (04-02-2010 22:20:35)
Hors ligne
a d'accord bin j'anime avec des bones alors le nom est " bones37 " donc pour que le personnage prenne l'arme je dois tester si la position du bones est egal à celle de l'arme j'ai du mal a imaginer le truc ... en tout cas merci de m'aider
Hors ligne
jonath313 :
je dois tester si la position du bones est egal à celle de l'arme
non pas vraiment. Un fois que tu a créer ton noeud "mainDuPerso" (par exemple) et une arme "arme1" (par exemple)
tu fait un :
et "mainDuPerso" devient le parent de "arme1" donc il ni a plus rien a tester il y est coller en permanence, même si ton perso secoue le bras le plus vite du monde où que tu le téléporte a 1000 km de chez lui, son arme sera toujours coller a sa main.
Puis quand tu veut que ton perso lâche son arme:
et hop, l'arme n'est plus coller a la main du perso.
Hors ligne
super je ne connaissai pas tout cela vraiment merci beaucoup a toi je vais me dépécher de finir ma séquence d'animation pour tester tout cela !!!
Hors ligne
Waou, génial nabouill, je connaissait pas les joints, mais comment tu fait pour les nommer avec FragMotion ?
Hors ligne
salut, alors je vien de tester se que vous dite, donc j'ai crée une sorte de bras animé par de bones, un appelé debut et un appelé fin. J'ai utilisé blender pour modéliser( très rapidement mdr ), et j'ai aussi fais une sorte d'arme( une sorte de pistoler ). j'ai animé mon bras avec les bones en faisant 150 frames.
Déjà d'une, quand je met exporté en .x, sa s'exporte, mais dès que j'importe dans irrlicht, l'animation se joue, pourtant j'ai mit le ->setFrameLoop(1,150), ensuite quand je fais ->getXJointNode("fin") pour mettre l'arme a l'endroit du 2ème bones, irrlicht m'affiche dans la console qu'il ne peux pas trouver le "fin" en question, donc l'arme n'apparait pas-_-
Quelqu'un pourrait mieu m'expliquer svp
Hors ligne
Ilovechocolat :
je connaissait pas les joints, mais comment tu fait pour les nommer avec FragMotion ?
Fragmotion est en anglais, ils sont donc appelé des Bones. Pour en sélectionner un, dans la fenêtre tools (en bas a droite) tu choisie "select" dans la liste déroulante, puis sur "select bones" en dessous. Tu clic sur un point dans ton modèle et dans le fenêtre properties tu lui met le nom que tu veut.
narugohan :
mais dès que j'importe dans irrlicht, l'animation se joue, pourtant j'ai mit le ->setFrameLoop(1,150)
avec un ->setFrameLoop(1,150) irrlicht va joueur une animation de la frame 1 jusqu'à la 150 en boucle. Si tu veut pas qu'il joue l'animation fait un ->setFrameLoop(1,1) par exemple.
narugohan :
irrlicht m'affiche dans la console qu'il ne peux pas trouver le "fin" en question
Est tu sûr que ton bones s'appel "fin", sinon il est aussi important de respecter minuscule et majuscule pour qu'il le trouve.
Hors ligne
ouai a 100%, mais enfaite j'ai fais une faute, c'est pas que les frames se joue, c'est plutot qu'il se joue pas lol
Hors ligne
Alors je te dirait bien que j'ai de fort doute sur ton model.
Hors ligne
oui cela vien peut étre de l'animation comment l'a tu animé ?
Hors ligne
je les animer avec un bones, attendez je fais un screen :
EDIT :
Voilà mes vue blender au frame 1 et 50
SI sa peut aider, mon code source :
#include <cstdlib> #include <iostream> #include <irrlicht.h> using namespace std; int main(int argc, char *argv[]) { irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(640,480),32,false,false,false); irr::video::IVideoDriver* driver = device->getVideoDriver (); irr::scene::ISceneManager *smgr = device->getSceneManager (); device->getCursorControl ()-> setVisible (false); // curseur invisible //tu charge un model (man1.x ici) irr::scene::IAnimatedMeshSceneNode* perso = smgr->addAnimatedMeshSceneNode(smgr->getMesh("bras.x")); perso->setMaterialTexture( 0, driver->getTexture("feu.jpg")); perso->setMaterialFlag(irr::video::EMF_LIGHTING, false); perso->setFrameLoop(1, 150); // les frames a jouer //tu cree un noeud de scene qui correspond au joint dans la main du perso (ce joint s'appel FIRESPOT ici) irr::scene::ISceneNode* main = perso->getXJointNode("fin"); //tu charge une arme irr::scene::ISceneNode* arme = smgr->addAnimatedMeshSceneNode (smgr->getMesh("flingue.x")); arme->setMaterialTexture( 0, driver->getTexture("metal.png")); arme->setMaterialFlag(irr::video::EMF_LIGHTING, false); //et tu definie la main du perso en parent de ton arme arme->setParent(main); irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS(0,100.0f,.01f); // creation de la camera while (device->run()) // la boucle de rendu { driver->beginScene(true,true,irr::video::SColor(0,0,0,0)); smgr->drawAll (); driver->endScene (); } device->drop (); return 0; }
Dernière modification par narugohan (08-02-2010 15:46:34)
Hors ligne
ok alors niveau de la modélisation je ne connait pas trop blender mais a tu éssayer sous un autre format comme le .b3d ?
Sinon je sais que mon animation n'était pas exporté de 3dsmax si j'utiliser le modificateur physique après j'ai apri que le format .b3d utilise le modificateur "skin" alors tu a surement un souci a ce niveau renseigne toi sur le .x sous blender comment l'éxporte sinon prend le .b3d je vois pas d'autres solution car niveau code ce que tu as fait est très léger et devrait fonctionner
Hors ligne
ok par contre comme je fais pour convertir en .b3d avec blender ??!
Hors ligne
une foi j'aiéssayé blender pour exporter il faut que tu instale python c une vrai m**** j'y ai passé jusqu'à 3h du mat le mieu c 3ds max si tu veu étre à l'aise, encore dsl de faire de la pub, sinn faut que t'instale python
Hors ligne
python est déjà installé chez moi, quand je télécharger blender je télécharger python, et comme c'est la 20 ème fois au moins que je réinstalle blender( a force de changer de pc et de l'installer chez les potes ) python sa me prend 30 sec a installé lol, enfin bon après python on fait quoi ? j'aime bien 3dsMax, mais j'ai la flemme de le réinstallé, pour juste sa lol, c jsute des teste là
Hors ligne
télécharge Fragmotion avec tu peut convertir plein de sorte de fichier en plein de sorte de fichier très facilement.
Dernière modification par nabouill (09-02-2010 07:28:59)
Hors ligne
juste, là c'est pas vraiment l'utilisation des bones dans irrlicht. Regarde ça : http://www.youtube.com/watch?v=VwRtE04DCMw . Il a bones pour faire tourner la tête
Hors ligne
C'est exactemnt ce que je recherche a faire, mais moi je vous drais guider le bras pour viser. Si quelqu'un a la solution je suis preneur pour des esplications svp merci
Hors ligne
Je voudrais plus gérer dans ce style : http://www.youtube.com/watch?v=AFk_MdSAzns
Hors ligne