Was ist OpenGL®-Kommissionierung?

Bei der OpenGL®-Auswahl in der Computerprogrammierung wird ermittelt, welches Objekt in einer dreidimensionalen (3D-) Szene sich an einem bestimmten Punkt auf dem Bildschirm befindet, sobald die Szene gerendert wurde. Es kann sich auch auf das Lokalisieren mehrerer Objekte an einem Punkt oder in einer Box beziehen. In den meisten Fällen wird OpenGL®-Auswahl verwendet, um zu bestimmen, welches 3D-Objekt auf dem Bildschirm ein Benutzer mit einem Mauszeiger auswählen möchte. Obwohl diese Operation einfach zu sein scheint, gibt es einige Feinheiten, wie OpenGL® eine Szene rendert, die sie ziemlich komplex machen können. Darüber hinaus treten bei bestimmten Grafikkarten und Treibern Störungen auf, die dazu führen können, dass die OpenGL®-Auswahlfunktion fehlschlägt und falsche Ergebnisse zurückgibt.

Wenn ein Benutzer eine 3D-Szene auf einem Computermonitor betrachtet, wird das resultierende Bild als Rendering der Szene bezeichnet. Die Szene wird tatsächlich als Sammlung primitiver Formen oder Polygone gespeichert, die selbst nur Sammlungen von 3D-Punkten im Raum der Szene sind. Der Computer verwendet Weltkoordinaten, die manchmal als absolute Koordinaten bezeichnet werden, um die grundlegendsten Funktionen auszuführen, mit denen Objekte in der Szene bearbeitet werden. In den meisten Anwendungen kann der Benutzer die Ansicht der Szene aus verschiedenen Winkeln steuern, sodass Objekte aus verschiedenen Perspektiven betrachtet werden können. Der virtuelle Standort des Benutzers innerhalb der Szene wird als Kamerawinkel oder Kameraposition bezeichnet.

Die Komplexität der OpenGL®-Auswahl ergibt sich aus der Bestimmung der Position der Maus auf dem zweidimensionalen Bildschirm (2D) aus einer möglicherweise willkürlichen Position und einem Winkel innerhalb der Szene, der Kameraposition. Da das Rendering aus Sicht des menschlichen Betrachters wirklich 2D ist, kann der Benutzer die Tiefe des Mausklicks innerhalb der Szene nicht angeben. Die OpenGL®-Kommissionierfunktion löst dieses komplexe Problem auf zwei Arten.

Das erste ist, dass die Funktion, anstatt eine Reihe separater Berechnungen durchzuführen, um zu übersetzen, wo sich der Betrachter abstrakt befindet, und dann ein Objekt im Rendering-Fenster zu finden, die Szene tatsächlich so rendert, wie es normalerweise funktioniert, mit der Ausnahme, dass das Rendering verwendet wird Wird die Auswahl nicht angezeigt, wird sie nur zur Berechnung der korrekten Position von Objekten verwendet. Der Unterschied besteht darin, dass nicht der gesamte für den Benutzer sichtbare Bereich gerendert wird, sondern nur der Bereich, in dem sich die Maus befindet. Das bedeutet, dass sich alle gerenderten Objekte technisch an der Stelle befinden, an der sich der Mauszeiger befindet.

Das zweite Problem, nämlich dass keine Möglichkeit besteht, die Tiefe eines ausgewählten Bereichs anzugeben, wird gelöst, indem alle Objekte zurückgegeben werden, die sich unter den Mauskoordinaten in der Szene befinden. Die OpenGL®-Auswahlfunktion gibt alle Objekte in einem Array sowie deren Entfernung vom Standort des Betrachters zurück. Auf diese Weise kann ein Programm bei Bedarf schnell das nächstgelegene Objekt finden.

Eine Möglichkeit zur Visualisierung der OpenGL®-Auswahl besteht darin, sich eine Linie vorzustellen, die in der 3D-Programmierung manchmal als Strahl bezeichnet wird und sich von der Position des Mauszeigers in die Szene und von der Position des Betrachters weg bewegt. Jedes Objekt, das dieser Strahl berührt, wird einer Reihe von Objekten hinzugefügt, zusammen mit dem Abstand zum Betrachter. Dies ist eine sehr einfache Erklärung, wie eine Form der OpenGL®-Kommissionierung funktioniert.

Eine weitere Methode zur Objektauswahl in OpenGL® besteht darin, ein Objekt anhand der Farbe zu lokalisieren. Diese Methode kann erheblich schneller sein. Bei dieser Methode wird die Szene gerendert, aber statt Beleuchtung und Textur auf die Objekte anzuwenden, werden sie stattdessen mit einer einzelnen, einfachen Farbe gerendert. Jedes Objekt oder jede Gruppe von Objekten hat eine eigene Farbe. Die Szene wird nur im Speicher gerendert und nicht angezeigt. Dies hat also keinen Einfluss darauf, was der Benutzer sieht. Anstatt nach 3D-Kollisionen zwischen Objekten zu suchen, wird stattdessen die Farbe an der Position des Mauszeigers zurückgegeben, und diese Farbe korreliert mit einem bestimmten Objekt.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?