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 :

Chargement des "skinned mesh" de Collada


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Chargement des "skinned mesh" de Collada
    Bonjour à tous,


    Je suis en train de charger les "skinned mesh" de collada.
    Pour la géométrie, je n'ai pas de soucis, par contre pour le squelette...

    Les os que j'ai chargé ne se placent pas correctement avec la géométrie.
    Aussi, j'aimerai savoir quoi faire des "INV_BIND_MATRIX". J'ai 3 os, donc 3 matrices dans la source "bind poses" du controller, et je ne sais pas du tout quoi faire avec.

    Pour le moment je positionne les os en utilisant exclusivement les balises "translate" et "rotate" des noeuds contenus dans la "visual scene node"


    Que faire avec ces matrice "bind poses" ? Pourquoi d'ailleurs ils nous mettent la matrice inversée ?


    Pouvez-vous m'aider ?

    Merci beaucoup


    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Nouveau membre du Club
    Profil pro
    moi
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : moi

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    J'ai actuellement le même problème. Je me retrouve avec des bones positionnés en dehors de mon mesh... avec des INV_BIND_MATRIX et une BIND_SHAPE_MATRIX dont je ne sais pas trop quoi faire.

    Si l'un d'entre vous à une idée, j'avoue que je suis plutôt preneur.

    Merci d'avance.
    Mister Troll.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Moi c'est bon j'ai réussit.


    INV_BIND_MATRIX contient les matrices des os lorsqu'on a fait le binding
    BIND_SHAPE_MATRIX contient les matrices actuelles des os


    Pour chaque vertex, tu récupères la position originale de la géométrie puis tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Vec3 oInfluenceVector(0, 0, 0);
    for(unsigned int i = 0; i < 4; i++)
    {
        Bone* oBone = m_Bones[i];
        Mat4 oMat = oBone->GetInvBindPose() * oBone->GetAbsoluteMatrix();
        oInfluenceVector += oMat.Transform(monVertex.position) * monVertex.weights[i];
    }
    Tu recalcules toutes les positions et les normales de tous les vertex de cette manière, tu reconstruit tes buffers, et ça devrait être bon. Enfin chez moi comme ça ça fonctionne très bien.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  4. #4
    Nouveau membre du Club
    Profil pro
    moi
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : moi

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Merci,
    Mais là-dedans, où intervient la BindShapeMatrix définie dans le fichier Collada?

    (Sinon pour l'instant en utilisant ce que tu m'as donné, je me retrouve avec des bones à des positions pour le moins... surprenante).

    Encore Merci,
    Mad troll

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    nan en fait je me suis trompé, la bind shape matrix n'est pas la position des os.

    Comme elle est toujours à l'identity dans mes fichiers, je ne m'en suis pas soucié, je sais pas trop à quoi elle sert.

    Commence par faire juste un cube avec 2-3 os ne possédant pas de rotation et des translation rondes pour t'y retrouver dans les données et pouvoir mieux débuguer, enfin c'est ce que j'ai fait.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  6. #6
    Nouveau membre du Club
    Profil pro
    moi
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : moi

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Merci de la réponse,...

    Il semble cependant que ce ne soit toujours pas ça pour moi. Ton absolute matrix, tu la compose comment?

    Je n'ai vraiment pas l'habitude de la 3D et je patauge franchement avec le format collada, je sais franchement pas comment obtenir correctement tout ça.

    Merci d'avance.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Pour l'absolute matrix je fais

    LocalMatrix * Parent.AbsoluteMatrix

    Ha oui, pour que ça fonctionne correctement, il faut que les positions soient des matrices (et non des balises <translation>, <rotation>, <scale>). Dans ColladaMax, il faut donc cocher "Bake Matrix" lors de l'export.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 30/11/2007, 11h58

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