IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Gérer l' angle de vue de la camera openGL


Sujet :

OpenGL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Gérer l' angle de vue de la camera openGL
    Bonjour,
    Je vous explique un peu mon problème:
    J'essais de créer un monde 3D openGL réaliste comme si on explorait à travers une fenêtre. Un exemple explicite serais cette vidéo : http://fr.youtube.com/watch?v=UIDmpU6eO2M
    Comme vous pouvez le voir dans la deuxième partie de la vidéo, la camera bouge mais garde toujours dans son angle de vue les parois de la fenetre 3D.
    Je m'efforce tant bien que mal de comprendre comment je pourrais faire ça dans une appli OpenGL ... mais toujours sans succes.
    J'ai déja tenté de garder la camera fixe et déplacer seulement le point visé, mais cela me donne pas le meme résultat. J'ai aussi essayé de jouer avec l'angle de vue du "gluPerspective" mais là aussi, les résultats sont mauvai... soit je le gère mal soit ce n'est pas ça.

    Si quelqu'un à une idée pour avoir les memes caractéristiqies de vue que ceux de cette vidéo, je suis preneur.
    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Points : 172
    Points
    172
    Par défaut
    je pense qu'il suffit d'utiliser gluLookAt avec les 3 premiers paramettres qui seront la position supposée de la tete, les 3 suivants seront le points visé fix et les 3 derniers - le vecteur UP qui pointe toujours vers le haut (0,0,1).

    Bon courage

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci pour ta réponse goast,
    mais en fait c'est une chose que j'ai déja essayé. J'utilise les fonctions gluLookat() et gluPerspective() mais je n'arrive pas à faire en sorte de garder la vue de la camera sur l'entrée de la fenêtre affichée(je parle du tunnel filaire aue l'on peut voir dans la vidéo).

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    le point visé est fixe comme le dit goast
    apparemment au centre de la pièce virtuelle
    il ne fait que des translations sur les 2 axes horizontaux de la position de la caméra

    tu peux aussi télécharger les sources du programme de l'auteur sur son site web :
    http://www.cs.cmu.edu/~johnny/projects/wii/
    où les vidéos sont bien plus intéressantes d'ailleurs

    ps : si tu sors un "virtua cops" intégrant cet artifice fais moi signe

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    lol pour le "viruta cops" ça attendra ^^
    Sinon je pense pas que le deplacement de camera soit seulement un deplacement de camera parceaue si tu regardes bien la vidéo. les parois de la fenetre reste toujours fixe. Et pour une camera fixe, quand tu changes le point visé, ça la fait tourner sur place pour suivre le point visé.
    Pour le code source... pas moyen de le faire fonctionner, premierement parceque j'ai pas de wiimote et deuxiemement parceque je suis sous linux...en plus le code disponible c'est la librairie Wiimote et une application du systeme mais j'arrive pas á trouver oú il g'ere le mouvement de la camera, un peu d'aide pourrais etre la bienvenue^^
    Merci en tout cas, j'étudie toujours la question, j'espére arriver enfin a quelquechose

  6. #6
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Points : 172
    Points
    172
    Par défaut
    J'ai pas trop de temps pour comprendre le code mais la camera est initialisé ici:


    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
    private void SetupMatrices()
    		{
     
                device.Transform.World = Matrix.Identity;
     
                device.Transform.View = Matrix.LookAtLH(new Vector3(headX, headY, headDist), new Vector3(headX, headY, 0), new Vector3(0.0f, 1.0f, 0.0f));
     
                float nearPlane = .05f;
                device.Transform.Projection = Matrix.PerspectiveOffCenterLH(    nearPlane*(-.5f * screenAspect + headX)/headDist, 
                                                                                nearPlane*(.5f * screenAspect + headX)/headDist, 
                                                                                nearPlane*(-.5f - headY)/headDist, 
                                                                                nearPlane*(.5f - headY)/headDist, 
                                                                                nearPlane, 100);
     
            }

  7. #7
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Points : 172
    Points
    172
    Par défaut
    Je ne connai pas DX mais les 2 fonctions semblent etre les equivalents de glLookAt et gluPerspective

  8. #8
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par vince31 Voir le message
    si tu regardes bien la vidéo. les parois de la fenetre reste toujours fixe.
    C'est tellement bien fait que tu crois qu'elles ne bouge pas!
    L'écran est plat, tu es obligé de les faire bouger pour avoir cet effet (d'ailleurs ça se voit très bien quand il filme depuis le côté gauche par rapport à l'écran, on ne voit plus la paroi gauche de la "boite" sur l'écran)

    A mon avis, tu vises le centre de l'écran (si on peut appeler ça l'écran... il faut te définir un rectangle dans ta scène), tu gères la position de la caméra en visant toujours ce centre, et ça devrait le faire.
    Par contre il doit y avoir une petite déformation à gérer quand on se désaxe de l'axe de la boite...

  9. #9
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    Citation Envoyé par vince31 Voir le message
    je pense pas que le deplacement de camera soit seulement un deplacement de camera parceaue si tu regardes bien la vidéo. les parois de la fenetre reste toujours fixe.
    en regardant bien, je vois ce que tu veux dire
    en effet, il semble plus déplacer le point de fuite de la pièce
    ça m'a l'air plutot tordu comme système mais pourtant ça rend bien (surtout dans la vidéo originale)
    joue peut-etre sur le frustum pour donner cet effet là

    il faudrait voir dans le code source comment il calcule ses paramètres pour la fonction de perspective
    pas besoin de l'executer mais il faut tout de même passer du temps à l'analyser

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    ça y est je me suis mis à décortiquer le code et en fait comme le disait goast tout ce fait par les fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    device.Transform.View = Matrix.LookAtLH(new Vector3(headX, headY, headDist), new Vector3(headX, headY, 0), new Vector3(0.0f, 1.0f, 0.0f));
     
    device.Transform.Projection = Matrix.PerspectiveOffCenterLH(    nearPlane*(-.5f * screenAspect + headX)/headDist, 
                                                                                nearPlane*(.5f * screenAspect + headX)/headDist, 
                                                                                nearPlane*(-.5f - headY)/headDist, 
                                                                                nearPlane*(.5f - headY)/headDist, 
                                                                                nearPlane, 100);
    Mais la fonction qui gére le volume de vision n'est pas comme celle en openGL. Ici les parametres sont la taille des differents cote . gauche, droit, haut, bas, du plan near et ensuite le plan far
    Je pourrais peut-etre faire quelque chose avec le glFlustrum()... Et en fait je me demandais si quelqu'un avait réussi à compiler et lancer le code pour savoir ce que sont les valeurs des variables firstPoint et secondPoint dans le code du projet dans le fichier "WiiDesktopVR.cs" ligne 771 et 772 parceque je serais tenté de penser qu'il s'agit des corrdonnees pixels des points dans l'image...je vais d'ailleur considérer ça dans mes tests

Discussions similaires

  1. Problème angle de vue Réalité augmentée
    Par efedril dans le forum Android
    Réponses: 0
    Dernier message: 05/02/2014, 18h49
  2. redresser une image, changer l'angle de vue
    Par tchege dans le forum Images
    Réponses: 31
    Dernier message: 24/07/2013, 20h47
  3. Réalité augmentée - Calculer l'angle de vue
    Par baton dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 04/05/2012, 18h17
  4. Affichage différent selon l'angle de vue
    Par Loceka dans le forum Traitement d'images
    Réponses: 14
    Dernier message: 06/05/2011, 09h10
  5. Calcul de l'angle de vue haut/bas
    Par Mercenary Developer dans le forum OpenGL
    Réponses: 22
    Dernier message: 25/07/2009, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo