2011-02-18 7 views
1

Supposons que j'ai 3 cubes dans l'emplacement aléatoire/rotation qui sont visibles dans la fenêtre. Je veux être capable de détecter si le cube a été touché si je touche (ou cliquez sur l'émulateur) un cube spécifique. Si je touche juste l'espace vide au lieu d'un cube, cela devrait également être correctement détecté. Je sais qu'il y a un rappel onTouchEvent que vous écrasez sur une vue, mais cela ne me donne que la coordonnée x, y de l'endroit où le contact s'est produit. Je recherche une solution basée sur OpenGL-ES et plus spécifiquement pour une application Android basée sur Java.Comment détecter quel objet 3D a été touché?

Répondre

2

Il peut y avoir plusieurs objets (ou aucun) sur cette coordonnée x/y. Vous devriez tous les trouver, et s'il y en a, vérifiez la coordonnée z pour voir laquelle est la plus proche de la fenêtre (et donc celle qui a été touchée).

0

souvent interrogé sur la meilleure façon de le faire sans glSelect() ... cette réponse semble bon: iPhone OpenGL ES - How to Pick

(Vous pouvez ignorer le fait qu'il est une question iOS ... l'API OpenGL ES est identique sur les deux plates-formes AFAIK).

+0

Malheureusement, je ne pouvais pas suivre la solution basée C ici et comment passer à l'application Android basée sur Java. – ace

+0

Comme indiqué dans la question, je suis à la recherche d'une solution Android basée sur Java. – ace

+0

Essayez ceci: https://groups.google.com/forum/#!topic/android-developers/nSv1Pjp5jLY ... c'est une implémentation Android de gluUnproject() qui est exactement ce que vous voulez. –

Questions connexes