2013-09-04 4 views
2

J'ai quelques objets 3D dans OpenGL dans une esquisse de traitement et j'ai besoin de savoir si la souris survole ces objets. Comme il y a une transformation constante, je ne peux pas comparer les coordonnées et la taille d'origine à la position de la souris. J'ai déjà trouvé les méthodes screenX() et screenY() qui renvoient les coordonnées de l'écran traduites après la transformation et la traduction, mais je devrais quand même obtenir la taille affichée après la rotation.Récupère les coordonnées d'écran et la taille de l'objet 3D OpenGL après transformation

Répondre

4

Déterminer quel objet la souris est sur la cueillette est appelé et il y a 2 approches principales:

  1. couleur choisir. Dessinez chaque objet en utilisant une couleur différente dans le tampon arrière (ceci est uniquement fait lors de la sélection, les objets colorés ne sont jamais affichés à l'écran). Ensuite, utilisez glReadPixels pour lire le pixel sous le curseur et vérifier sa couleur pour déterminer quel objet il est. Si la souris n'est pas sur un objet, vous obtiendrez la couleur d'arrière-plan. Plus de détails ici: Lighthouse 3D Picking Tutorial, Color Coding
  2. Ray casting. Vous lancez un rayon à travers l'emplacement du curseur dans la scène et vérifiez si elle croise des objets. Plus de détails ici: Mouse picking with ray casting

De la lecture de votre description option 1 serait probablement plus simple et faites ce que vous avez besoin.

Questions connexes