CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

mouvement d'un perso en temps réel

sebov
sebov
Niveau 2
14 juin 2008 à 22:48:36

bonjour,
je souhaiterai savoir comment faire pour pouvoir modifier de manière dynamique les mouvements d'un personnage dans un jeu.
Je m'explique:
je pars d'une anim bvh (squelette qui coure) créée par motion capture, que j'associe dans mon logiciel de modélisation 3d à un personnage.
Puis j'exporte le mesh animé au format md5. J'ai donc en animation mon mesh qui coure tout droit.
Le problème est que dans mon jeu, si je veux faire tourner mon perso à droite par exemple, cela n'est pas très réaliste de garder la même animation.
J'aimerai donc savoir, possédant une anim bvh d'un squelette qui tourne vers la droite (et donc une anim md5 d'un mesh qui tourne vers la droite), comment passer de la 1ère anim à la 2nde anim sans encombre et de manière fluide.
Tout ceci pour pouvoir contrôler pleinement en temps réel les mouvements de mon personnage.

Je débute dans la 3d, il y a donc peut-être une manière plus simple et conventionnelle de faire.

Merci d'avance pour vos réponses! je suis dans un beau bourbier.

Connaitre
Connaitre
Niveau 5
14 juin 2008 à 22:55:12

La manière la plus simple c'est de faire une translation linéaire entre les 2 animations.

sebov
sebov
Niveau 2
14 juin 2008 à 23:13:15

merci pour cette réponse.
Je ne suis pas sûr de comprendre ce que tu veux dire.

sebov
sebov
Niveau 2
14 juin 2008 à 23:27:01

une translation linéaire n'occasionnerai pas une saccade du mouvement? je crois que je n'ai toujours pas pigé ^^

Connaitre
Connaitre
Niveau 5
14 juin 2008 à 23:35:24

Et bien si tu veux passer d'une animation a une autre d'une façon continue, tu fais une interpolation linéaire entre les 2 positions.

http://fr.wikipedia.org/wiki/Interpolation_lin%C3%A9aire

sebov
sebov
Niveau 2
14 juin 2008 à 23:40:13

je dois faire une interpolation de chaque sommet? à la main?
merci !

Connaitre
Connaitre
Niveau 5
15 juin 2008 à 00:15:41

Je ne connais pas le format md5.
Ça dépend de comment tu gères l'animation, si c'est en Keyframe oui tu dois le faire pour chaque sommet, mais si c'est du Skeletal animation, je pense que manipuler les bones est plus simple dans ce cas.

Mais je ne suis pas expert dans la matière... :)

sebov
sebov
Niveau 2
15 juin 2008 à 00:28:37

md5 c'est de l'animation squelettale oui

godrik
godrik
Niveau 30
15 juin 2008 à 11:28:49

(note, je ne fais pas de 3D)

si j'ai bien compris, tu veux a partir de deux animations: "gars qui coure" et "gars qui tourne vers la droite" faire une animation "gars qui coure vers la droite". C'est bien ca ?

Remarque que tant que l'angle avec lequel il tourne est faible, alors simplement changer l'axe "avant/arriere" du personnage doit suffir.

LGV
LGV
Niveau 28
15 juin 2008 à 15:42:17

un simple blend ne donnera pas une realisation satisfaisante; la methode "old-style" consiste a creer autant d'animations que necessaire pour couvrir l'ensemble des possibilites de mouvement que l'on souhaite, et de faire des blends TRES courts (de l'ordre de qq dizaines de ms) pour couvrir les transitions trop "abruptes".

la methode "new-style" est bcp plus complexe, et se rapproche de ce que propose NaturalMotion, et fait intervenir des concepts tels que: motion extraction, layered animation graphs, additive blending, non uniform blends, time warping, IK correction factor, path following, motion reconstruction, etc. C'est environ 1000homme/jour de boulot pour partir de rien et commencer a arriver a qqch de correct.
Le gros probleme est le conflit entre qualite des animations et controllabilite du personnage.

sebov
sebov
Niveau 2
15 juin 2008 à 19:37:48

oui LGV, c'est exactement la méthode old-style que je voudrais utiliser. Sais tu quel format ce prête le mieux à ce genre de méthode? BVH, Md5, autre ?

Une autre petite question, un blend c'est une interpolation ?

Si vous avez des liens vers des tutos ou autres je suis preneur!! merci pour vos réponses, ça m'aide beaucoup.

sebov
sebov
Niveau 2
15 juin 2008 à 19:40:45

Pardon pour le double poste mais je ne sais pas comment éditer mon message. Godrik c'est ce que je veux faire oui, partir d'animations déjà faites et les assembler à ma guise, en temps réel, pour avoir un personnage controlable et si possible avec des mouvements pendant les transitions entre animations qui restent réaliste.

