Kas yra OpenGL® rinkimas?

Kompiuterių programavimo OpenGL® rinkimas yra procesas, kurio metu nustatoma, koks objektas trimatėje (3D) scenoje yra tam tikrame ekrano taške, kai scena atvaizduojama. Tai taip pat gali reikšti kelių objektų vietos nustatymą taške arba dėžutės viduje. Dažniausiai OpenGL® rinkimas naudojamas norint nustatyti, kokį 3D objektą ekrane vartotojas bando pasirinkti pelės žymekliu. Nors ši operacija gali atrodyti paprasta, yra keletas subtilybių, kaip OpenGL® atvaizduoja sceną, todėl ji gali būti gana sudėtinga. Be to, tam tikrose vaizdo plokštėse ir tvarkyklėse yra būdingų nesklandumų, dėl kurių OpenGL® rinkimo funkcija gali sugesti ir pateikti klaidingus rezultatus.

Kai vartotojas žiūri į 3D sceną kompiuterio monitoriuje, gaunamas vaizdas vadinamas scenos atvaizdavimu. Scena iš tikrųjų saugoma atmintyje kaip primityvių formų arba daugiakampių rinkinys, kurie patys yra tik 3D taškų rinkiniai scenos erdvėje. Kompiuteris naudoja pasaulio koordinates, kurios kartais vadinamos absoliučiomis koordinatėmis, kad galėtų atlikti pagrindines funkcijas, kurios manipuliuoja objektais scenoje. Daugumoje programų vartotojas gali manevruoti scenos vaizdą skirtingais kampais, kad objektai būtų matomi skirtingomis perspektyvomis. Virtuali vartotojo vieta scenoje vadinama kameros kampu arba kameros padėtimi.

OpenGL® rinkimo sudėtingumas atsiranda dėl pelės vietos nustatymo dvimačiame (2D) ekrane iš galbūt savavališkos padėties ir kampo scenoje, fotoaparato pozicijoje. Be to, kadangi vaizdas iš žmogaus žiūrinčiojo perspektyvos iš tikrųjų yra 2D, vartotojas negali pateikti pelės spustelėjimo gylio scenos viduje. OpenGL® rinkimo funkcija šią sudėtingą problemą išsprendžia dviem būdais.

Pirmoji yra ta, kad užuot atlikusi atskirų skaičiavimų seriją, kad abstrakčiai išverstų, kur žiūrintysis yra, o tada atvaizdavimo lange surastų objektą, funkcija faktiškai atvaizduoja sceną taip, kaip veikia įprastai, išskyrus tai, kad buvo naudojamas atvaizdavimas. pasirinkimui nerodomas, jis naudojamas tik teisingoms objektų padėtims apskaičiuoti. Skirtumas yra tas, kad užuot atvaizdavęs visą sritį, kuri būtų matoma vartotojui, ji atvaizduoja tik sritį, kurioje yra pelė. Tai reiškia, kad visi pateikti objektai techniškai yra toje vietoje, kur yra pelės žymeklis.

Antroji problema, ty neturėjimas galimybės nurodyti pasirinktos srities gylio, išspręsta grąžinant visus objektus, esančius scenoje po pelės koordinatėmis. OpenGL® paėmimo funkcija grąžina visus masyvo objektus kartu su jų atstumu nuo žiūrinčiojo vietos. Tai leidžia programai greitai rasti artimiausią objektą, jei to pageidaujama.

Vienas iš būdų vizualizuoti OpenGL® rinkimą yra įsivaizduoti liniją, kuri 3D programavime kartais vadinama spinduliu, judančią iš pelės žymeklio vietos į sceną ir toliau nuo žiūrovo vietos. Kiekvienas objektas, kurį šis spindulys paliečia, pridedamas prie objektų masyvo, kartu nurodant, kokiu atstumu jis yra nuo žiūrinčiojo. Tai labai paprastas paaiškinimas, kaip veikia viena OpenGL® rinkimo forma.
Kitas objektų pasirinkimo metodas OpenGL® apima objekto vietos nustatymą pagal spalvą, ir tai gali būti žymiai greitesnė. Šis metodas atvaizduoja sceną, tačiau vietoj objektų apšvietimo ir tekstūros jie atvaizduojami viena paprasta spalva. Kiekvienas objektas ar objektų grupė turi savo skirtingą spalvą. Scena atvaizduojama tik atmintyje ir nerodoma, todėl tai neturi įtakos tam, ką mato vartotojas. Užuot ieškoję 3D susidūrimų tarp objektų, grąžinama spalva pelės žymeklio padėtyje, o ši spalva bus koreliuojama su konkrečiu objektu.