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 :

[Compréhension3D] Différence entre model-space ET view-space


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut [Compréhension3D] Différence entre model-space ET view-space
    Bonjour tous le monde

    Je souhaiterais comprendre enfin la DIFFERENCE entre ce que l'on appelle "l'espace model" (model-space) ET "l'espace vue" (view-space).

    ( Un petit schéma (fait avec des caractères ou un screen-shot) m'apporterais une vision plus forte encore )

    ma vision des choses :
    Un model-space est semblable à un espace de coordonnées "carré" comme une si le résultat graphique était une représentation en isométrique.

    Un view-space serait un model-space auquel on aurait ajouté une profondeur en perspective qui, avec cette profondeur, lui donne un aspect plus "lointain", donc ici on modifierait les coodonnées simples du model-space.

    Est-ce une bonne vision et, sinon, comment l'interprétez-vous logiquement (mathématiquement) et graphiquement (en imagé).

    Sinon, connaissez-vous quelques sites traitant à FOND de ce sujet ??

    Merci encore.
    Séb.

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    en fait le model space est tout simplement l'espace du model, et le view space l'espace de la camera.
    et comme en openGL on aime bien simplifier les chose, il n'existe qu'une seule matrice : la matrice MODELVIEW qui regroupe les 2 matrice, comme ca pas de probleme
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    en fait le model space est tout simplement l'espace du model, et le view space l'espace de la camera.
    ARGG!! Tu ne fait que "renommer" les 2 termes que je voulait que tu m'expliques.

    Sinon, ok pour:
    et comme en openGL on aime bien simplifier les chose, il n'existe qu'une seule matrice : la matrice MODELVIEW qui regroupe les 2 matrice, comme ca pas de probleme


    Notamment pour faire du bump-mapping, ou pour faire certains calculs de lumières pour trouver le diffus et le spéculaire, on a besoin de passer, mathématiquement, de l'espace-model à l'espace-vue;
    donc il y a bien une différence mathématique entre les 2.

    merci encore.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    L'espace modèle c'est simplement le repère local (généralement une matrice) associé à ton modèle, l'espace de la caméra c'est pareil, mais pour la caméra. Pour passer à l'un ou à l'autre il suffit donc d'appliquer le changement de repère (de matrice) associé. Il n'y a vraiment rien de compliqué .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Ok pour la compréhension globale.

    Mais alors pourquoi, lorsque l'on applique la matrice inverse de la "model-view", on fait passer les objets et vecteurs de l'espace caméra à l'espace objet ??

    Quesqu'il se produit au niveau mathématique pour fait passer, par exemple, un vecteur ou un cube de l'espace globale à son propre espace, donc son propre repère (espace objet) ??

    merci.

  6. #6
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    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 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Citation Envoyé par cyber_N
    Mais alors pourquoi, lorsque l'on applique la matrice inverse de la "model-view", on fait passer les objets et vecteurs de l'espace caméra à l'espace objet ??
    Parceque faire bouger le point de vue revient à faire bouger dans l'ordre inverse et dans le mouvement inverse les objets

    exemple: se déplacer vers la gauche reviens à déplacer l'objet vers la droite
    faire tourner le point de vue sur lui même revient à faire tourner l'objet dans le sens inverse autour du point de vue
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    unnn - un...

    Ok pour l'explication globale!
    Tout ceci, je le cerne bien (merci quand même de me le re-mémorer), mais .... il me reste encore un ch'ti bout de compréhension et c'est complètement ok.

    Pour ce faire, tiens, allez : prenons un exemple informatique réelle : le bump-mapping.

    après préparation des textures, on récupère la position de la lumière et on "formate" la position de ce point en utilisant la "model-view" inverse.

    Le bout de code tiré du très bon site "codesampler.com":
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
            //
            // Transform the light's position from eye-space to object-space
            //
            vector3f vLightPosES;    // Light position (in eye-space)
            vector3f vLightPosOS;    // Light position (in object-space)
            vector3f vVertToLightOS; // L vector of N.L (in object-space)
            vector3f vVertToLightTS; // L vector of N.L (in tangent-space)
     
            // Get the light's current position, which is in eye-space.
            float fLightsPosition[4];
            glGetLightfv( GL_LIGHT0, GL_POSITION, fLightsPosition );
            vLightPosES.x = fLightsPosition[0];
            vLightPosES.y = fLightsPosition[1];
            vLightPosES.z = fLightsPosition[2];
     
            // Transform the light's position from eye-space into object-space
            matrix4x4f modelViewMatrix;
            matrix4x4f modelViewMatrixInverse;
     
            glGetFloatv(GL_MODELVIEW_MATRIX, &modelViewMatrix.m[0] );
            modelViewMatrixInverse = 
                     matrix4x4f::invertMatrix(&modelViewMatrix );
     
            vLightPosOS = vLightPosES;
            modelViewMatrixInverse.transformPoint( &vLightPosOS );
    Pour tester, j'ai volontairement omis d'inverser la matrice.
    résultat : le bump mapping n'est plus dynamique mais fixe suivant la position relative de la lumière.

    ma question : pourquoi doit-on, DANS CETTE EXEMPLE, inverser la matrice ?? (j'essaie de comprendre avec un exemple concrêt)

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2014, 13h25
  2. Différence entre pre-line et pre-wrap(white-space)
    Par djun1 dans le forum Mise en page CSS
    Réponses: 16
    Dernier message: 15/10/2012, 01h58
  3. Différence entre Master Page et MVC 2 View Master Page
    Par stefsas dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 11/09/2010, 23h35
  4. Réponses: 7
    Dernier message: 06/04/2006, 14h07
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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