Bonjour a tous,
Je suis en train d'ecrire un moteur 3D sous OpenGL et j'ai quelque dificulte avec la camera. (Langage: C++)
En fait mon soucis, c'est que je ne tient pas a limiter les mouvement au sol. donc je voudrait que ma camera puisse se balader dans n'importe quelle direction.
cela marche, ma camera est defini par deux angles seulemet (un angle de tete orientant de droite a gauche et un anglet de roll orientant de haut en bas) Grace a ces deux angle je me deplace bien dans la bonne direction, tout marche bien jusqu'au moment ou la direction dans laquelle regarde ma camera est proche de la direction y du monde. La, au lieu de tourne la tete de droite a gauche, la camera pivote sur elle meme (rotation autour d'y)
Ca fait un moment que je cherche et j'ai un peu de mal a savoir comment ressoudre ce probleme.
voici le code qui calcule la matrice de vue:
void
CCamera::GetViewMatrixFP()
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// applying transformations on the camera
glRotatef(mPhiAngle, 1, 0, 0);
glRotatef(mThetaAngle,0, 1,0);
glTranslatef(-mPosition.GetX(), -mPosition.GetY(), -mPosition.GetZ());
CalculateVectors();
}
La fonction calculate vectors calcul les valeurs pour les vecteur de la camera (direction, droite et haut)
si vous avez une idee, je suis preneur
Merci