Was ist OpenGL® Picking?
OpenGL®-Auswahl in der Computerprogrammierung ist der Prozess, um zu bestimmen, welches Objekt innerhalb einer dreidimensionalen (3D) Szene an einem bestimmten Punkt auf dem Bildschirm liegt, sobald die Szene gerendert ist. Es kann sich auch darauf verweisen, mehrere Objekte an einem Punkt oder in einer Box zu lokalisieren. In den meisten Fällen wird die OpenGL® -Picking verwendet, um zu bestimmen, welches 3D -Objekt auf dem Bildschirm ein Benutzer mit einem Mauszeiger ausgewählt hat. Obwohl diese Operation einfach zu sein scheint, gibt es mehrere Feinheiten, wie OpenGL® eine Szene macht, die sie ziemlich komplex machen kann. Darüber hinaus gibt es in bestimmten Grafikkarten und Treibern intrinsische Störungen, die dazu führen können, dass die OpenGl® -Picking -Funktion fehlschlägt und falsche Ergebnisse zurückgibt. Die Szene wird tatsächlich in Erinnerung als Sammlung primitiver Formen oder Polygone gespeichert, die selbst nur Sammlungen von 3D -Punkten im Raum desSzene. Der Computer verwendet Weltkoordinaten, die manchmal als absolute Koordinaten bezeichnet werden, um die meisten grundlegenden Funktionen auszuführen, die Objekte in der Szene manipulieren. In den meisten Anwendungen kann der Benutzer die Sicht der Szene auf verschiedene Winkel manövrieren, sodass Objekte in verschiedenen Perspektiven gesehen werden können. Der virtuelle Standort des Benutzers in der Szene wird als Kamerawinkel oder Kameraposition bezeichnet.
Die Komplexität der OpenGl®-Picking 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 der Perspektive des menschlichen Betrachters wirklich 2D ist, gibt es für den Benutzer keine Möglichkeit, die Tiefe des Mausklicks in die Szene zu liefern. Die OpenGl® -Picking -Funktion löst dieses komplexe Problem auf zwei Arten.
das erste ist das anstelle von proBilden Sie eine Reihe separater Berechnungen, die übersetzt werden, wo der Betrachter abstrakt ist, und findet dann ein Objekt im Rendernfenster. Die Funktion rendert die Szene tatsächlich so, wie sie normalerweise funktioniert, mit der Ausnahme, dass das für die Auswahl verwendete Rendering nicht angezeigt wird. Es wird nur verwendet, um die richtigen Positionen der Objekte zu berechnen. Der Unterschied besteht darin, dass anstatt den gesamten Bereich zu rendern, der für den Benutzer sichtbar wäre, nur den Bereich, in dem sich die Maus befindet, sich befindet. Dies bedeutet
Das zweite Problem, nämlich keine Möglichkeit, die Tiefe eines ausgewählten Bereichs anzuzeigen, wird gelöst, indem alle Objekte zurückgegeben werden, die sich unter den Mauskoordinaten in der Szene befinden. Die OpenGL® -Picking -Funktion gibt alle Objekte in einem Array zurück, und wie weit sie vom Standort des Zuschauers entfernt sind. Dadurch kann ein Programm bei Wunsch schnell das nächste Objekt finden.
Eine Möglichkeit, O visualisierenPEGGL® Picking ist sich eine Linie vorzustellen, die manchmal als Strahl in 3D -Programmierung bezeichnet wird und sich vom Ort des Mauszeigers in die Szene und vom Standort des Betrachters befindet. Jedes Objekt, das dieser Strahl berührt, wird einer Reihe von Objekten hinzugefügt, und wie weit er vom Betrachter entfernt ist. Dies ist eine sehr einfache Erklärung, wie eine Form der OpenGl® -Picking funktioniert.
Eine weitere Methode zur Objektauswahl in OpenGl® besteht darin, ein Objekt nach Farbe zu lokalisieren, und es kann erheblich schneller sein. Diese Methode macht die Szene, aber anstatt Beleuchtung und Textur auf die Objekte anzuwenden, werden sie stattdessen mit einer einzigen 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 wirkt sich daher nicht auf das aus, was der Benutzer sieht. Anstatt nach 3D -Kollisionen zwischen Objekten zu suchen, wird die Farbe an der Position des Mauszeigers stattdessen zurückgegeben, und diese Farbe korreliert mit einem bestimmten Objekt.