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 :

OpenGl ES picking


Sujet :

OpenGL

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut OpenGl ES picking
    Bonjour à tous.


    Voila je suis en plein développement d'une application Android dans laquelle je dois gérer une voiture en 3d.
    Pour cela j'utilise le moteur 3d jcpt-ae qui me permet de charger une image au format 3ds.

    Cependant, j'aimerais définir des zones sur cette image. Ainsi, quand l'utilisateur cliquera sur une partie de la voiture (après l'avoir pivotée ou zoomé) je voudrais savoir si il a cliqué sur un pneu ou le coffre ou une autre partie...


    Malheureusement je ne sais pas comment faire. j'ai effectué quelques recherches et je pense qu'il faut que j'utilise le "picking" mais je ne suis pas sur.

    J'espère que quelqu'un pourra me venir en aide.

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Bonjour,

    Je ne connais pas ce moteur 3D OpenGL ES, mais il devrait y avoir logiquement une scène de picking.
    Si il n'y en a pas, il serait bien d'en créer une.
    La scène de picking, est une représentation qui permet justement de savoir quel "mesh" est sélectionné.

  3. #3
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Une solution :

    - rendre les différents objets que tu veux picker dans une texture avec une "couleur" par objet.

    Tu peux par exemple utiliser une texture r8 ( 256 objets maximum dans ce cas ).
    Tu peux optimizer ça en ne rendant que les objets qui sont dans le "frustrum" de la souris et n'utiliser une texture que de la résolution du morceaux autour de la souris.
    Ensuite tu dois accéder à la texture aux coordonnées de la souris pour récupérer la "couleur" de qui donnera l'objet.

  4. #4
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut
    merci pour vos réponses.


    Le truc qui m'interesse plus enfait est l'astuce qui me permettrait de définir des zones sur un objet.

    Hier, j'ai tenté une technique qui consiste a placer des objets sur les zones qui m'interessent et puis après j'utilise le picking pour savoir la où j'ai clické. ça marche plutot bien mais cela m'oblige a creer autant d'objet que de zones qui m'interessent...

    je ne sais pas s'il peut y avoir une autre méthode peut etre moins lourde du fait que le développement se fait sur smartphone...

  5. #5
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Le problème de la solution de MatRem est au niveau des performances, il faut rendre d'autres frames, ce qui sur un smartphone peu être limitant et lire les données dans le buffer, ce qui est limitant aussi.

    La scène de picking serait à mon avis une meilleur solution pour de l'embarqué.
    Personnellement j'ai utilisé la version OpenGLES 1.1 d'irrlicht pour faire cela. Le moteur possède une scène de picking.

    Hier, j'ai tenté une technique qui consiste a placer des objets sur les zones qui m'interessent et puis après j'utilise le picking pour savoir la où j'ai clické. ça marche plutot bien mais cela m'oblige a creer autant d'objet que de zones qui m'interessent...
    Désolé, je n'ai pas compris la technique utilisé, concrètement cela fonctionne comment ?

  6. #6
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut
    a la base je voulais différencier plusieurs zone sur mon objet 3d qui est une voiture.

    cependant pour savoir ou l'utilisateur clic j'ai placer différents objets géométriques cube,cylindre etc... aux différents endroits avec lesquels il est possible d'intéragire.

    c'est pour cela que dans le cas ou il me faut 20 zone possibles de clic sur la voiture je dois prendre 20 objets différents et les placer sur la voiture directement en étant transparant pour passer inaperçu.

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    c'est pour cela que dans le cas ou il me faut 20 zone possibles de clic sur la voiture je dois prendre 20 objets différents et les placer sur la voiture directement en étant transparant pour passer inaperçu.
    Quel est la technique de picking ?
    - Par couleur ?
    - Par scène de picking ?
    - Autre ?

    Cela ressemble à une scène de picking, mais je ne comprends pas le fait de rendre transparent un objet, il suffit de l'exclure de la scène de rendu et de le garder dans la scène de picking.
    Et si il faut 20 parties cliquables, soit le "mesh" de base est éclaté en 20 sous parties, soit des objets de type "bounding box" entoure les objets.
    Je ne vois pas d’autres techniques plus simples pour le mettre en place.

Discussions similaires

  1. OpenGL / LWJGL Picking
    Par MackValentine dans le forum 3D
    Réponses: 1
    Dernier message: 03/09/2015, 17h38
  2. Réponses: 0
    Dernier message: 11/04/2012, 11h47
  3. [Source][OpenGL] Le Picking
    Par yvesall dans le forum Contribuez
    Réponses: 6
    Dernier message: 20/09/2010, 14h03
  4. besoin d'aide opengl et picking
    Par steebatc dans le forum OpenGL
    Réponses: 2
    Dernier message: 16/03/2009, 20h05
  5. QT OpenGL Picking
    Par Teufboy dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/07/2005, 07h49

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