Qt problème de camera (opengl)
Bonjour à tous.
Ces dernier temps je me lance dans opengl :D
Donc comme tout le monde, je commence avec de jolis cubes...
Tout ce passe bien excepté un petit problème de camera :p
J'utilise gluPerspective comme type de projection. J'aimerai que l'utilisateur puisse se déplacer dans la scène. Pour cela j'ai créer pour l'instant deux fonction:
-Une fonction de rotation
Code:
1 2 3 4 5 6 7 8
|
void GLWidget::rotateBy(int xAngle, int yAngle, int zAngle)
{
xRot += xAngle;
yRot += yAngle;
zRot += zAngle;
updateGL();
} |
-Une fonction zoom
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
void GLWidget::wheelEvent(QWheelEvent *event)
{ int numDegrees = event->delta() / 8;
if( numDegrees<0)
{ zoom = zoom-5;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(zoom,1,1,1000);
}
else if(numDegrees>0)
{ zoom = zoom+5;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(zoom,1,1,1000);
}
updateGL();
} |
Je vous fourni aussi Paintgl
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
void GLWidget::paintGL()
{
qglClearColor(clearColor);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glTranslated(xT, yT, zT);
glRotated(xRot / 16.0, 1.0, 0.0, 0.0);
glRotated(yRot / 16.0, 0.0, 1.0, 0.0);
glRotated(zRot / 16.0, 0.0, 0.0, 1.0);
glCallList(sharedObject);
makeObject2(-2,0,-10,QString("../images/crate.bmp"));
makeObject2(0,0.0,-10,QString(":/images/side2.png"));
makeObject2(2,0,-10,QString(":/images/side3.png"));
} |
Donc le problème :D
Indépendamment ces fonctions marche très bien. Mais lorsque j'utilise la rotation puis que je zoom, la c'est la cata... Déformation de la perspective, déplacement non voulu de la camera...
Y aurait-il quelque chose que je n'aurai pas saisi, un oubli?
Merci de l'éclairer sur le sujet
Amicalement Abza