Pamauly>>
« Voilà ceci dit il me parait plus judicieux de stocker la transformation d'un objet par un vecteur position et un vecteur direction puisque c'est BEAUCOUP plus facile à utiliser . Voilà ceci dit il me parait plus judicieux de stocker la transformation d'un objet par un vecteur position et un vecteur direction puisque c'est BEAUCOUP plus facile à utiliser . »
Oui, j'ai fais un object vecteur avec les fonctionnalité qui me permet de facilité la tache. Oui... je sais que c'est important.
«ensuite il suffit de déterminer les angles que fait le vecteur direction avec le vecteur profondeur et ensuite faire
glTranslatefv(obj.pos);
glRotatef(obj.rot.z,0.0,0.0,1.0);
glRotatef(obj.rot.y,0.0,1.0,0.0);
glRotatef(obj.rot.x,1.0,0.0,0.0);»
Niet! Je suis pas d'accord. J'ai fait de cette maniere et je me heurte a une problematique technique: l'ordre des rotation!( C'est la raison pour laquel la memorisation des matrices de transformation est importante!!)
Je m'explique. Lorsque tu d'eclare les rotation. Il y a toujours une qui influence la suivante... mais pas la derniere! Ainsi comme tu as déclarer Rotatef de l'axe z, elle influence la rotation y et x: ca c'est correcte. Mais la rotation y et x, ne peut influencer z. Et encore pire, la rotation x ne peut influencer y.
Il faut donc une succesion de rotation une appres l'autre comme exemple:
rotation x...
rotation y...
rotation x...
rotation z...
rotation x...
Mais en applant glRotate*() autant fois que nous avons une transformation peut devenir lourd lors de l'application. Ainsi si l'utilisateur cumule environs 65 000 rotation cela commence a faire lourd (65 000 appelle de rotation pour cheminer a transformation actuelle!) En faite a ce stade c'est inaccetable pour mon moteur.
J'ai reglé ce probleme tous simplement en memorisant la derniere matrice transforme puis calculer la suivante.
«glLoadMatrix est dangereux car il faut faire attention à la représentation de la matrice: en colonne ou en ligne . Je crois qu'openGL le fait en ligne mais c'est à vérifier .»
J'ai essayer et ca marche. Je ne vois pas en quoi c'est si dangereux. Et oui openGl fait c'est matrice en ligne mais ce n'est pas difficile a adapter. Deplus par rapport a glTranslate*() et glRotate*() en appelant glLoadMatrix je trouve que cela fait un travail plus propre.
Voily vooilu en
(Programmeur un jour programmeur toujours...
arg la fatalité!!!

)