IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Aide pour comprendre un fichier BVH


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 16
    Points
    16
    Par défaut Aide pour comprendre un fichier BVH
    Salut à tous,

    je ne sais pas si je suis dans la bonne section donc désolé si je me trompe.

    J'aurais besoin d'un peu d'aide pour comprendre la structure d'un fichier BVH, j'ai lu pas mal de page sur le net mais je ne trouve pas exactement la réponse à ma question.

    Voici un extrait de fichier bvh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    HIERARCHY
    ROOT Hips
    {
    	OFFSET 0.00000 0.00000 0.00000
    	CHANNELS 6 Xposition Yposition Zposition Zrotation Yrotation Xrotation 
    	JOINT LHipJoint
    	{
    		OFFSET 0 0 0
    		CHANNELS 3 Zrotation Yrotation Xrotation
    		JOINT LeftUpLeg
    		{
    			OFFSET 1.57338 -1.94743 0.52196
    			CHANNELS 3 Zrotation Yrotation Xrotation
    			JOINT LeftLeg
    			{
    				OFFSET 2.60333 -7.15259 0.00000
    				CHANNELS 3 Zrotation Yrotation Xrotation
    				JOINT LeftFoot
    				{
    					OFFSET 2.77855 -7.63400 0.00000
    					CHANNELS 3 Zrotation Yrotation Xrotation
    					JOINT LeftToeBase
    					{
    						OFFSET 0.19847 -0.54529 2.28466
    						CHANNELS 3 Zrotation Yrotation Xrotation
    						End Site
    						{
    							OFFSET 0.00000 -0.00000 1.17993
    						}

    si j'ai bien compris, root c'est la racine donc le point de départ et chaque joint représente une articulation.

    Je ne comprends pas pourquoi pour chaque Joint on définit un offst + les channels de rotations.

    L'offset représente le décalage par rapport au joint parent, mais si le joint parent est bien placé, rien que l'offset suffirait à positionner le joint enfant alors pourquoi faire en plus une rotation (une rotation d'un point 3D je trouve pas ça logique).

    Je ne comprends pas non plus pourquoi il y a un end site avec encore un offset mais cette fois ci tout seul.

    Merci d'avance pour votre réponse.

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Si tes bones ne supportait pas les rotations, comment ferais-tu pour plier un bras ? Faire en sorte qu'un personnage se penche vers le sol ou encore tourner un poignet sur place ?
    Comme l'indique une doc du format, les CHANNELS indiquent les axes où des rotations sont utilisées dans l'animation.

    Ensuite, l'OFFSET est simplement le décalage par rapport au parent ; ça indique donc la longueur du bone parent. Par extension, le "End site" fait la même chose. C'est un terminateur qui indique la longueur du noeud père.
    N'oublie pas "HIERARCHY" ; ça signifie que toute transformation est relative au parent.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    Salut,

    merci pour ta réponse

    je vais essayer de résumé pour voir si j'ai bien compris :

    Les channels spécifient les axes autour desquels il y a une rotation.


    l'offset sert à déterminer la position initiale du squelette et par conséquent la longueur des bones. Après il ne sert plus à rien ?

    Chaque offset définit la longueur du bone parent ce qui explique qu'on terminer par un offset tout seul.


    Voilà j'espère avoir compris car je réalise mon rapport de TFE et dedans j'explique en détail le fonctionnement d'un BVH donc ça serait bête de dire des bêtises

    PS : ton lien ne marche pas malheureusement :s

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Ah, les liens de D/L sont peut-être temporaires alors ; je te laisse chercher BVH sur ce site. Tu peux aussi lire ça ; ceci dit, si t'as fait des recherches, tu es forcément tombé dessus...

    l'offset sert à déterminer la position initiale du squelette et par conséquent la longueur des bones. Après il ne sert plus à rien ?
    "Après" ? Après quoi ? Ce n'est pas la position initiale, c'est la translation à appliquer au bone enfant, donc il faut le garder en permanence.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    J'ai déjà cherché (notamment sur le dernier lien que tu me donnes) mais la pièce veut pas tombe

    Je le voyais ainsi moi :
    si on prend l'exemple du pied gauche du bvh que j'ai mis au dessus.

    Si on veut représenter le pied par une tige; à la position initiale, la tige aurait une extrémité en 2.60333 -7.15259 0.00000 et l'autre en 2.77855 -7.63400 0.00000

    donc dans le fond l'offset permettrait de fixer la taille des os ainsi que la position de base du squelette

    ensuite le squelette s'anime en fonction des diverses rotations mais du coup je vois plus trop à quoi sert l'offset puisque le squelette a déjà été défini :s

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    Ça m'énerve de pas comprendre après tout ce que j'ai lu.

    Je crois que je dois reprendre les bases.

    Chaque Joint représente une articulation.

    Si on relie deux joint alors on a un os.

    L'offset représente le décalage entre un Joint et son joint parent.

    Ensuite les rotations s'effectuent sur les os.


    Je suis encore a cote de la plaque ?

  7. #7
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par Dralex Voir le message
    Ensuite les rotations s'effectuent sur les os.
    Sur les articulations. T'arrives à tordre/plier/vriller ton tibia toi ?

    Pour la position initiale du squelette, dis-toi que c'est la frame 0 de la section MOTION.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    OOOOOOOOOOOk j'ai compris maintenant ...

    je pensais que la rotation se faisais sur les os dans le sens où si je plie le bras, j'ai mon avant bras qui tourne selon un axe.

    Maintenant si on imagine chaque joint (articulation) comme une boule c'est vrai que si la boule de mon coude tourne beh mon avant bras il suit

    Super , merci pour ton aide

  9. #9
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Pas de quoi, n'oublie pas le

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer un fichier word ou excel en php
    Par Taz_8626 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/05/2011, 09h57
  2. Aide pour comprendre 2 séries d'instructions
    Par raou123 dans le forum Assembleur
    Réponses: 1
    Dernier message: 11/04/2006, 22h43
  3. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22
  4. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo