Schimz a écrit:
bah déjà si j'arrivais à comprendre quelque chose à ces conneries de vecteurs, ce serait une grande avancée. les
maths, j'peux pas, ça me rend malade, c'est épidermique.
Je suis pas doué en math non plus... pas besoin de math en prog , just une compréhension
de ce qui ce passe.
Il faut voir le vecteur comme un trait dans ta tête, ni plus ni moins.
En informatique (et en math) les vecteur sont considéré par defaut comme ayant une origine
de 0,0,0 (X,Y,Z) et sont dis "normalisé" quand ils on une longueur de "1"
(c'est le cas des normales pour le calcul de la lumière sur un polygone)
UN VECTEUR EST UN BON DIEU DE TRAIT EN 3D QUI DEFINI UN AXE, UNE ORIENTATION !!!!Le vecteur est donc contenu dans trois variables, X=l'horizontale, Y=la hauteur, et Z= la profondeur
si tu vois une variable X=1,Y=0,Z=0 (souvent exprimée (1,0,0)) tu doit te representer
un trait qui part de l'origine 0,0,0 et qui va en 1,0,0 donc un trait HORIZONTAL d'une longueur de 1
tu à maintenant un VECTEUR ou un AXE... un trait qui va de gauche à droite en fait ...
comprendo ? si ? donde esta la suite....
Orbiter pour definir un axe d'animation prend un de ces ... de vecteurs (un TRAIT)
en entrée pour savoir sur quel axe devra tourner ton animation.
exemple:
Le cockpit du DGIII ce
souleve (tourne autour) sur un axe qui vu de face va de gauche à droite il s'agit donc
d'une charnière horizontale, en bref d'un vecteur "X". (un trait horizontal quoa)
et miracle la définition du cockpit est celle la:
static ANIMCOMP Cockpit = { // Cockpit
CockiptGrp, 3, 0.0, 1.0,
0,1.90,5.75, // rotation axis reference point
1,0,0, // rotation axis direction(float)(-0.15*PI), // rotation angle (rad)
MshIndex, // mesh id
0, // group id
MESHGROUP_TRANSFORM::ROTATE
};
1,0,0 c'est un "vecteur normalisé" en fait faut pas ce laisser impressioner
c'est UN BON DIEU DE TRAIT HORIZONTAL (X) D'UNE LONGUEUR DE 1
Tu viens de donner a Orbiter sur quel axe tu aimerais voir tourner le cockpit
la charnière est donc horizontal et le cockpit va ce soulever. CA N'A RIEN
A VOIR AVEC LA POSITION !!!!
SI tu mets (0,1,0) (x,y,z je rappelle) ton TRAIT (vecteur normalisé) est VERTICAL le cockpit
va faire une rotation de gauche à droite donc... (dans le model)
comprendo ? si ? qé je continuare
ici:
0,1.90,5.75, // rotation axis reference pointtu défini enfin la
position de ton axe avec ton vecteur (TRAIT) tu avait donné seulement l'orientation.
avec ces deux trucs:
0,1.90,5.75, // rotation axis reference point
1,0,0, // rotation axis directionNous avont donc défini une CHARNIERE qui ce trouve CENTREE horizontalement au millieu du model (X=0)
à une hauteur de 1.90 unités et à une "profondeur" de 5.75 unité
SI TU REGARDE A (X=0,Y=1.90,Z=5.75) dans 3D max tu va tomber pil poil sur l'articulation
du cockpit....
ET de plus une charnière qui est HORIZONTALE (1,0,0)
comprendo toujours ? que ye esplique la suite !
(float)(-0.15*PI), // rotation angle (rad)Ca à l'air barbare mais en fait c'est très simple:
(float) defini seulement la constante qui suit comme ayant une virgule par opposition à un entier (int)
si PI est un cercle complet 0.15 fois PI est en gros 1/6 eme de cercle nous voulont donc que le cockpit
en s'ouvrant ne fasse pas un tour complet
mais 1/6eme de tour
le signe moins est juste la pour dire si on tourne dans le sens des aiguille d'une montre
ou a l'inverse.
si tu mets ca à la place:
(float)(0.50*PI), // rotation angle (rad)ton cockpit va "s'ouvrir" vers la bas , s'enfoncer dans le modèle, faire un demi tour (0.5=1/2
et ce retrouver a l'envers sous le dos du DG....
Encore un mot:
Ces vecteurs te permettent de définir des axes "biscornu" si tu mets (0.5,0.5,0)
tu aurait un axe vertical penché de 45°.. comme un arbre qui penche à cause du vent...
Voila, c'est pas bien mis en page, c'est un peu foutoir mais tu devrais piger en lisant bien.
dis moi si tu rame sur des trucs
A+++
Dan
Message modifié ( 13-12-2004 10:25 )