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 :

Ne garder que ce qui est entre deux plans


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Ne garder que ce qui est entre deux plans
    Bonjour,
    je débute avec OpenGL (en fait , j'utilise pyOpenGL mais une réponse en C-C++ ne posera aucun problème). J'ai une famille de quadrilatère contenu dans une DisplayList. Je voudrais ne garder que ce qui se trouve entre les plans d'équations z=3 et z=0 en leur attribuant la couleur bleue par exemple.

    Quelqu'un peut-il me donner des indications sur ce sujet ?

    PS : je peux mettre ici mon code Python si besoin.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Par défaut
    Hello,

    les plan near et far devraient te permettre de faire ca en utilisant le clipping openGL.

    regarde ton "glFrustum" (gluPerspective peut-etre) ou ton "glOrtho"

    genre : glOrtho (-10,10,-10,10, 0, 3);

    ca doit le faire, par contre, c'est limité a l'axe Z tu pourra pas coupé un biais. mais ca semble correspondre a ton besoin.

    HopeLeaves

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    En fait,
    je veux dans une même scène avoir par exemple le haut d'un quadrilatère en bleu et le bas en rouge, où haut sera pour les points au-dessus d'un plan, et bas pour ceux au-dessous de ce plan.

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Mon idée serait d'arriver à quelque chose comme dans le 2nd graphique de ce document PDF.

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Si je comprends bien tu voulais utiliser des plans pour chaque tranche ? Si c'est bien le cas, je ne suis pas certain que ce soit la bonne approche. Personnellement, je m'orienterais vers une de ces 2 solutions:

    1. tu peux utiliser des shaders => le vertex shader est juste un pass-through qui transfère le sommet au pixel shader. Ce dernier compare le Y (et non Z en OpenGL) à divers seuil, et selon le seuil choisis une couleur. Il n'y a pas besoin d'une version récente pour faire ça, c'est faisable depuis les toutes premières CGs utilisant les shader.

    2. impossible d'utiliser des shaders => tu sous-divises ta géométrie de façon à avoir 2 sommets séparant chacun des quads à cheval sur 2 seuils au niveau du plan de seuillage

    Edit: dans les 2 cas, et pour correspondre à ton image, la normale doit être orientée vers le point de vue, et si la normale est effectivement réorientée, tu choisis ta couleur puis tu la rends plus pâle.

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    tu peux utiliser des shaders => le vertex shader est juste un pass-through qui transfère le sommet au pixel shader. Ce dernier compare le Y (et non Z en OpenGL) à divers seuil, et selon le seuil choisis une couleur.
    Je n'ai pas encore abordé cet aspect de OpenGL même si j'ai vu un exemple qui montre que cela est puissant. Pourrais-tu me donner des précisions ? Comment avoir des pixels en rouge pour Y entre -1 et 0, vert entre 0 et 0.5 et bleu entre 0.5 et 1 ?

    A défaut, un lien intéressant sur le sujet pourrait convenir.

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

Discussions similaires

  1. [WD-2003] Supprimer le texte qui est entre deux lignes à plusieurs reprises
    Par VinceVince54 dans le forum VBA Word
    Réponses: 5
    Dernier message: 24/04/2014, 16h24
  2. [WD-2010] Supprimer le texte qui est entre deux lignes
    Par f69815 dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/11/2011, 21h50
  3. [RegEx] Comment récupérer un texte qui est entre deux balises ?
    Par sandddy dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2007, 18h27
  4. Réponses: 25
    Dernier message: 03/10/2006, 11h21
  5. Extraîre une chaîne qui est entre deux chaînes.
    Par Horrigan dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 19h01

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