Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 184 205

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Question Math 3D étape 2

Question Math 3D étape 2#1679

2Contributeur(s)
thellierElwood
3 Modérateur(s)
K-LElwoodcorto
thellier thelliericon_post
Hello

Bon les skins et les bones marchent désormais dans Microbe3D
http://thellier.free.fr/Microbe3D-bones.html

Je passe à l'étape suivante : récupérer des fichiers .bvh de motion-capture pour les appliquer à mes personnages

C'est en fait très similaire à ce que j'ai déjà implémenté dans Microbe3D : une liste de rotations à appliquer aux différents bones (=articulations=axes) pour chaque image + la translation du personnage entier (genre les jambes tournent en avant puis arrière et le perso avance)

Voilà c'est implémenté :-) mais on dirait une marche de zombie
Mais y a un gros problème : le personnage au départ de la motion-capture n'est pas (exactement) dans la même position que mon propre perso
Exemple de problème:
L'épaule est a une position E.x E.y Ez
Et le coude sera à la position A.x A.y A.z au départ de la motion-capture
Et le coude sera à la position B.x B.y B.z dans mon personnage

Comment créer le plus simplement possible une matrice de changement de repére de EA vers EB ???

GRANDS MERCIS

Message édité par : Elwood / 22-10-2013 16:55
Elwood Elwoodicon_post
la page web ci-dessus ne s'ouvre pas.
--
Philippe Ferrucci
Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !
thellier thelliericon_post
http://thellier.free.fr/Microbe3D-bones.html

Oupps y manquait un t à http
Message édité par : thellier / 22-10-2013 15:20
thellier thelliericon_post
Je m'auto réponds car je pense avoir trouvé une réponse en utilisant les sources de gluLookAt qui fais regarder la caméra dans une direction
A tester imiminement..

A le point xyz où est la caméra
B le point xyz vers où regarde la caméra (cible)
UP le vecteur oriention de la caméra (portrait,paysage,oblique,etc..)
résultat: M la matrice de rotation

Donc appliqué à mon problème:
A = vecteur E (position épaule)
B = (vecteur B - vecteur A) (cad difference de position entre mon coude de mon objet et le coude défini dans le fichier de motion capture )
résultat: M la matrice à appliquer pour mettre le coude dans la même position que dans le fichier de motion capture


/*=================================================================*/
void DogluLookAtM(Vertex3D *A,Vertex3D *B,Vertex3D *UP,float *M)
{
Vertex3D X,Y,Z;

/* Make rotation matrix */

/* Z vector */
Z.x = A->x - B->x;
Z.y = A->y - B->y;
Z.z = A->z - B->z;
Normalize(&Z);

/* Y vector */
Y.x = UP->x;
Y.y = UP->y;
Y.z = UP->z;

/* X vector = Y cross Z */
X.x = Y.y*Z.z - Y.z*Z.y;
X.y = -Y.x*Z.z + Y.z*Z.x;
X.z = Y.x*Z.y - Y.y*Z.x;

/* Recompute Y = Z cross X */
Y.x = Z.y*X.z - Z.z*X.y;
Y.y = -Z.x*X.z + Z.z*X.x;
Y.z = Z.x*X.y - Z.y*X.x;

Normalize(&X);
Normalize(&Y);

M[ 0]=X.x ; M[ 1]=X.y ; M[ 2]=X.z ; M[ 3]=0.0;
M[ 4]=Y.x ; M[ 5]=Y.y ; M[ 6]=Y.z ; M[ 7]=0.0;
M[ 8]=Z.x; M[ 9]=Z.y; M[10]=Z.z; M[11]=0.0;
M[12]=0.0 ; M[13]=0.0 ; M[14]=0.0 ; M[15]=1.0;

}
/*=================================================================*/
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme