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 :

Animer mesh suivant bone


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut Animer mesh suivant bone
    Bonjour amis codeurs

    J'ai fait une sorte de visualisateur de model 3D d'un jeu. Donc ca charge le modele, ca le texture. Jusque la ca marche.
    Arrive le probleme de l'animation. C'est animé par squelette via quaternion. J'arrive à afficher le squelette du modele, et a le mouvoir indépendemment du mesh. Le probleme c'est que je ne vois pas comment faire bouger le model en suivant le squelette.

    Quel est l'algorithme, qui a partir d'un joint (je peux connaitre le quaternion absolue, et la position absolue du joint à un instant T), calcule la position des vertex associé a ce joint en ce meme instant T? En gros, comment je calcul la positions des vertex du bras en me basant sur le quaternion et position du joint associé?

    Je précise que j'ai deja chercher sur google, et j'ai du mal
    Merci
    Le forum c'est trop génial

  2. #2
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Bah, rotation des vertex autour du joint ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouvelle position = position du joint + (ancienne position du vertex - position du joint) * quaternion de la rotation

  3. #3
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Tout d'abord merci pour ta réponse. Mais ca a pas l'air de marché, t'es sur que c'est la bonne formule? Dans ce cas, il faudra que je revois mes variables.

    Donc pour être sur, c'est?:
    Nouvelle_PositionAbsolue_DuVertex = (Ancienne_PositionAbsolue_DuVertex - PositionAbsolue_Courant_DuJoint ) * Quaternion_DeRotation_DuJoint_De_SaPositionDeBase_Vers_SaPositionCourante ;

    Nouvelle_PositionAbsolue_DuVertex += PositionAbsolue_Courant_DuJoint ;
    Le forum c'est trop génial

  4. #4
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    de quel format de modèle s'agit-il?

    En principe, en animation squelettale, chaque vertice possède (en plus de sa position, des UVs et d'une couleur) un ensemble d'index et facteur pour un certain nombre de noeuds (bones), la position finale du vertice étant la somme ou la moyenne de ces valeurs.

    du genre:
    vec4 v_entree = vertexParam;
    vec4 v_final = v_entree * (somme_de(i, 0, n, m_bone[i] * f_bone[i]));

    Ca dépend du système à ce moment. Pour le MD5 de Doom3 et Quake4, la description doit se trouver sur le net.

  5. #5
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    c'est un format d'un RPG, et dont la doc n'existe pas sur le net. Mais j'ai etudié le format et je sais comment il est concu.
    Donc je suis presque a la fin, me reste qu'a faire en sorte que les vertex bougent en suivant le squelette. J'ai leur position initial du mesh, la position initial du squelette, a quel bone est associé un vertex et la position du squelette a un instant T. Je continue de chercher
    Le forum c'est trop génial

Discussions similaires

  1. [Ogre]Attacher un mesh à un bones
    Par Invité dans le forum C++
    Réponses: 6
    Dernier message: 10/11/2011, 15h46
  2. Réponses: 3
    Dernier message: 27/08/2008, 18h09
  3. animation mesh et moteur 3D
    Par concoyote dans le forum Contribuez
    Réponses: 2
    Dernier message: 21/08/2007, 15h06
  4. mesh animée en C#
    Par backfire dans le forum DirectX
    Réponses: 1
    Dernier message: 28/01/2005, 18h36

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