Hva er OpenGL®-plukking?
OpenGL®-plukking i dataprogrammering er prosessen med å bestemme hvilket objekt i en tredimensjonal (3D) scene som befinner seg på et gitt punkt på skjermen når scenen er gjengitt. Det kan også referere til å finne flere objekter på et punkt eller inne i en boks. Oftest brukes OpenGL®-plukking for å bestemme hvilket 3D-objekt på skjermen en bruker prøver å velge med en musemarkør. Selv om denne operasjonen kan se ut til å være enkel, er det flere finesser i hvordan OpenGL® gjengir en scene som kan gjøre den ganske kompleks. I tillegg er det iboende glitches i visse grafikkort og drivere som kan føre til at OpenGL®-plukkfunksjonen mislykkes og gir falske resultater.
Når en bruker ser på en 3D-scene på en dataskjerm, er det resulterende bildet kjent som en gjengivelse av scenen. Scenen lagres faktisk i minnet som en samling av primitive former eller polygoner, som i seg selv bare er samlinger av 3D-punkter innenfor scenens rom. Datamaskinen bruker verdenskoordinater, som noen ganger kalles absolutte koordinater, for å utføre de fleste grunnleggende funksjoner som manipulerer objekter i scenen. I de fleste applikasjoner er brukeren i stand til å manøvrere utsikten til scenen til forskjellige vinkler, slik at objekter kan sees i forskjellige perspektiver. Brukerens virtuelle plassering i scenen kalles kameravinkelen eller kameraposisjonen.
Kompleksiteten i OpenGL®-plukking kommer fra å bestemme plasseringen av musen på den todimensjonale (2D) skjermen fra en muligens vilkårlig posisjon og vinkel i scenen, kameraets posisjon. Fordi gjengivelsen fra den menneskelige betrakterens perspektiv virkelig er 2D, er det ingen måte for brukeren å gi dybden til museklikket inne i scenen. OpenGL®-plukkfunksjonen løser dette komplekse problemet på to måter.
Den første er at i stedet for å utføre en serie med separate beregninger for å oversette der betrakteren er abstrakt og deretter finne et objekt i gjengivningsvinduet, gjengir funksjonen scenen som den gjør når den fungerer, med unntak av at gjengivelsen ble brukt for valg vises ikke, det brukes bare til å beregne de riktige posisjonene til objekter. Forskjellen er at i stedet for å gjengi hele området som vil være synlig for brukeren, gjengir det bare området der musen befinner seg. Dette betyr at gjenstander som er gjengitt teknisk sett er på det punktet der musepekeren befinner seg.
Det andre problemet, nemlig å ikke ha noen måte å indikere dybden på et valgt område, løses ved å returnere alle objekter som er under musekoordinatene i scenen. OpenGL®-plukkfunksjonen returnerer alle objektene i en matrise sammen med hvor langt de er fra betrakterens plassering. Dette lar et program raskt finne det nærmeste objektet hvis ønskelig.
En måte å visualisere OpenGL®-plukking er å forestille seg en linje, noen ganger referert til som en stråle i 3D-programmering, som beveger seg fra plasseringen av musepekeren til scenen og bort fra betrakterens plassering. Hver gjenstand denne strålen berører legges til en rekke objekter, sammen med hvor langt det er fra betrakteren. Dette er en veldig enkel forklaring på hvordan en form for OpenGL®-plukking fungerer.
En annen metode for å plukke gjenstander i OpenGL® innebærer å lokalisere et objekt etter farge, og det kan være betydelig raskere. Denne metoden gjengir scenen, men i stedet for å bruke belysning og tekstur på objektene, blir de i stedet gjengitt med en enkel, enkel farge. Hver gjenstand eller gruppe av objekter har sin egen distinkte farge. Scenen blir bare gjengitt i minnet og vises ikke, så dette påvirker ikke hva brukeren ser. I stedet for å se etter 3D-kollisjoner mellom objekter, returneres fargen på musepekeren i stedet, og den fargen vil korrelere med et bestemt objekt.