saleGauss
saleGauss
Niveau 9
16 juin 2008 à 14:43:56

Je ne pense pas dire de bêtises en disant que tu peux gérer tes anims squelétales directement dans ton code.
Tu importes ton mesh qui contient ses bones, et tu vas directement dans ton code travailler sur les "articulations".

Je n'ai aucune idée de comment ça se passe concrètement (je n'en suis pas là), mais si tu veux quelque chose qui se contrôle facilement, et si tu accepte d'avoir des anims de qualité inférieure à de la capture vidéo, je pense que ça peut marcher.

L'avantage principal de cette méthode est que tu génère "à la volée" tes anims, en fonction de tests de collision, de la manière donc le perso à pris un coup d'épée sur la trombine, en fonction de la géométrie du col, etc...

Mais bon je ne pense pas que cette méthode soit triviale.

Qu'en pensez vous ?

Le_KenSai
Le_KenSai
Niveau 1
16 juin 2008 à 15:25:26

Normalement tu as une sorte de mixeur sur ton logiciel 3D afin de mixé plusieurs anim' entre elles ! Du coup tu met ton animation course puis ton animation "tourner" et tu précise comment tu veux qu'elles intéragisse et c'est bon !
Tu as quel logiciel 3D ? Maya ? 3ds max ? OU un autre ?

sebov
sebov
Niveau 2
16 juin 2008 à 19:17:28

Je travaille sur blender.
En fait je dispose d'une anim d'un perso qui coure tout droit et une autre anim du même perso qui coure (de la même manière) puis qui tourne à droite.

(Je souhaite donc que quand j'appuie sur la flèche de droite faire appelle à la deuxième animation.)
De manière générale, je dispose de plusieurs animations que j'aimerais déclencher par une touche, ceci pour controler mon personnage en temps réel.
L'avantage que présenterait cette méthode est qu'il n'y aurait qu'à faire appelle aux bonnes séquences, mais c'est peut-être illusoire.
Merci à vous qui me répondez, ça m'aide beaucoup!
A tout'

LGV
LGV
Niveau 28
16 juin 2008 à 20:17:06

vu que tu souhaites rendre la chose "interactive", tu vas devoir programmer la logique de l'animation: on appelle ca du "skinning". "Skinner" une mesh, c'est appliquer une serie de transformation matricielles definies par le squelette, et ca transforme les vertices selon les positions des "bones", leur zone d'influence, leur contributions, etc.
Dans ton programme, il te faut donc skinner ta mesh pour plusieurs animations, et combiner les resultats obtenus (interpolation de formes diverses..)

sebov
sebov
Niveau 2
16 juin 2008 à 20:27:43

est-ce que ça peut marcher si à un fichier .md5mesh j'associe plusieurs fichiers .md5anim aux moments voulus ?

LGV
LGV
Niveau 28
16 juin 2008 à 23:30:07

le format de "stockage" des animations ou des modeles ne change absolument rien au probleme, ni a la logique.

sebov
sebov
Niveau 2
16 juin 2008 à 23:37:40

pour répondre à ton message d'avant LGV, est-ce que ca veut dire que je vais devoir toucher aux quaternions même si j'ai déjà toutes mes séquences ?

Sinon si t'as des tuyau pour le "skinning" je suis preneur.

Merci encore pour ces réponses

pilo1488
pilo1488
Niveau 10
17 juin 2008 à 09:25:57

LVG : interpolé directement les mesh skinnés? c'est pas plus efficace de faire le skinning sur un squelette correspondant au mélange de plusieurs animation? Outre le fait que je ne vois pas comment une interolation linéaire entre les point du meme mesh skinné dans 2 position différentes pourrait donner autre chose qu'un modèle distordu, tu ne peux alors plus faire le skinning sur le GPU?

Pour les animations, oui tu devra travailler avec les quaternions :)
Blender 2 animation revient a faire une interpolation (linéaire, ou non), entre elles.

Par exemple tu as 2 animations (une courrir cyclique, et une tournée, a prio non cyclique), et que tu veux que ton perso cours tourne, et continue de courrir dans la nouvelle direction.
Et bien quand tu va vouloir tourner, tu va interpoler entre les keyframe des 2 animations (tout comme certrainement tu interpole déja entre les keyframe successif d'une meme animation pour avoir des poses entre 2 keyframes?).

Le problème ensuite c'est de savoir quand et comment interpolé, la c'est pas simple, et c'est plus artistique que technique finalement.

Regarde la lib CAL3D (qui fait ca assez bien, qui utilise son propore système de skeleton/animation/mesh).

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment