Wat is OpenGL® picken?

OpenGL®-picking in computerprogrammering is het proces waarbij wordt bepaald welk object binnen een driedimensionale (3D) scène zich op een bepaald punt op het scherm bevindt zodra de scène is weergegeven. Het kan ook verwijzen naar het lokaliseren van meerdere objecten op een punt of in een vak. Meestal wordt OpenGL®-picken gebruikt om te bepalen welk 3D-object op het scherm een ​​gebruiker probeert te selecteren met een muiscursor. Hoewel deze bewerking misschien eenvoudig lijkt, zijn er verschillende subtiliteiten in hoe OpenGL® een scène weergeeft die het behoorlijk complex kan maken. Bovendien zijn er intrinsieke glitches in bepaalde grafische kaarten en stuurprogramma's die ervoor kunnen zorgen dat de Pick-functie van OpenGL® mislukt en valse resultaten oplevert.

Wanneer een gebruiker naar een 3D-scène op een computermonitor kijkt, staat de resulterende afbeelding bekend als een weergave van de scène. De scène wordt in het geheugen opgeslagen als een verzameling primitieve vormen of polygonen, die zelf slechts verzamelingen van 3D-punten binnen de ruimte van de scène zijn. De computer gebruikt wereldcoördinaten, die soms absolute coördinaten worden genoemd, om de meeste basisfuncties uit te voeren die objecten in de scène manipuleren. In de meeste toepassingen kan de gebruiker het beeld van de scène vanuit verschillende hoeken manoeuvreren, zodat objecten vanuit verschillende perspectieven kunnen worden gezien. De virtuele locatie van de gebruiker in de scène wordt de camerahoek of camerapositie genoemd.

De complexiteit van OpenGL®-picking komt van het bepalen van de locatie van de muis op het tweedimensionale (2D) scherm vanuit een mogelijk willekeurige positie en hoek binnen de scène, de camerapositie. Omdat de weergave vanuit het perspectief van de menselijke kijker echt 2D is, kan de gebruiker bovendien niet de diepte van de muisklik in de scène opgeven. De Pick-functie van OpenGL® lost dit complexe probleem op twee manieren op.

De eerste is dat, in plaats van een reeks afzonderlijke berekeningen uit te voeren om te vertalen waar de kijker abstract is en vervolgens een object in het renderingvenster vindt, de functie de scène daadwerkelijk weergeeft zoals bij normaal werken, met uitzondering dat de rendering wordt gebruikt voor selectie wordt niet weergegeven, het wordt alleen gebruikt om de juiste posities van objecten te berekenen. Het verschil is dat in plaats van het hele gebied zichtbaar te maken voor de gebruiker, alleen het gebied wordt weergegeven waar de muis zich bevindt. Dit betekent dat alle weergegeven objecten zich technisch op het punt bevinden waar de muisaanwijzer zich bevindt.

Het tweede probleem, namelijk geen manier hebben om de diepte van een geselecteerd gebied aan te geven, wordt opgelost door alle objecten die zich onder de muiscoördinaten in de scène bevinden, terug te geven. De Pick-functie van OpenGL® retourneert alle objecten in een array, samen met hoe ver ze verwijderd zijn van de locatie van de kijker. Hiermee kan een programma indien gewenst snel het dichtstbijzijnde object vinden.

Een manier om OpenGL®-picking te visualiseren, is door een lijn voor te stellen, in de 3D-programmering soms een straal genoemd, die zich verplaatst van de locatie van de muisaanwijzer naar de scène en weg van de locatie van de kijker. Elk object dat deze straal raakt, wordt toegevoegd aan een reeks objecten, samen met hoe ver het van de kijker verwijderd is. Dit is een zeer eenvoudige uitleg over hoe een vorm van OpenGL®-picking werkt.

Een andere methode voor het kiezen van objecten in OpenGL® betreft het lokaliseren van een object op kleur en dit kan aanzienlijk sneller zijn. Met deze methode wordt de scène weergegeven, maar in plaats van verlichting en textuur toe te passen op de objecten, worden ze in plaats daarvan weergegeven met een enkele, eenvoudige kleur. Elk object of groep objecten heeft zijn eigen kleur. De scène wordt alleen in het geheugen weergegeven en niet weergegeven, dus dit heeft geen invloed op wat de gebruiker ziet. In plaats van te zoeken naar 3D-botsingen tussen objecten, wordt in plaats daarvan de kleur op de positie van de muiscursor geretourneerd en die kleur zal correleren met een specifiek object.

ANDERE TALEN

heeft dit artikel jou geholpen? bedankt voor de feedback bedankt voor de feedback

Hoe kunnen we helpen? Hoe kunnen we helpen?