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 :

Bouger la caméra par la souris


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut Bouger la caméra par la souris
    Bonjour,

    J'ai developper un programme C opengl 2.1 qui affiche des primitives en utilisant les shaders, ca marche !

    Je voudrais faire bouger ma vue par la souris (molette,bouton click etc.) en utilisant directement la matrice de transformation ! sans à passer par la fonction gluLookAt.
    D'ailleur je n'utilise pas les fonctions glut.

    Pour la souris c'est WM_MOUSEMOVE , WM_LBUTTONDOWN .... que j'utilise et je veux traiter la matrice ici.
    Pour le clavier c'est WM_KEYDOWN .......que j'utilise

    Y a t'il des exemples en C qui parle de ceux-ci concernant faire bouger sa vue par la souris (molette boutons etc.) ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    sans à passer par la fonction gluLookAt.
    D'ailleur je n'utilise pas les fonctions glut.
    C'est très bien :p

    Mais ça n’empêche pas que le mieux c'est de recréer sa propre fonction LookAt !

    Y a t'il des exemples en C qui parle de ceux-ci concernant faire bouger sa vue par la souris (molette boutons etc.) ?
    Je l'avais deja fait en C avec SDL/OpenGL (ou freeglut me souviens plus) , mais c'est pas très compliqué , il faut quand même créer une fonction "haut niveau" pour gérer la caméra sur deux axe.

    Et ensuite que ces deux axe (un haut/bas , un gauche/droite) soit gérer par la souris
    (Et d'obliger la souris à être au centre de l'écran).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Si je ne m'abuse, n'ayant plus fait de 3D depuis des années, la camera c'est la matrice View. Donc il suffit de gérer ton code pour la modifier comme tu l'entends selon tes critères.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Oui c'est bien le View , mais pour faciliter le truc comme je l'ai dit , il faut mieux une fonction plus haut niveau qui bosse sur les deux axes (qui modifie du coup la Matrice view).

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Toujours aucun code de ta part, "ça marche pas" n'a jamais été un message d'erreur.

    Dans un très vieux code qui affichait un model 3d, voilà comment je crée les 3 matrices à envoyer au shader
    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
     
    			// Projection matrix : 45° Field of View, 16:9 ratio, display range : 0.1 unit <-> 100 units
    			const glm::mat4 Projection = glm::perspective(45.0f, 16.0f / 9.0f, 0.1f, 100.0f);
    			// Camera matrix
    			const Vector3& camPos = camera->GetPosition();
    			const Vector3 lookAt = camera->GetLookAt();
    			glm::mat4 View       = glm::lookAt(
    				glm::vec3(camPos.x, camPos.y, camPos.z),
    				glm::vec3(lookAt.x, lookAt.y, lookAt.z),
    				glm::vec3(0,0,1)  // Head is up
    				);
    			glm::mat4 Model = glm::translate(glm::mat4(1.0f),glm::vec3(position.x, position.y, position.z));
    			const Rotation& rotation = model->GetRotation();
    			Model = glm::rotate(Model, rotation.x, glm::vec3(1.0f, 0.0f, 0.0f));
    			Model = glm::rotate(Model, rotation.y, glm::vec3(0.0f, 1.0f, 0.0f));
    			Model = glm::rotate(Model, rotation.z, glm::vec3(0.0f, 0.0f, 1.0f));
    Quand à savoir comment modifier les coordonnées de la caméra, je suppose que tu sais faire des opérations + et = pour changer leurs coordonnées dans le code comme bon te chante (souris, clavier, pad, ...).

    Dans le shader, c'est assez trivial
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl_Position = Projection * View * Model * vec4(Vertex * in_Scale, 1.0f);
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut
    En matrice,mathématique j'ai des connaissances pauvres.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/12/2011, 19h32
  2. [Js] Bouger un calque par rapport à la position de la souris
    Par hedgehog dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/04/2008, 17h03
  3. Couleur du pixel pointé par la sourie
    Par algerian dans le forum Windows
    Réponses: 4
    Dernier message: 16/08/2005, 18h22
  4. Réponses: 12
    Dernier message: 22/07/2005, 21h53
  5. Réponses: 2
    Dernier message: 05/07/2005, 17h40

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