Hva er OpenGL® Picking?
OpenGL®-plukking i dataprogrammering er prosessen med å bestemme hvilket objekt i en tredimensjonal (3D) scene er lokalisert 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 subtiliteter i hvordan OpenGL® gjør en scene som kan gjøre den ganske kompleks. I tillegg er det iboende feil i visse grafikkort og drivere som kan føre til at OpenGL® -plukkingfunksjonen mislykkes og returnerer 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 er faktisk lagret i minnet som en samling av primitive former eller polygoner, som i seg selv er bare samlinger av 3D -punkter innenfor rommet tilscene. 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 synet på scenen til forskjellige vinkler slik at objekter kan sees i forskjellige perspektiver. Den virtuelle plasseringen av brukeren i scenen kalles kameravinkelen eller kameraposisjonen.
Kompleksiteten i OpenGL®-plukking kommer fra å bestemme musens plassering på den todimensjonale (2D) -skjermen fra en muligens vilkårlig posisjon og vinkel i scenen, kameraposisjonen. I tillegg, fordi gjengivelsen fra den menneskelige seerens perspektiv virkelig er 2D, er det ingen måte for brukeren å gi dybden på museklikk på innsiden av scenen. OpenGL® -plukkfunksjonen løser dette komplekse problemet på to måter.
den første er at i stedet for perDanner en serie separate beregninger for å oversette der betrakteren er abstrakt og deretter finne et objekt i gjengivelsesvinduet, funksjonen gjengir faktisk scenen som den gjør når du normalt fungerer, med unntak av at gjengivelsen som brukes til valg ikke vises, brukes den 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 ligger. Dette betyr at alle gjenstander som er gjengitt er teknisk på det punktet hvor musepekeren er plassert.
Det andre problemet, nemlig ikke har noen måte å indikere dybden i et valgt område, løses ved å returnere alle objekter som er under musekoordinatene i scenen. OpenGL® Picking -funksjonen returnerer alle objektene i en matrise sammen med hvor langt borte de er fra seerens beliggenhet. Dette gjør at et program raskt kan finne det nærmeste objektet om ønskelig.
en måte å visualisere oPengl® Picking er å forestille seg en linje, noen ganger referert til som en stråle i 3D -programmering, og beveger seg fra plasseringen av musepekeren inn i scenen og bort fra betrakterens beliggenhet. Hver gjenstand denne strålen berører blir lagt til en rekke objekter, sammen med hvor langt borte det er fra betrakteren. Dette er en veldig enkel forklaring på hvordan en form for OpenGL® Picking fungerer.
En annen metode for objektplukking i OpenGL® innebærer å finne 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 enkelt, enkel farge. Hvert objekt eller gruppe av objekter har sin egen distinkte farge. Scenen er bare gjengitt i minnet og ikke vises, så dette påvirker ikke det brukeren ser. I stedet for å lete etter 3D -kollisjoner mellom objekter, returneres fargen på musemarkøren i stedet, og den fargen vil korrelere med et spesifikt objekt.