Un petit programme pour voir comment faire pour savoir sur quoi est la souris en opengl

Soyez le premier à donner votre avis sur cette source.

Vue 4 744 fois - Téléchargée 478 fois

Description

Hello,

Aprés mon Cube, je vous présente ce code, qui permet de simplifier l'accés à : 'la connaissance de la partie du dessin 3d qui est sous la souris'

J'ai pas trop pousser mais l'idée y est, deux rectangle qui se chevoche portant deux numéro, la fenétre dos par derriére (merci glut) qui donne les rectangle sur lesquels on a cliqué.

J'en dit pas plus, si vous avez des questions, c'est pas dur, je lis les remarques ;o)

Trident,
Assé content de ses re-début en c++,
Mais faut réviser les partiels quand même.

Conclusion :


Ce n'est qu'une sorte de mini tutorial, pour avoir l'idée de base, il faudra construire tout le systéme qui explote cette option de OpenGl (peut-étre pour mon petit grand projet)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
24
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
12 décembre 2004

hihi,
Dans le buffer la distance donné est multiplié pas 0xffffffff (voir doc opengl) donc tu divize le Z par 0xffffffff et tu passe les cordonnée de la souris et ce résultat dans la matrice inverse, ca te donne la position du point cliquer dans l'espace du dessin.

la ref:
Depth values (which are in the range [0,1]) are multiplied by 2^32 - 1, before being placed in the hit record.

sur la page : http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/selectbuffer.html

G pas le code sous la main mais je me rappel l'avoir fait et ca marché trop bien (j'ai cher 3h mon point rouge sur le plan blanc ... je le voyais pas il était sous la souris .... k con), je rentre chez mes parents mercredi matin, je pourrais peut étre vous envoyer le dit code a ce moment là (si je ne sky pas).


Juste une question ... trés conne je présume
j'ai créé une classe abstraite Objet avec la fonction virutel dessin et une classe derivée cube avec la meme fonction dessin mais plus abstraite, je me donne une liste d'objet et qd je demande de faire le dessin des objets de la dite liste, j'ai un jolie bug.... si qqun peu m'expliquer ... enfin, c po grave sinon.
Messages postés
55
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
11 mai 2008

Bon, c'est toujours utils un example de picking ok. Effectivement il faut 2 passe: un pour le rendu, l'autre pour le picking (qui est effectivement plus light en calcul si on retire dans cette passe les truc inutiles)

Une question sur lequel je me suis casse pas mal le dent sans vraiment parvenir a une reponse: quel est la distance separant la position de la souris (supposée en coordonée {x,y,0}) a celle du point de la survace pointer ?

Le zDepth du picking donne n'import quoi (enfin, j'ai l'impression qu'il est just la pour ordonancer l'ensemble des survaces sous la souris), mais quel est la vrai distance Z entre la souris et la surface ?

Voila si tu repond a ca, non seulement tu aura 10/10 (depuis le temp que je cherche!) et en plus ... toute mon admiration, voila !
Messages postés
24
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
12 décembre 2004

Le probleme c'est effectivement que l'on fait deux fois le dessin (on peut utiliser les liste d'OpenGl), peut-étre qu'en utilisant deux sortie graphique (HC ou DC ??) une pour la fenétre l'autre pour le buffer de selection .... enfin, faut lire les spécification d'OpenGL.... mais je crois pas qu'on puisse.
Je pense toute fois que la méthode ne coupe pas en deux le frame-rate (en select : pas de texture à charger, pas de lumiére, mais juste si oui ou non les polygones sont affichable), puis on est pas obliger de faire du 50-50, un select pour dix tracé peux suffire, ou alors un select que si il y a eu click ou mouvement de la souris.
Aussi, on est pas obliger de faire des dessins détaillé pour le select, si le prog prévois différent nivo de détail on fait le select en low.....
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

ai lu ton code, et je trouve regrettable de devoir envoyer deux fois les commandes de vertexes (une fois pr le SELECT et une fois pr le dessin), t certain qu'il y a pas une autre manière plus élégante ? ça me gêne un peu ce genre de trucs :-(

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.