Co je OpenGL® Picking?
Výběr OpenGL® v počítačovém programování je proces určení toho, který objekt v trojrozměrné (3D) scéně je umístěn v daném bodě na obrazovce, jakmile je scéna vykreslena. Může také odkazovat na lokalizaci více objektů v bodě nebo uvnitř krabice. Výběrem OpenGL® se nejčastěji používá k určení toho, jaký 3D objekt na obrazovce se uživatel pokouší vybrat pomocí kurzoru myši. I když se tato operace může zdát jednoduchá, existuje několik jemností v tom, jak OpenGL® vykresluje scénu, která může dělat to docela složitý. Navíc u některých grafických karet a ovladačů existují vnitřní závady, které mohou způsobit selhání funkce výdeje OpenGL® a vracení falešných výsledků.
Když se uživatel dívá na 3D scénu na monitoru počítače, výsledný obrázek se nazývá vykreslení scény. Scéna je ve skutečnosti uložena v paměti jako sbírka primitivních tvarů nebo polygonů, které samy o sobě jsou jen sbírkou 3D bodů v prostoru scény. Počítač používá světové souřadnice, které se někdy nazývají absolutní souřadnice, k provádění nejzákladnějších funkcí, které manipulují s objekty ve scéně. Ve většině aplikací je uživatel schopen manévrovat pohled na scénu do různých úhlů, takže objekty lze vidět v různých perspektivách. Virtuální umístění uživatele ve scéně se nazývá úhel kamery nebo pozice kamery.
Složitost výběru OpenGL® vychází z určení umístění myši na dvourozměrné (2D) obrazovce z případné libovolné polohy a úhlu scény, pozice kamery. Navíc, protože vykreslování z pohledu lidského prohlížeče je opravdu 2D, neexistuje způsob, jak by uživatel mohl poskytnout hloubku kliknutí myší uvnitř scény. Funkce OpenGL® picking řeší tento složitý problém dvěma způsoby.
První je, že namísto provádění řady samostatných výpočtů, které se mají překládat tam, kde je prohlížeč abstraktně, a poté najít objekt ve vykreslovacím okně, funkce vykreslí scénu jako obvykle, když normálně pracuje, s tou výjimkou, že vykreslení bylo použito pro výběr se nezobrazí, používá se pouze pro výpočet správných poloh objektů. Rozdíl je v tom, že namísto vykreslování celé oblasti, která by byla pro uživatele viditelná, vykreslí pouze oblast, kde se nachází myš. To znamená, že všechny vykreslené objekty jsou technicky v místě, kde se nachází ukazatel myši.
Druhý problém, jmenovitě nemít způsob, jak označit hloubku vybrané oblasti, je vyřešen vrácením všech objektů, které jsou pod myšími souřadnicemi ve scéně. Funkce OpenGL® picking vrací všechny objekty v poli spolu s tím, jak daleko jsou od místa prohlížeče. To umožňuje programu rychle najít nejbližší objekt, pokud je to požadováno.
Jedním ze způsobů, jak si představit výběr OpenGL®, je představit si čáru, někdy označovanou jako paprsek ve 3D programování, pohybující se z místa ukazatele myši do scény a mimo místo diváka. Každý objekt, kterého se tento paprsek dotkne, se přidá do řady objektů spolu s tím, jak daleko je od prohlížeče. Toto je velmi jednoduché vysvětlení toho, jak funguje jedna forma vychystávání OpenGL®.
Další metoda výběru objektů v OpenGL® zahrnuje lokalizaci objektu podle barvy a může být podstatně rychlejší. Tato metoda vykreslí scénu, ale namísto aplikování osvětlení a textury na objekty se místo toho vykreslí jedinou jednoduchou barvou. Každý objekt nebo skupina objektů má svou vlastní zřetelnou barvu. Scéna je vykreslena pouze v paměti a není zobrazena, takže to neovlivní to, co uživatel vidí. Místo hledání 3D kolizí mezi objekty se místo toho vrací barva v místě kurzoru myši a tato barva bude korelovat s konkrétním objektem.