Besoin d'aide / -> opérations matricielles pour position miroir d'un point dans

Signaler
Messages postés
4
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
4 décembre 2008
-
Messages postés
4
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
4 décembre 2008
-
Bonjour , je suis nouveau ici .

Je suis pas vraiment programmeur ( je suis infographiste (animateur 3D) ) .
J'apprends ces jours ci un language spécifique de mon logiciel de travail (cinéma4D) , basé sur le C++ afin de developper des petits plugins pour améliorer mon ergonomie de travail ..
bon je galère un peu ^^ mais ça va j'apprends.

Donc je viens vous demander de l'aide car , je souhaiterais me faire un 1er plugin qui me permettrait de faire rapidement des poses mirroirs de personnages , en agissant sur les controlleurs du personnage , et en les mirroirant selon un axe choisis .Le problème est que je galère à trouver la formule mathématique qui me permettrait de donner la position et rotation d'un point dans l'espace , en mirroir , par rapport un plan .

donc imaginons un objet A ( cube vert sur l'image ) , un objet M servant d'origine et sur lequel on choisit l'axe de mirroir (ici l'objet 'nul' symbolisé par le plan blanc )
et un objet B ( cube rouge ) . Je veux que cet objet B soit le symétrique de A sur l'axe Z de l'objet M ( donc son plan XY) . (j'ai triché sur l'image , c'est pour ça que ça semble syméytrique ^^ ) 

J'ai accès aux matrices locales et globales , aux positions/rotations locales et globales de chaque objet . J'ai tous les noueds mathématique pour les opérations d'algèbre et de conversion diverses .. mais il me manque juste la bonne formule pour trouver , par les matrices globales et/ou les positions et rotations globales , ce calcul automatique de mirroir :(

donc les matrices de chaque objet me donnent ( V0 V1 V2 V3 ) [avec V0 la position dans l'espace (vecteur ) .. V1 V2 et V3 les vecteurs définissant la rotation du repère de l'objet dans l'espace .

voila avez-vous des idées ? merci d'avance si vous pouvez aider un nulos en maths comme moi ! :)  
 
  

++

clément

3 réponses

Messages postés
4
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
4 décembre 2008

ici un autre exemple (truqué biensur ) de l'effet mirroir voulu avec cet objet M origine du mirroir , déplacé et tourné un peu dans l'espace . on voit bien que le cube rouge est le "reflet" du cube vert , sur le plan YX de l'objet M ( plan blanc ) :
Messages postés
4
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
4 décembre 2008

(désolé je vois pas où éditer mes messages :( .. alors je poste à la suite )

Voila ici , l'interface de mon plugin ( si j'y arrive ^^ ) . Programmé en c++ via un editeur spécial dans le logiciel .

donc le principe est assez simple je pense : on drag & drop nos controlleurs dans les liens .. on choisit lesquels on veut pour l'effet mirroir ( donc on active ou non les "checkbox' ) .. on drag and drop le controlleur ou objet servant d'origine au plan mirroir ...on choisit l'axe via le petit menu déroulant .. et puis on a les boutons d'actions : mirroir des élements selectionnés ( checkbox ) .. et/ou  stockage de la pose ( j'ai mis 3 boutons car je n'ai pas besoin de plus généralement ) pour pouvoir se déplacer dans l'animation (dans le temps ) et pouvoir reinjecter la pose .

voili voilou 

:)   
Messages postés
4
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
4 décembre 2008

ok ayé trouvé ! :D  (grace à un ami qui m'a mis sur la piste des multiplications de matrices et des inversions .


donc ici en gros j'ai:


(matrice globale de A * (invert(matrice globale M ))  j'obtient un premier croisement matriciel [ appelons-le M1] auquel je multiplie (1,1,-1) (car je veux une sym sur Z ) à V0 V1V2etV3 .. puis je remultiplie [en croisé] ( matrice globale M ) * (matrice M1)  ... et cette matrice résultante , je l'injecte dans mon cube rouge , en entrée 'matrice globale'

ici un test en video :

http://kiteclem35.free.fr/3D/mirror%20test.avi

souiiiis content .. je peux coder ça maintenant et continuer mon plug ^^

++
clement