Accueil > Forum > > > > Camera en vol libre sous opengl
Camera en vol libre sous opengl
jeudi 17 novembre 2005 à 18:21:04 |
Camera en vol libre sous opengl

sirfrenchalot
|
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
|
|
jeudi 17 novembre 2005 à 22:50:00 |
Re : Camera en vol libre sous opengl

luhtor
|
Utilise plutot gluLookAt( pos_x, pos_y, pos_z, point_vue_x, point_vue_y, point_vue_z, vecteur_normal_x, y, z)
En gros, voila:
gluLookAt(pos_x,pos_y,pos_z,
pos_x+cos(alpha)*cos(beta),
pos_y+sin(alpha)*cos(beta),pos_z+sin(beta),
-cos(alpha)*sin(beta),-sin(alpha)*sin(beta),cos(beta));
Ca doit etre ca, si ca bug, faudra refaire le calcul pour le vector normal.
Ici, alpha, c'est l'angle de rotation horizontal, et beta, l'angle vectical. Je te laisse l'adapter a tes besoins.
|
|
vendredi 18 novembre 2005 à 14:31:33 |
Re : Camera en vol libre sous opengl

kortin
|
Hé ouai, c'est normal que ça ne marche pas. Tu sais les mathématiques sont allergiques aux M_PI/2.0; lol En fait, tu utilises là les angles d'euler... qui dit angle d'Euler dit Gimbal Lock. Qui dit Gimbal Lock dit Quaternions.
Bref, soit tu bloques à pi/2, soit tu utilise les quaternions (cherche sur google).
PS : la solution a luhtor est une autre solution mais au final, c'est toujours les angles d'euler qui sont utilisés... donc le problème est toujours là.
|
|
vendredi 18 novembre 2005 à 17:10:39 |
Re : Camera en vol libre sous opengl

luhtor
|
Non il n'y a pas de problème avec ma solution. L'utilisation des angles d'Euleur est inutile pour tout ce qui est doom like. (angle d'euler utile seulement pour les simulations d'avions ou autre). De plus, pour les doomlike, l'ordre des rotations n'a pas d'importance.
Pour ce qui est des angles d'euler, c'est vraiment pas pratique, mieux vaut appliquer brutale une formule qui donne la matrice de rotation d'angle quelconque suivant un vecteur particulier. On créer des erreurs minimes, au fur et a mesure des calculs matricielles. Il est donc nécessaire de renormaliser la base sur laquelle on applique la matrice. (voir normalisation de schmidt).
|
|
vendredi 18 novembre 2005 à 18:12:20 |
Re : Camera en vol libre sous opengl

sirfrenchalot
|
Merci a tout les deux pour vos reponses.
Je penses effectivement que mon probleme est du au angles d'euler et a un gimbal lock. Etant donne qu'il s'agit d'une camera en premiere persone qui se deplace dans les trois dimensions (genre simulation d'avion... ou shoot spacial).
Il faut que je regarde plus en profondeur les quaternions mais je pensais pouvoir determiner la matrice de vue directement a partir des angles et des vecteurs, sans passer par des transformations.
Merci encore pour voter aide, et si vous avez plus d'infos sur les quaternions, je veux bien.
|
|
jeudi 6 avril 2006 à 11:37:41 |
Re : Camera en vol libre sous opengl

gouessej
|
Bonjour
As-tu résolu ton problème? Les quaternions ne peuvent pas tout
résoudre. Tu peux avoir du gimbal lock avec des quaternions. C'est ce
qui m'arrive. Tout dépend da la façon de les utiliser. Les caméras
d'Euler, Cardan et UVN posent des problèmes d'imprécisions
plus importants que les quaternions surtout si
tu veux faire des interpolations (cf. SLERP). Ils demandent même plus
de calculs. Bon courage. Moi ça fait deux mois que je rame là-dessus   yeah! vive java 
|
|
Cette discussion est classée dans : opengl, camera, droite, direction, mposition
Répondre à ce message
Sujets en rapport avec ce message
Camera Opengl [ par sniperfou ]
Salut a tous,j'ai un probleme avec opengl car je voudrais faire tourner ma camera autour d'un cube mais je ne connait pas les fonctions qui permettent
Camera en opengl [ par DanteSeb ]
Bonjour a tous, Voila je suis nouveau et je voulais avoir quelques précisions sur la gestion de la camera... Je sais c'est une question de newbie mais
camera [ par un4given ]
Bonjour a tous !Bon je suis bien conscient que ce sujet a été traité 1000 fois mais le probleme c'est que c'est 1000 fois d'une facon differente et me
OpenGL mauvaise odre d'affichage des texture [ par maladedede ]
BonjourJe programme un jeu en OpenGL et j'ai déja placé tous les murs de l'environement( ce sont des surface plane a couleur uniforme).Le problemen c
souris et camera openGL [ par yuriashford ]
Bonjour je suis nouveau sur cppfrance alors je ne sais pas si la question a ete pose si c le cas je m'excuse a l'avance. Bon je créé actuellement une
OpenGL et Glut: saisie clavier [ par bluelambda ]
Salut à tous ! Voilà j'ai fait un petit programme qui utilise OpenGL avec GLUT. C'est un programme très basique, avec juste une fonction d'affichage
gestion camera [ par chucky_666 ]
Voila mon pb :je modelise un terrain 3D et g fixe une camera au dessus avec gluLookAt().Je me sert de la souris pour effectuer des rotation de la came
OpenGL eclairage [ par dletozeun ]
bonjour,J'aimerais savoir comment dessiner un objet en 3D avec openGL en appliquant des groupes de lissages a l'objet.C a dire que je voudrais que cer
rotation d'une BMP avec OpenGL [ par ______ ]
est ce qu'on peut faire tourner une image 2D dessinée av
ouvrir flux camera ip [ par ludoshi22 ]
Bonjour, Je dois ouvrir le flux provenant d'une camera IP mjpeg afin d'en extraire des images et de les bricoler un peu, en c et sous Linux. Pour la
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|