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 :

[débutant] Affichage d'une image en 3D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut [débutant] Affichage d'une image en 3D
    Bonjour à tous,

    J'ai une image dont je connais la profondeur (distance du point de la scène par rapport à la caméra) de chaque pixel et je désire afficher l'image en 3D en exploitant les informations dont je dispose sur la profondeur des pixels. Comme je débute en OpenGL, je n'arrive pas à trouver une piste pour faire des recherches..

    Merci à tous.

  2. #2
    Membre éprouvé Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Par défaut
    Salut,

    Je ne comprend pas trop ton "profondeur des pixels", ni ce que tu cherches à faire exactement.

    Ton 'image' , c'est une texture de profondeur ?

    Dans tout les cas, "afficher une image" , reviens à dessiner un quad de la taille de l'écran et y plaquer la texture de l'image.

    Enfin, explique un peu plus ce que tu cherches à faire.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Citation Envoyé par Harooold Voir le message
    Salut,

    Je ne comprend pas trop ton "profondeur des pixels", ni ce que tu cherches à faire exactement.

    Ton 'image' , c'est une texture de profondeur ?

    Dans tout les cas, "afficher une image" , reviens à dessiner un quad de la taille de l'écran et y plaquer la texture de l'image.

    Enfin, explique un peu plus ce que tu cherches à faire.
    L'image, c'est une photo d'une scène. Je dispose en plus de la photo de la profondeur de tout point de la scène par rapport à la caméra, et je veux visualiser la profondeur. c'est en fait une reconstruction 3d d'une scène.

    Voila un exemple de ce que je veux faire :

    J'ai cette image, et je connais la profondeur dans la scène réelle de chaque point :


    Je veux afficher :



    Merci

  4. #4
    Membre éprouvé Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Par défaut
    Ok, c'est plus clair

    La méthode la plus simple qui me vient à l'esprit, mais surement pas la plus optimisée, serait d'utiliser 1 quad ( carré ) par pixel.

    Ainsi , si ton image fait du 512 x 512
    Tu vas imaginer une grille 2D de taille 512 x 512 , dans chaque case tu afficheras un quad qui aura la couleur de ton pixel correspondant à la coordonée de la case dans ton image.

    Et il n'y aura plus qu'a afficher chaque quad de la grille avec la bonne profondeur, vu que tu connais deja ça pour chaque pixel.

    En gros, tu as juste à savoir charger une image en tant que texture sur le GPU, dessiner un quad en définissant les coordonées de texture et y appliquer la texture précedement chargée.

    Ca ne devrait pas être bien méchant

  5. #5
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par Harooold Voir le message
    La méthode la plus simple qui me vient à l'esprit, mais surement pas la plus optimisée, serait d'utiliser 1 quad ( carré ) par pixel.
    Ca ressemble fortemment aux voxels ta solution

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Merci pour ta réponse, mais je pense qu'il y a une solution "plus élégante" en utilisant le z-buffer, enfin je ne suis pas sûr!

    Citation Envoyé par Harooold Voir le message
    Ok, c'est plus clair

    La méthode la plus simple qui me vient à l'esprit, mais surement pas la plus optimisée, serait d'utiliser 1 quad ( carré ) par pixel.

    Ainsi , si ton image fait du 512 x 512
    Tu vas imaginer une grille 2D de taille 512 x 512 , dans chaque case tu afficheras un quad qui aura la couleur de ton pixel correspondant à la coordonée de la case dans ton image.

    Et il n'y aura plus qu'a afficher chaque quad de la grille avec la bonne profondeur, vu que tu connais deja ça pour chaque pixel.

    En gros, tu as juste à savoir charger une image en tant que texture sur le GPU, dessiner un quad en définissant les coordonées de texture et y appliquer la texture précedement chargée.

    Ca ne devrait pas être bien méchant

  7. #7
    Membre éprouvé Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Par défaut
    Bah elle est élegante ma solution ^^

    Si tu tiens vraiment à utiliser le Z buffer ... ce qui risque de te compliquer l'affaire. Quoique, cette solution n'utilise pas vraiment le Zbuffer non plus ^^

    1) Crée à partir de tes donnée de profondeur une texture de profondeur ( DEPTH CONPONENT )

    2) Récupère à partir de tes données de profondeur le nombre de "couches" de profondeur qu'il y a dans l'image ( le nombre de Z differents quoi )

    3) Active la texture de profondeur en activant la comparaison avec le R contenu dans la texture. Définit le test comme GL_EQUAL.

    4) Dessine autant de quads avec ton image comme texture qu'il y a de couche de profondeur. Ils sont donc alignés sur l'axe Z mais avec chacun un Z different trouvé en 2)

    Le test avec la texture de profondeur va éliminer tout les fragments dont le Z n'est pas égal à celui correspondant au Z dans la texture aux même coordonées. Du coup, ça gardera seulement les parties de chaque quad qui sont à la bonne profondeur par rapport à la texture de profondeur.


    Bref, je prefère la première solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Affichage d'une image
    Par isoman dans le forum MFC
    Réponses: 2
    Dernier message: 13/04/2008, 18h32
  2. [débutant] Affichage d'une image
    Par coco21 dans le forum MFC
    Réponses: 10
    Dernier message: 18/12/2006, 18h24
  3. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 10h58
  4. [Débutant] Affichage d'une grille
    Par Mathieu.J dans le forum OpenGL
    Réponses: 25
    Dernier message: 13/06/2004, 20h38
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 11h41

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