Qu'est-ce que l'OpenGL® Picking?
La sélection OpenGL® dans la programmation informatique est le processus de détermination de l'objet dans une scène tridimensionnelle (3D) située à un point donné à l'écran une fois la scène rendue. Il peut également se référer à la localisation de plusieurs objets à un point ou à l'intérieur d'une boîte. Le plus souvent, la sélection OpenGL® est utilisée pour déterminer quel objet 3D à l'écran qu'un utilisateur tente de sélectionner avec un curseur de souris. Bien que cette opération puisse sembler simple, il existe plusieurs subtilités dans la façon dont OpenGL® rend une scène qui peut la rendre assez complexe. De plus, il existe des problèmes intrinsèques dans certaines cartes graphiques et pilotes qui peuvent faire échouer la fonction OpenGL® de sélection et renvoyer de faux résultats.
Lorsqu'un utilisateur regarde une scène 3D sur un moniteur d'ordinateur, l'image résultante est connue sous le nom de rendu de la scène. La scène est en fait stockée en mémoire comme une collection de formes ou de polygones primitifs, qui ne sont eux-mêmes que des collections de points 3D dans l'espace de lascène. L'ordinateur utilise des coordonnées mondiales, qui sont parfois appelées coordonnées absolues, pour remplir la plupart des fonctions de base qui manipulent des objets dans la scène. Dans la plupart des applications, l'utilisateur est capable de manœuvrer la vue de la scène sous différents angles afin que les objets puissent être vus dans différentes perspectives. L'emplacement virtuel de l'utilisateur dans la scène est appelé l'angle de la caméra ou la position de la caméra.
La complexité de la sélection OpenGL® provient de la détermination de l'emplacement de la souris sur l'écran bidimensionnel (2D) à partir d'une position et d'un angle éventuellement arbitraires dans la scène, la position de la caméra. De plus, comme le rendu du point de vue du spectateur humain est vraiment 2D, il n'y a aucun moyen pour l'utilisateur de fournir la profondeur du clic de la souris à l'intérieur de la scène. La fonction OpenGL® Picking résout ce problème complexe de deux manières.
La première est que, au lieu de perEn formant une série de calculs distincts pour traduire où le spectateur est abstrait, puis trouver un objet dans la fenêtre de rendu, la fonction rend réellement la scène comme elle le fait normalement, à l'exception que le rendu utilisé pour la sélection n'est pas affiché, il n'est utilisé que pour calculer les positions correctes des objets. La différence est que, au lieu de rendre toute la zone qui serait visible pour l'utilisateur, il ne fait que la zone où se trouve la souris. Cela signifie que tous les objets rendus sont techniquement au point où se trouve le pointeur de la souris.
Le deuxième problème, à savoir n'ayant aucun moyen d'indiquer la profondeur d'une zone sélectionnée, est résolu en renvoyant tous les objets qui sont sous les coordonnées de la souris dans la scène. La fonction OpenGL® Picking Renvoie tous les objets dans un tableau ainsi que dans quelle mesure ils sont de l'emplacement du spectateur. Cela permet à un programme de trouver rapidement l'objet le plus proche si vous le souhaitez.
Une façon de visualiser OLa cueillette de Pengl® est d'imaginer une ligne, parfois appelée un rayon en programmation 3D, se déplaçant de l'emplacement du pointeur de la souris dans la scène et loin de l'emplacement du spectateur. Chaque objet que ce rayon touche est ajouté à un tableau d'objets, ainsi que de la distance de la visionneuse. Ceci est une explication très simple de la façon dont une forme de cueillette OpenGL® fonctionne.
Une autre méthode de sélection d'objets dans OpenGL® implique de localiser un objet par couleur, et il peut être considérablement plus rapide. Cette méthode rend la scène mais, au lieu d'appliquer l'éclairage et la texture aux objets, ils sont plutôt rendus avec une seule couleur simple. Chaque objet ou groupe d'objets a sa propre couleur distincte. La scène n'est rendue qu'en mémoire et n'est pas affichée, ce qui n'affecte pas ce que l'utilisateur voit. Au lieu de chercher des collisions 3D entre les objets, la couleur à la position du curseur de la souris est renvoyée à la place, et cette couleur est en corrélation avec un objet spécifique.