#1 

25-03-2013 22:50:27

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

Bonjour,

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

setJointMode(irr::scene::EJUOR_CONTROL);

cependant et à ma grande surprise quand je fait :
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


#2 

27-03-2013 14:58:51

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

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


#3 

27-03-2013 17:16:26

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.156.201
Courriel  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


#4 

27-03-2013 18:37:04

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

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


#5 

28-03-2013 16:36:05

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 92.146.242.168
Courriel  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


#6 

09-04-2013 18:37:51

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

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é
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
173 invités en ligne
membre en ligne: -
RSS Feed