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 :

Projection perspective "isometrique", what!?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Par défaut Projection perspective "isometrique", what!?
    Salut tout le monde.

    Par avance, navré si le vocabulaire n'est pas le bon ou que je manque de précision, je commence à peine à dompter OpenGL :p
    (Pour la partie math en revanche pas de soucis!)

    Voila le topo

    Je travail actuellement sur un moteur de jeu 2D/3D à des fins purement éducative.

    Je dispose :
    • d'un monde dans lequel sont placées des entités. Une entité étant défini, pour simplifier, par une pose (matrice 4x4) et une liste de vertice.
    • d'une camera, une matrice 4x4 également.


    je désire rendre à l'écran mes entités telles quelles sont définies mais en ayant un effet de parallaxe du au z de mes entités.
    Pour ce faire je vois actuellement deux approches :

    • je peux partir d'une projection orthogonale puis calculer l'effet de parallaxe à la main, cad en modifiant les poses des entités du point de vue de la camera.
      Désavantage, le jour où je vais vouloir un autre type de camera (ex perspective), il va falloir modifier du code. En plus de ne pas être générique ce code va manquer d'élégance, je préférerait que le parallaxe remonte naturellement et de manière transparente quand je fais le rendu d'une entité à l'écran.
      ex: rendu = entité * vue * camera
    • l'autre solution plus chamanique : la matrice de la camera contiendrait une projection perspective, là le parallaxe deviendrait naturel, mais sans scale/shear ! D'où le titre étrange du poste "Projection perspective isométrique" (le dernier terme étant celui qui m'a paru le plus adapté ... ou peut être pas ^^)


    La question est donc, si la deuxième solution est possible comment la réaliser !? là je suis perdu. Peut être y a-t-il d'autres solutions que je ne vois pas.

    NB: je m'impose de ne pas utiliser les fonctions dépréciées d'OpenGL 4.0, et l'utilisation de Glut et glu, principalement pour faire le travail sur les matrices à la main

    En attendant je reste dispo pour toutes discussions

    Au plaisir

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Par défaut
    Hello

    Alors tout d'abord :
    l'autre solution plus chamanique : la matrice de la camera contiendrait une projection perspective, là le parallaxe deviendrait naturel, mais sans scale/shear ! D'où le titre étrange du poste "Projection perspective isométrique" (le dernier terme étant celui qui m'a paru le plus adapté ... ou peut être pas ^^)
    Si j'ai bien compris, je serai bien curieux de voir çà. Une matrice est une application linéaire, à la diférence d'une projection en perspective. Je me permet donc de douter de cette possibilité d'un point de vue mathématique.

    Par contre, OpenGL a une fonctionnalité fort sympathique (à mon opinion). En effet, dans le vertex shader (valable aussi pour le geometry et tesselation evaluation shader), les 3 composantes de gl_Position.xyz sont divisé par gl_Position.w (juste avant l'étape de rasterisation pour être plus précis). Donc pour l'effet de perspective, en notant "gl_Position = maMatrice * maPositionGlobal", il te suffit de généré la dernière ligne de ta matrice "maMatrice" en fonction de ton angles d'ouverture de camera.

    En espérant avoir répondu à ta question.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Par défaut
    Salut LastSpear, et merci pour ta réponse,

    c'est une piste très intéressante avec des notions que je ne connais pas en plus ! merci je vais pouvoir creuser un peut plus dans le monde de gl


    encore merci

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