Bonjour,
débutant en OpenGL (sous Qt), je n'arrive pas à effectuer de changement de repère.
Pour être plus précis, j'ai créé un carré avec les coordonnées suivantes :J'ai récupéré une fonction permettant de réaliser des rotations à partir de la souris afin de pouvoir faire tourner mon carré. Par défaut, la rotation va s'effectuer sur le repère monde (0,0,0) or j'aimerais qu'elle s'effectue sur le centre du carré soit en (-1.0f, 1.0f, 0.0f).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 glBegin(GL_QUADS); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(-2.0f, 2.0f, 0.0f); glVertex3f(-2.0f, 0.0f, 0.0f); glColor3f(0.5f, 0.5f, 0.5f); glVertex3f(0.0f, 0.0f, 0.0f); glVertex3d(0.0f, 2.0f, 0.0f); glEnd();
J'ai essayé avec glTranslatef() afin de faire translater mon repère mais ça ne fait que déplacer le carré sur ma fenêtre.
Voici le code contenu dans paintGL() :
Quelle est la solution adéquate ? merci d'avance
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 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0f, 1.0*width()/height(), 0.1f, 1000.0f); // Model view matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, -distance, 0, 0, 0, 0.0, 1.0, 0.0); glRotatef(x_rot / 16.0f, 1.0f, 0.0f, 0.0f); glRotatef(y_rot / 16.0f, 0.0f, 1.0f, 0.0f); glRotatef(z_rot / 16.0f, 0.0f, 0.0f, 1.0f); //La génération de ma carré ...







Répondre avec citation



Partager