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 :

Visualisation stereoscopique par lunette a filtre


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut Visualisation stereoscopique par lunette a filtre
    Bonjour,

    je me lance dans le développement d'application 3D avec openGL et je souhaiterais creer une petite application utilisant la visualisation stéréoscopique par lunettes à filtres colorés pour afficher en "vrai" 3D écran une scène 3D.

    Mon problème est que je ne trouve aucune documentation ni tutoriel sur ce sujet. Si quelqu'un pouvait m'indiquer ou trouver un bon tutoriel sur ce sujet je serais preneur?

    merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    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 819
    Par défaut
    Salut

    Citation Envoyé par nzo70 Voir le message
    Mon problème est que je ne trouve aucune documentation ni tutoriel sur ce sujet.
    Gogole avec "opengl anaglyphe"... y'a de quoi faire...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Cherche avec les termes de "stéréo passive" tu aura peut etre plus d'informations

  4. #4
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    je n'ai pas le code sous les yeux mais j'avais fait un projet comme ca il y a quelques années, le principe est assez simple:

    Mettons que le centre de ta scene est en (0, 0, 0) et que normalement tu positionnerais ta caméra en (0, 0, -100)

    Le but est de prendre un point de vue pour chaque "oeil", avec un filtre de couleur différent pour chacun, et d'additionner les 2 images.

    1. Oeil geuche: Tu places ta caméra en (-10, 0, -100), tu dessines ta scene, et tu ajoute un filtre de couleur rouge en utilisant le blending
    2. AVANT, de faire le traditionnel glSwapBuffers, tu redessines le tout pour l'oeil droit: caméra en (10, 0, -100), avec un filtre bleu ou vert (selon tes lunettes)
    3. Tu fais ton Swapbuffers là et les 2 images se superposent.

    Je pourrai fouiller dans mon code de l'epoque si tu veux plus de détails car là je raconte ca de tête, mais en gros c'est ca.
    Je me rappelle par contre que pour que ca marche bien il fallait
    - jouer avec les parametres de la position de la camera pour chaque oeil jusqu'à obtenir quelque chose de satisfaisant
    - Dessiner tous les objets en gris pour que les filtres marchent au mieux.

    Bonne chance!

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Donc si j ai bien compris il faut d'abord creer la scene de départ comme pour l afficher "normalement"

    Puis je place une camera a gauche, je fait appel a la scene et j applique un filtre rouge( j ai des lunettes rouge et bleues)

    Enfin je place une camera a droite, je fais appel a la meme scene et j applique un filtre bleu

    Ensuite je fais le SwapBuffer. Mais j ai vu sur le net qu 'il fallait utiliser un tampon accumulation (apparement avec la fonction glAccum?) pour que les images se superposent?

    Au final j ai 3 scene : la scene "normale", une pour l oeil gauche et une pour l oeil droit ou alors seulement 2 scenes : une pour l oeil gauche et une pour le droit?

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Au fait, y a t il des objets qui se prettent mieux que d autres à ce type de visualisation?

  7. #7
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Re,

    désolé je n'avais pas vu ta réponse.

    au final tu n'as que 2 prises de vues de la scene, une pour chaque oeil.

    donc: 1 seule scene, mais dessinée 2 fois avec a chaque fois un autre point de vue.

    concernant le tampon d'accumulation...il me semble qu'à l'époque j'avais fait sans...mais je dis peut être des bêtises car ca commence a dater...faut que je remette la main sur ce vieux projet et je pourrai te donner plus de détails.

    Au fait, y a t il des objets qui se prettent mieux que d autres à ce type de visualisation?
    Pas sûr de bien comprendre ta question...tu parles des objets à afficher?

  8. #8
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    oui quand je parle d objet je parle d objet a afficher! (Par exemple est ce qu 'un cube produit un meilleur effet qu un cone)

    Merci de ton aide

  9. #9
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Nvidia propose des drivers 3D gratuits :
    http://www.nvidia.com/object/3D_Vision_Overview.html

    Ils supportent les shutter glass LCDs, les lunettes colorées (anaglyphes), les écrans polarisés, et d'autres formes plus exotiques.

    Si tu veux programmer des jeux qui fonctionnent dans cette configuration, tu peux commencer par regarder leur doc ou les contacter pour avoir accès à leur API.

    Pour les objets :
    - les objets en relief ressortent mieux que les objets plats.
    - certains effets transparents et postprocessing peuvent mal s'afficher (dans l'espace de l'écran : screen space). Des jeux peuvent proposer l'option de désactiver ces effets ou essayer de les combiner de manière "propre" en 3D mais c'est souvent plus complexe.
    - la visée "iron sight" et autres pointeurs de vue sont le plus souvent inefficaces. Par exemple le viseur d'un pistolet fonctionne dans la réalité avec un oeil fermé. Un oeil fermé dit suppression de l'effet 3D.. Les jeux ne sont pas encore suffisamment intelligents pour gérer cela, donc il faut remplacer le viseur iron sight par une alternative type visée laser qui affiche un point rouge dans la ligne de vue (et surtout à la bonne distance pour calculer le parallaxe des deux yeux).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  10. #10
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Une question qui va peut etre vous sembler un peu bete : comment je fais pour mettre un filtre rouge ou bleu? je met une lumiere bleue ou rouge qui eclaire l objet? ou il y a un autre moyen?

    merci

  11. #11
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Bonjour,

    c'est bon j'ai désormais une scene en "vrai" 3D mais il me reste tout de même un probleme. En effet puisque j'affiche une fois la scene avec un filtre rouge et une autre fois avec un filtre bleu le résultat obtenue est de couleur "rose" (mélange du rouge et du bleu) mais je n'arrive pas a modifier cette couleur. Et si je change la couleur des filtres evidémment mes lunettes ne fonctionnent plus donc ce n'est pas une solution.

    Comment puis je faire cela?

    merci

  12. #12
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut!

    Perso j'avais le même probleme à l'époque...et je n'ai eu le temps de le contourner vu que c'était un mini-projet...

    Mais il doit bien y avoir une solution puisque certains jeu qui ont un mode 3D avec lunettes à filtres ( au hasard Trackmania nations united) le font avec un rendu de couleurs proche de l'original...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Par défaut
    Je pense qu'il faudrait effectuer une troisième passe affichant la scène en "mode normal"


    EDIT: sinon j'ai une autre idée. Je suppose que tu fais ton système en deux passes, une rouge et un bleue non ?
    Si oui, voilà mon idée :
    pour chaque objet ta passe "rouge" n'affiche que les composantes rouges de ton objet, et la seconde que les composantes bleues.
    Pour faire plus simple voilà une valeur RGBA dans un unsigned int (donc 32 bits) :
    0x AA BB GG RR
    He bien ta première passe affiche :
    0xAA 00 GG/2 RR
    et la seconde :
    0xAA BB GG/2 00
    Le vert étant "coupé" entre les deux. Le résultat du rouge+bleu+vert(mixé) te redonneras logiquement la couleur d'origine sur l'objet, et ses contours sont rouges/bleus.
    Tu peux également séparer en deux l'alpha si il n'est pas opaque, de plus ceci devrait accentuer l'effet 3D.

  14. #14
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Citation Envoyé par nzo70 Voir le message
    Bonjour,
    c'est bon j'ai désormais une scene en "vrai" 3D mais il me reste tout de même un probleme. En effet puisque j'affiche une fois la scene avec un filtre rouge et une autre fois avec un filtre bleu le résultat obtenue est de couleur "rose" (mélange du rouge et du bleu) mais je n'arrive pas a modifier cette couleur. Et si je change la couleur des filtres evidémment mes lunettes ne fonctionnent plus donc ce n'est pas une solution.

    Comment puis je faire cela?
    Ton problème c'est que la deuxième couleur n'est pas du "bleu" mais du Cyan. Cyan c'est la couleur complémentaire du rouge.

    Ceci dit la couleur est bien présente "globalement" mais chaque oeil verra une couleur différente ce qui peut occasionner de la fatigue visuelle par rapport à une solution à base de LCD actif ou de polarisation d'image (qui préserve la couleur pour les deux yeux).

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  15. #15
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    J'avais écrit un petit article qui présentait les différentes solutions possibles pour la représentation stéréoscopique :
    http://blogs.wefrag.com/LeGreg/2009/...ent-ca-marche/

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  16. #16
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Citation Envoyé par dridri85 Voir le message
    Le vert étant "coupé" entre les deux. Le résultat du rouge+bleu+vert(mixé) te redonneras logiquement la couleur d'origine sur l'objet, et ses contours sont rouges/bleus.
    Euh désolé mais ça ne peut pas marcher. L'intéret de l'anaglyphe c'est la séparation des canaux (color channels), si tu combines deux sources dans un seul canal (le vert) alors l'un des yeux (celui qui filtre le vert) verra une partie des deux images sources (aussi appelé "ghosting").

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Par défaut
    Citation Envoyé par LeGreg Voir le message
    Euh désolé mais ça ne peut pas marcher. L'intéret de l'anaglyphe c'est la séparation des canaux (color channels), si tu combines deux sources dans un seul canal (le vert) alors l'un des yeux (celui qui filtre le vert) verra une partie des deux images sources (aussi appelé "ghosting").
    Tu es sûr de ça ? Car par exemple si pour un pixel le vert vaut 128, he bien la première passe en affiche 64 puis la seconde 64, a moins que tu n'utilises pas la méthode additive pour le blending ?

  18. #18
    Membre éprouvé Avatar de Robxley
    Homme Profil pro
    Docteur ingénieur traitement d'image
    Inscrit en
    Mai 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Docteur ingénieur traitement d'image

    Informations forums :
    Inscription : Mai 2009
    Messages : 158
    Par défaut Une image par frame
    Bon je sais que j'arrive un peu tard, mais comme on dit mieux vaut tard que jamais hein ^^.

    Il y a un bout de temps j'avais aussi effectué un petit projet sur la vision "vrai 3d" à l'aide d'une méthode anaglyphe. Et je me souviens que j'avais eu pas mal de soucis aussi avec le mélange des couleurs de l'image de chaque œil.

    La solution que j'avais trouvée pour régler le problème étais d'afficher une image pour l'œil droite au premier frame, puis l'image pour l'œil gauche au frame suivant, et ainsi de suite, en continuant d'alterner. Ça évite de faire des mélanges un peu galère.

    Cependant, En gros pour un écran de 60hz (60 image par second, ips),si ton application opengl est suffisamment rapide pour calculer 60ips, çà te donne 30 images pour l'œil droit, et 30 images pour l'œil gauche, çà te fait passer donc à une fréquence d'affichage de la scène à 30hz. Mais bon c'est largement suffisant pour nos petits yeux. A savoir le cinéma a une moyen de 24ips. L'idéal c'est si tu as un écran qui accepte des plus hautes fréquence c'est sur.

    Autre petit inconvénient ba faut contrôler les frames affichées pour contrôler l'affichage de la scène pour l'œil droite et l'œil gauche à fin de les alterner correctement. Enfin pour ça faut regarder du coté de la synchronisation verticale (option de ta carte graphique) histoire d'avoir le même nombre d'ips que la fréquence de ton écran et dans ce cas là ça revient à avoir un simple booléen dans ta boucle générale de ton application que tu changes d'état à chaque passe (image) et te servant de référence par exemple 0 pour l'œil droit et 1 pour l'œil gauche et le tour est jouer.

    Si ça peut tirs aidé ^^

Discussions similaires

  1. [MLD] Base de données exploitable par un "questionnaire filtre"
    Par Crystelle dans le forum Schéma
    Réponses: 1
    Dernier message: 22/08/2011, 15h45
  2. [1.x] Mettre une valeur par défaut à un filtre
    Par jfsenechal dans le forum Symfony
    Réponses: 5
    Dernier message: 13/01/2011, 17h10
  3. [Vxi] Fonction par rapport à un filtre
    Par Christophe29 dans le forum Webi
    Réponses: 9
    Dernier message: 14/12/2010, 15h51
  4. Visualiser rapidement la(les) colonnes filtrées
    Par Danix dans le forum Conception
    Réponses: 3
    Dernier message: 30/10/2009, 08h53
  5. Réponses: 1
    Dernier message: 11/05/2009, 17h39

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