D3DXMATRIX : probleme déformation

cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010 - 29 déc. 2004 à 16:43
zoom1984 Messages postés 17 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 février 2005 - 26 févr. 2005 à 02:50
Bonjour, je voudrais pouvoir appliqué a un objet différentes rotations et translations étant soumises a inertie.
J'ai donc créé des matrices pour recevoir les mouvement:
-mat0 : contient la position en translation
-mat1 : contient la position en rotation
-mat2 : contient l'inertie en translation
-mat3 : contient l'inertie en rotation

Ainsi, a chaque frame mat0 subit mat2 et mat1 subit mat3 grace a D3DXMatrixMultiply(), puis japplique a l'objet la matrice résultant des transformation mat2 puis mat0. Ca marche presque...

Le probleme c'est que les transformation "s'accumule" dans mat0 et mat1 et que petit à petit l'objet se déforme, donc je voudrais savoir comment maintenir les facteur de "scaling" à un pour empécher les déformations.

Merci!

2 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
29 déc. 2004 à 19:15
A mon avis le problème est au niveau mathématique et mécanique car je ne comprends pas bien la façon dont tu as posé le problème.

Je ne vois pas comment ton algo peut fonctionner. Tu parles d'inerties, mais pas de forces, de positions, mais pas d'intervalles de temps...

Je ne vois pas du tout comment exploiter le resultat de la multiplication d'une matrice d'inertie par une matrice de position....
A vrai dire, je en comprend pas bien le terme "matrice de position".

Le PFD:
Somme_des_forces = masse*acceleration_translation
Somme_des_couples = inertie*acceleration_angulaire

Sommes = vecteurs3
masse = scalaire
inertie = matrice3*3
accelerations = vecteurs3

donc:
acceleration_translation=Somme_des_forces/masse
vitesse_translation = vitesse_translation + acceleration_translation * delta_temps
position=position + vitesse_translation * delta_temps

A peu de chose près, c'est la meme chose pour la rotation.

C'est la clé des moteurs physiques.

Si j'ai mal compris ton problème, excuse-moi.
0
zoom1984 Messages postés 17 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 février 2005
26 févr. 2005 à 02:50
N'utilise pas des matrices mais des quaternions ( que tu peux
normaliser ) pour les rotations et des vecteurs ( pour les translations
). Transforme le tout en matrices au moment où tu en as besoin.
0
Rejoignez-nous