Bonjour,
Après un grand nombre de transformations (dont de nombreuses rotations dans tous les sens) de la matrice modelview, j'aimerais me repositionner à l'horizontal, mais en restant au point ou je suis arrivé. Comment faire?
Bonjour,
Après un grand nombre de transformations (dont de nombreuses rotations dans tous les sens) de la matrice modelview, j'aimerais me repositionner à l'horizontal, mais en restant au point ou je suis arrivé. Comment faire?
Et les autres angles, tu veux les conserver aussi ? Ou seulement la position ?
Tu peux faire un gluLookAt en reprenant la position actuelle pour te remettre droit. Ou bidouiller directement la matrice si tu peux déterminer les deux autres axes facilement.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Le but de l'opération est de rester à la même position, mais de réinitialiser l'angle pour tracer un segment à l'horizontal. Malheureusement, gluLookAt calcule par rapport à l'angle actuel (je viens de tester, merci quand même).
Voilà ce qui se passe dans mon programme (je dessine un arbre) :
1. J'initialise la matrice
2. J'opère un grand nombre de rotations et de translations les une derrière les autres et je trace des cylindres entre chaques points (branches). (ça marche)
3. J'aimerais tracer à l'endroit où je suis arrivé un polygone (feuille) sur le plan horizontal.
Il faudrait soit que je puisse réinitialiser l'angle, soit que je puisse récupérer les coordonnées du point que j'ai atteint au moment où je veux tracer la feuille.
Bien sûr, je pourrais recalculer les coordonnées de ce point au fur et à mesure, mais étant donné qu'il peut y avoir plusieurs milliers de rotations/translations ça prendrait beaucoup de ressources et par ailleurs, ça serait d'autant plus stupide que c'est probablement ce que fait opengl (en hardware). Il doit exister un moyen de retrouver les coordonnées du points d'arrivé. Probablement une opération sur la matrice.
en remettant la partie rotation/scale de la matrice à l'identité ca doit marcher. par contre, il va falloire le faire à la main![]()
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Récupérer les 3 premières composantes de la 4ème colonne de la matrice model-view devrait faire l'affaire, pour récupérer la position actuelle.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Amusant, je venais d'en arriver à la même conclusion par des tests![]()
En tout cas merci. Je vais essayer de mettre ça en pratique.
A+
Partager