Spindulių sekimo metodas (angl. Ray tracing) paprastai asocijuojasi su tikroviškais vaizdais, tačiau dėl didelių techninių išteklių jis beveik niekada nesiejamas su paprastiems vartotojams skirtomis programomis. Tačiau didėjant galimybėms spindulių sekimo principai taikomi ir kuriant įprastas programas. Tokiu būdu sugeneruotų vaizdų kokybė lenkia rastrinę grafiką.
Trimačiai vaizdai dažniausiai generuojami pasitelkus rastrinę grafiką: vaizdas suskaidomas į objektus, o šie – į daugiakampius, kurie vėliau apdorojami ir iš jų formuojamas vaizdas. Tačiau rastrinė grafika turi keletą trūkumų. Pirmiausia beveik visi realūs objektai yra lenktos formos, tad juos aproksimuojant daugiakampiais gaunamas kampuotas vaizdas.
Vaizdo glotnumą galima padidinti naudojant daugiau daugiakampių, tačiau rastrinėje grafikoje apdorojami visi daugiakampiai, net tie, kurių nematyti. Nematomus daugiakampius programa gali aptikti tik visus juos apdorojusi. Taigi kompiuterių išteklių, reikalingų trimačiam vaizdui formuoti, poreikis didėja proporcingai vaizdo detalumui, t. y. proporcingai daugiakampių skaičiui.
Dar viena problema – šešėlių, atspindžių ir kitų optinių efektų neįmanoma sumodeliuoti grafiniu procesoriumi, nes visi daugiakampiai apdorojami nepriklausomai vienas nuo kito. Realiame pasaulyje visos vaizdo dalys yra susijusios ir veikia viena kitą, o taikant rastrinę grafiką daroma prielaida, jog bet kuris vaizdo elementas yra savarankiškas. Šios prielaidos trūkumus paprastai kompensuoja menininkai: jie iš anksto numato, kokių efektų bus veikiamas apdorojamas daugiakampis, ir juos iš anksto suprogramuoja.
Šių problemų gali padėti išvengti spindulių sekimo metodas, pagrįstas šviesos spindulio sklidimo ir jo sąveikos su paviršiais modeliavimu. Šis metodas atbuline seka matematiškai modeliuoja kelią, kurį nukeliautų šviesos spindulys, sklisdamas iš įsivaizduojamo objektyvo. Kitaip tariant, sekama spindulio trajektorija iš vieno taško į kitą, siekiant nustatyti kelyje pasitaikančius objektus ir atstumą iki artimiausio sankirtos taško. Atsekus daug spindulių, atkuriamas visas per objektyvą matomas vaizdas. Be to, kadangi šviesos spinduliai iš tiesų yra nepriklausomi, įvairūs efektai, pavyzdžiui, atspindžiai, šešėliai, lūžiai, atrodo tikroviški. Šis metodas yra pagrįstas optikos dėsniais.
Šio algoritmo idėja siekia senovės Graikijos laikus, kai buvo manoma, jog žmogus mato iš akių „iššaudamas“ spindulius, aptinkančius supančio pasaulio objektus. Ši teorija buvo paneigta maždaug prieš 400 metų. Pirmasis šia idėja pasinaudojo vokiečių dailininkas Albrechtas Düeris, virvelėmis, pririštomis prie objektų ir rėmo, tiksliai suprojektavęs objektų formą dvimatėje erdvėje.
Kompiuterijoje šio algoritmo taikymo pradininku laikomas Turneris Whittedas, 1980 metais parašęs pirmąjį straipsnį apie spindulių sekimo algoritmą. Nuo tada matomiems daiktams nustatyti naudotas algoritmas tapo tikroviškų vaizdų kūrimo metodu.
Spinduliai sekami tokiu principu:
- Pirmiausia nustatoma, ar tarp objektų A ir B yra kliūčių. Tam iš objektyvo „nutiesiami“ spinduliai ir stebima, ar jie į ką nors „atsitrenkia“.
- Apšvietimo bandymu nustatoma, ar niekas neužstoja kelio tarp objekto A ir šviesos šaltinio. Tai leidžia tiksliai nustatyti apšviestas ir šešėlyje glūdinčias sritis.
- Nustačius, kad spindulys pataikys į objektą, skaičiuojama, kur jis keliaus toliau, atsižvelgiant į tai, ar jis atspindės, lūš, ar bus sugertas. Retas objektas pasižymi tobulomis optinėmis savybėmis, pavyzdžiui, 100 proc. atspindžiu, tad paprastai šio etapo metu sužadinamas šešėliuoklis, nustatantis, koks santykinis spindulio kiekis bus atspindėtas bei lūš įvairiomis kryptimis.
- Šviesos transporto sistema nustato, kaip šviesa keliauja iš įvairių šviesos šaltinių į vieną ar daugiau objektyvų. Kai kurie šviesos srautai keliauja neveikdami per objektyvą matomo vaizdo. Vieni šaltiniai gali tiesiogiai paveikti objektą, kiti – netiesiogiai.
Vienas didžiausių spindulių sekimo metodo trūkumų – jo našumas. Skaičiuojant kitais metodais, remiamasi ryšiu tarp vaizdo elementų, o spindulių sekimo metodu kiekvieno spindulio skaičiavimai pradedami iš naujo. Tiesa, spinduliai yra atskirti, todėl tose vietose, kur vaizdavimo kokybę reikia pagerinti, galima naudoti daugiau spindulių.
Algoritmo našumui padidinti pasitelkiamos spartinimo struktūros: padalijama erdvė arba remiamasi indeksavimo struktūra. Bet kuris trimatis objektas arba scena padalijami į tuščios erdvės sritis bei nedideles netuščias sritis. Tokia struktūra leidžia veiksmingai nustatyti, kuriuo keliu spindulys keliaus erdvėje, ir patikrinti, ar jis kirs daugiakampius, esančius tik tam tikroje srityje. Kitu atveju tektų tikrinti visus daugiakampius. Jeigu scena sudaryta iš nejudančių objektų, spartinimo struktūra gali būti sudaryta iš anksto ir įkeliama kartu su scenos geometrija. Jei scena yra dinamiška, turi būti suformuota kiekvieno kadro spartinimo struktūra realiuoju laiku, o tam reikia daug išteklių. Dažniausiai pasitaikantis spartinimo struktūrų tipas – vadinamieji kD medžiai.
Paprastesnis kD medžių sudarymo algoritmas:
- Peržiūrėti visas viršūnes, išanalizuoti jas ir pasiūlyti veiksmingiausią būdą padalyti į dvi dalis pagal kainos funkciją. Taip suformuojamos dvi antrojo lygio šakos.
- Kartoti pirmąjį žingsnį kuriant naujų lygių šakas, kol struktūra bus pakankamai detali.
Paprastai suformuoti pagrindines šakas yra sudėtinga, tačiau vėliau smulkesnes šakas lengviau išskirti.
Žaidimuose kitoms vaizdų apdorojimo programoms taip pat reikia struktūrizuoti sceną, pavyzdžiui, fizikos varikliui ar susidūrimų nustatymo varikliui. Jeigu visos šios programos remtųsi tokia pat spartinimo struktūra, kokia naudojasi spindulių sekimo programa, reikėtų rečiau realiuoju laiku formuoti kD medį.
Spindulių sekimas ilgą laiką buvo per brangus kasdienėms programoms. Net filmų studijos tik neseniai pradėjo taikyti šį metodą. „Pixar“ pasitelkė spindulių sekimo technologiją tikroviškam automobilių kėbulų žibėjimui animaciniame filme „Cars“ išgauti.
Spindulių sekimo metodas gali pakeisti rastrinę grafiką, nes jo veikimo algoritmas puikiai tinka šiuolaikiniams procesoriams – jo našumas didėja daugėjant gijų ir branduolių. Be to, Sarlando universiteto mokslininkai sukūrė 66 MHz procesorių, vaizdus spindulių sekimo algoritmu apdorojantį taip pat sparčiai kaip 2,6 GHz spartos „Pentium 4“ procesorius. Tad gali būti, jog netrukus į kompiuterį bus diegiami ne tik grafiniai, bet ir spindulių sekimo procesoriai.
Iliustracijų šaltinis – „Scientific American“.