#0 

25-03-2013 23:50:27

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Bonjour,

Je suis entrain d'animer manuellement un personnage constitué d'un squelette (bones,skeleton) pour cela j'utilise :

Code:

setJointMode(irr::scene::EJUOR_CONTROL);

cependant et à ma grande surprise quand je fait :

Code:

PersoJambeOSDroite->addChild(Narmurejambe);

Le "addChild n'est pas prit en compte et mon armure n'est pas associé à la jambe droite de mon perso, alors que pourtant ce devrait être l'inverse.

Quand j’enlève setJointMode(irr::scene::EJUOR_CONTROL);
le AddChild est prit en compte , l'armure est associé au perso mais l'animation de mon squelette ne fonctionne plus.

Si quelqu'un comprend où est la cause de ce phénomène, merci de bien vouloir me répondre svp smile

Merci.

Hors ligne


#1 

27-03-2013 15:58:51

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Bon après de multiples test, je me suis rendu compte que les bones de mon perso restent immobiles alors que je leur applique des rotations sur le "joints".
Visiblement il n'y a rien qui permet de récupérer la position d'un "bone", la position est toujours (0,0,0) que je me trouve n'importe où sur la map.
Par conséquent j'ai beau créer un child ou mettre un parent de toute façon il considère que mon perso est toujours à la même position.

Pourtant quand je fais des setPositions() ou setRotation() cela fonctionne mais quand je fait les getPos et getRot rien à faire c'est zéros.

Visiblement çà ne fonctionne pas comme pour les mesh, il y a surement quelque chose qui m'échappe mais là j'ai épuisé mon stock d 'inventivité pour bidouillé une solution.

Si quelqu'un connait l'origine de ce problème, merci de me contacter sad

Hors ligne


#2 

27-03-2013 18:16:26

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut Jonath,
As-tu creusé du côté du forum officiel car j’avoue n'avoir jamais trifouillé le système d'animation par Bones sous Irrlicht...Et je ne sais pas si beaucoup d'entre nous ici y ont touché d'ailleurs...
Dans tout les cas, postes nous tes résultats afin qu'on sache ce qu'il en est car cela pourrait être utile à d'autre !
Bon courage wink


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

27-03-2013 19:37:04

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Salut !

Hé bien j'ai passé mon après midi à faire des recherches et surtout analyser ce qu'il se passe.

Enfait on ne peut pas faire un parent entre un joint et un mesh très simplement car irrlicht dessine la position des bones au repos et quand on anime il recrée une deuxième structure de bones qui elle suit les mouvement. On se retrouve donc avec 2 possibilité (visuelle). Il faudrait que j'arrive à récupérer la position réelle de mes joints par rapport à la scéne.

Il y a très peux de gens qui font de l'animation manuelle. Et moi qui étais comptant d'avoir fais marcher ma Lara Croft avec que des fonctions mathématiques.

Pas d'inquiétude je posterais les réponses pour tout les problèmes que j'aurais résolu .

Hors ligne


#4 

28-03-2013 17:36:05

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

tu pourrais crée un scene node qui inclue 2 scene node
l'un qui est afficher, l'autre qui calcule les animations, puis dans OnEvent tu recopie les positions des nodes connus du node 1 au node 2, les joins parent node 2 suivront

node1 = addSceneNode....
node1->grab();
node1->remove(); // ou smgr->removeSceneNode..
de sorte que ce soit le scene ton interface qui les gèrent et non le smgr

je te l'accord c'est bourin, mais si le squelette est géré en interne a par modifier les sources tu n'a pas beaucoup de choix
même si ça me semble bisard qu'il n'y est pas acces

Hors ligne


#5 

09-04-2013 20:37:51

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Le plus simple reste d'animer par frame car vue le nombre de calculs mon pc ne suit plus de toute façon, donc autant abandonner l'idée, après je pense que le plus simple est de gérer çà par une lib physique. Merci pour votre aide smile

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
51 invités en ligne
Aucun membre connecté
RSS Feed