PDA

Voir la version complète : astuce pour eviter le gimbal effect



paspas
17/01/2007, 01h39
salut
voila un astuce en coffee pour eviter grandement* le gimbal effect l' orsque on veut pointer ou orienter un objet dans l espace

cette effet vient du fait que nous utilison tj la rotation HPB* pour orienter nos objet*or il est difficile de connaitre avec precision la valeur des rotation H, P et B simultanement


l' asuce consiste
a utisiser les matrices* *( nooooooon parter pas )

pour resumer :* les matrice cinema4d comporte 4 vecteurs

V0* :* la position du point

V1* :* *l'axe des X
v2* :* * l' axe des y
v3* :* * l' 'axe des Z


ce qui veut dire que cette matrice peut placer un objet a une position V0 et l' orienter suivant des axe defini : V1 V2 et V3

imaginon 2 point* p1 et p2* dans l' espace* p1 et p2 sont des vecteurs

var m = new (Matrix);* // on crée une nouvelle matrice

m -> SetV0(p1);* *// position de l' objet*
m -> SetV1(vnorm(p2-p1)) ; // on defini l'axe des X
m -> SetV2(Vnorm(vcross(p2-p1),vector(0,1,0)))); // on defini l axe des y perpendiculaire a l axe des X
m -> SetV3(Vnorm(vcross(p2-p1),vector(0,0,1)))); // on defini l axe des Z perpendiculaire a l axe des X

objet ->SetMg(m); // on rentre la matrice dans l objet

et normalement l objet serra toujours* orienter suivant la direction des point p1 et p2


attention les cas limite sont ceux ou les point se superpose

paspas

Jean-Laurent
17/01/2007, 08h46
Très interressant tout ça paspas. :poucehaut:
C'est exactement l'une des questions que je me posais, après avoir remarqué que mon ressort déviait légèrement de son axe au bout de quelques minutes.

Par contre, j'ai quelques doutes sur ton titre.

Il me semble que le gimbal effect n'est pas lié au manque de précision sur la valeur des angles de rotations (dans ton cas d'ailleurs, il ne s'agit pas vraiment d'un mouvement de rotation mais de la rotation des axes d'un objet par rapport au monde, si j'ai bien compris.)

Le Gimbal effect intervient lors du "mouvement de rotation" d'un objet autours de plusieurs axes. Il arrive que ces axes viennent à se confondre, entrainant simultanément une rotation sur deux axes et une perte d'un degré de liberté.
Pour éviter cet effet, il suffit d'avoir recours aux nombres complexes (ce qui revient effectivement à définir un vecteur à 4 dimensions, mais pas le même.)

Dans ton cas, tu décris un simple mouvement de translation, qui ne devrait pas être affecté par le Gimbal effect, mais effectivement par la précision sur le calcul du point suivant.

paspas
17/01/2007, 10h52
salut

me suis mal exprimer ce que voulais dire par
il est difficile de connaitre avec precision la valeur des rotation H, P et B simultanement


c est que un general on regle 2 des* angles et on laise le 3eme libre et c' est cette angle libre qui crée je pense le gimbal ( je dit ca par experience et non pas pas demonstration scientifique* )
et donc la metode ci dessus regle les 3 angle HPB* simultanement ! ce qui limite fortement dans la majoriter des cas se gimbal !


il est difficile de connaitre avec precision la valeur des rotation H, P et B simultanement



EDIT


il ne s'agit pas vraiment d'un mouvement de rotation mais de la rotation des axes d'un objet par rapport au monde, si j'ai bien compris.)



oui mais comme ton objet est axé sur l axe dex X par defaut ( et Z pour les os) la rotation ce ces axe donne lieux a la rotation sur suis meme de ton objet .

ces cette methode que utiliser pour la foncion cible

tu alligne ton axe des X sur le vecteur qui relier tes deux point et apres tu cale les autre axe* *


paspas

ps : mais ca a donne d'autre posibiliter cet astuce je developerait si mes reflexxion sur les vecteurs et matrice vous interese