[Opengl] Comment faire du DRAG and DROP ?

Comment faire du DRAG and DROP ? [Opengl] - Programmation

Marsh Posté le 16-06-2001 à 10:56:37    

J'aimerai bouger des objets élémentaires comme des sphéres ou des cubes a la souris quelle est la meilleur solution avec Glut (ou sans ) ?
J'ai une autre petite question comment efface t-on un objet de l'écran ?
 
 
merci

Reply

Marsh Posté le 16-06-2001 à 10:56:37   

Reply

Marsh Posté le 16-06-2001 à 20:49:10    

Et bien desole... mais c'est franchement loin d'etre simple...
 
La methode, c'est de lancer un rayon dans l'espace dont l'origine correspond a la position de ta souris dans ta fenetre, et dans la direction "perpendiculaire" a ta fenetre (parce que ta fenetre n'est jamais qu'un rectangle dans l'espace, dont la position depend de la position de l'utilisateur).
Fais une recherche sur frustum, ca pourra t'aider pour te representer tout ca et trouver le rayon correspondant.
 
Ensuite tu testes l'intersection de ce rayon avec tous tes objets, et tu prends le plus proche. Et la, tu as l'objet le plus proche. Un moyen efficace de tester cette intersection (si tu as beaucoup d'objets) est de faire un partitionnement de l'espace avec un BSP tree... mais ca nous emmene un peu loin.
 
Donc c'est assez chaud... desole mais refaire un programme a la 3DSMax n'est pas trivial...

Reply

Marsh Posté le 16-06-2001 à 20:50:43    

Et pour effacer un objet de l'ecran, il suffit de ne pas l'afficher :)
Car ta fonction display() est appelee a chaque nouvelle image/frame...

Reply

Marsh Posté le 16-06-2001 à 22:06:03    

je comprends mieux pourquoi on voit jamais de petit jeux opengl qui gére le dragN'drop !!!
C'est clair que c'est pas gagné .
 
merci

Reply

Marsh Posté le 16-06-2001 à 22:08:44    

Si tu n'as pas trop d'objets, le plus simple est d'assigner des touches aux objets que tu veux bouger...
 
par ex, les fleches sont pour la position de l'oeil, les touches ijkl pour deplacer ta sphere, etc... :)

Reply

Marsh Posté le 17-06-2001 à 16:45:26    

sinon, comme tu ne cherches à faire qu'un seul lancer de rayon pour trouver l'intersection entre l'epipolaire du pointeur de la souris (la demi-droite qui part de la caméra et passe par le pointeur de la souris), tu n'es pas obligé de faire un code avec recherche logarithmique comme un BSP. Il suffit (enfin ça reste pas trivial) de regarder lors de l'affichage, si le pixel du pointeur appartient au triangle affiché. Tu notes la distance d'intersection, et tu gardes l'objert qui donne la plus petite distance. T'as deux/trois fonctions à écrire, mais ce genre de code, c'est quand t'as pas l'habitude, une mine de bugs et de cas particuliers. Donc, comme le dit tgrx, si t'en a pas vraiment besoin, passe-t-en.


---------------
-----------------------
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed