Bonjour je voudrais pouvoir dessiner une croix dans l'espace (x,y,z) qui soit toujours de la même taille à l'écran (que ma caméra recule ou pas) et ne tourne pas (un peu comme les textes 2D dans un espace 3D)
Bonjour je voudrais pouvoir dessiner une croix dans l'espace (x,y,z) qui soit toujours de la même taille à l'écran (que ma caméra recule ou pas) et ne tourne pas (un peu comme les textes 2D dans un espace 3D)
il suffit de faire comme pour les text 2d : tu passe en mode orthogonal et tu dessine ta croix en 2D
* 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
??? là, moi pas comprendre...
quand je marquais texte 2D c'etait en exemple de fonction (visuellement) mais j'ai pas dit que je savais le faire![]()
dans ta fonction paint/display tu change de projection le temps de dessiner tes informations
exemple rapide
Vala le code est pas garanti j'ai pas de compiler sous la main et je fais souvent des étourderis dont GL_VIEWMODEL et GL_MODELVIEW que je ne retiens jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 /*Fonction qui affiche la scène*/ void display () { glMatrixMode(GL_VIEWMODEL); glLoadIdentity(); /*Tu dessines ta scène comme tu le sens*/ /*Tu sauvegardes ta matrice de modélisation*/ glPushMatrix(); /*Tu passes sur la matrice de projection pour te mettre en mode 2D pour afficher du texte, des boite de dialoges, etc*/ glMatrixMode(GL_PROJECTION); /*Tu sauvegardes d'abord ta projection actuelle*/ glPushMatrix(); /*Tu fais un projection 2D*/ glLoadIdentity(); glOrtho(0.0,EcranLargeur,0.0,EcranHauteur); /*Tu te mets dans la matrice VIEWMODEL pour afficher tes infos*/ glMatrixMode(GL_VIEWMODEL); glLoadIdentity(); /*Tu affiche tes informations glVertex2D/glBitmap*/ /*Et si jamais tu veux afficher encore des trucs sur la scène en glPerspective*/ /*Tu te remets en mode projection ...*/ glMatrixMode(GL_PROJECTION); /*...et tu récupère la matrice perspective telle qu'elle était avant*/ glPopMatrix(); /*Tu te remet en mode viewmodel ...*/ glMatrixMode(GL_VIEWMODEL); /*...et tu récupère la matrice viewmodel telle qu'elle était avant*/ glPopMatrix(); }
Pour les questions éventuelles je ne repasse pas avant un moment désolé.
Ensuite il faudra bien utiliser une fonction pour transformer un vecteur 2D - 3D et vice-versa qui aidera à placer ce qui est ortho vers 3D et inversement.
Il y a gluProject() et gluUnproject() pour cela.
edit: Et aussi la dernière façon, si besoin est, que ce sois spécialement un objet 3D mais toujours de même taille: calculer la distance entre la caméra et le dit objet, ensuite appliquer cette distance à l'objet, bien sûr en la divisant pour avoir la bonne taille.
Utile pour un déplaceur d'objets qui indique les axes, dans un logiciel de modélisation par exemple.
Toujours avec les mêmes fonctions de transformation 2D – 3D.
* 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
Faut pas comprendre de coté, je disais d'utiliser gluProject/UnProject quand on dois afficher un objet ortho à la même position d'un objet 3D, vu que ce dernier changeait de taille suivant la position de la caméra.![]()
* 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
Partager