Ce este OpenGL® Picking?

Alegerea OpenGL® în programarea computerelor este procesul de determinare a obiectului dintr-o scenă tridimensională (3D) care este situat într-un punct dat de pe ecran odată ce scena este redată. De asemenea, se poate referi la localizarea mai multor obiecte într-un punct sau în interiorul unei cutii. Cel mai adesea, alegerea OpenGL® este folosită pentru a determina ce obiect 3D de pe ecran încearcă un utilizator să selecteze cu cursorul mouse-ului. Deși această operațiune poate părea simplă, există mai multe subtilități în modul în care OpenGL® redă o scenă care o poate face destul de complexă. În plus, există erori intrinseci în anumite plăci grafice și drivere care pot cauza eșecul funcției de alegere OpenGL® și pot returna rezultate false.

Când un utilizator se uită la o scenă 3D pe un monitor de computer, imaginea rezultată este cunoscută ca o redare a scenei. Scena este de fapt stocată în memorie ca o colecție de forme sau poligoane primitive, care ele însele sunt doar colecții de puncte 3D din spațiul scenei. Calculatorul folosește coordonatele mondiale, care uneori sunt numite coordonate absolute, pentru a îndeplini majoritatea funcțiilor de bază care manipulează obiectele din scenă. În majoritatea aplicațiilor, utilizatorul poate manevra vederea scenei în unghiuri diferite, astfel încât obiectele să poată fi văzute în perspective diferite. Locația virtuală a utilizatorului în cadrul scenei se numește unghiul camerei sau poziția camerei.

Complexitatea alegerii OpenGL® vine din determinarea locației mouse-ului pe ecranul bidimensional (2D) dintr-o poziție și unghi posibil arbitrare în cadrul scenei, poziția camerei. În plus, deoarece redarea din perspectiva privitorului uman este într-adevăr 2D, utilizatorul nu are nicio modalitate de a furniza adâncimea clicului mouse-ului în interiorul scenei. Funcția de alegere OpenGL® rezolvă această problemă complexă în două moduri.

Primul este că, în loc să efectueze o serie de calcule separate pentru a traduce unde vizualizatorul este abstract și apoi să găsească un obiect în fereastra de randare, funcția redă de fapt scena așa cum o face atunci când funcționează în mod normal, cu excepția faptului că redarea folosită. pentru selecția nu este afișată, este folosit doar pentru a calcula pozițiile corecte ale obiectelor. Diferența este că, în loc să redeze întreaga zonă care ar fi vizibilă pentru utilizator, redă doar zona în care se află mouse-ul. Aceasta înseamnă că orice obiecte redate se află din punct de vedere tehnic în punctul în care se află indicatorul mouse-ului.

A doua problemă, și anume a nu avea nicio modalitate de a indica adâncimea unei zone selectate, este rezolvată prin returnarea tuturor obiectelor care se află sub coordonatele mouse-ului în scenă. Funcția de alegere OpenGL® returnează toate obiectele dintr-o matrice împreună cu cât de departe sunt acestea de locația privitorului. Acest lucru permite unui program să găsească rapid cel mai apropiat obiect dacă se dorește.

O modalitate de a vizualiza alegerea OpenGL® este să vă imaginați o linie, denumită uneori o rază în programarea 3D, care se deplasează de la locația indicatorului mouse-ului în scenă și departe de locația privitorului. Fiecare obiect pe care îl atinge această rază este adăugat la o serie de obiecte, împreună cu cât de departe este de privitor. Aceasta este o explicație foarte simplă a modului în care funcționează o formă de alegere OpenGL®.
O altă metodă de alegere a obiectelor în OpenGL® implică localizarea unui obiect după culoare și poate fi considerabil mai rapidă. Această metodă redă scena, dar, în loc să aplice iluminare și textură obiectelor, acestea sunt în schimb redate cu o singură culoare simplă. Fiecare obiect sau grup de obiecte are propria sa culoare distinctă. Scena este redată doar în memorie și nu este afișată, așa că acest lucru nu afectează ceea ce vede utilizatorul. În loc să căutați coliziuni 3D între obiecte, culoarea din poziția cursorului mouse-ului este returnată și acea culoare se va corela cu un anumit obiect.