8. Oświetlenie globalne

8.1. Ray casting, czyli rzucanie promieni

Ray casting, czyli metoda "rzucania promieni" to jeszcze jedna, dość oczywista metoda pozwalająca na usuwanie punktów niewidocznych, czyli wyświetlanie tylko widocznych punktów danej sceny 3D. Metoda polega na tym, że od obserwatora, umieszczonego w wybranym punkcie, prowadzi się w kierunku sceny promienie przechodzące przez każdy piksel ekranu. Dla każdego promienia wyznaczany jest najbliższy obserwatorowi punkt przecięcia tego promienia z jednym z obiektów sceny, które ten promień przebija, i punkt ten jest wyświetlany w odpowiedniej barwie, właściwej dla tego obiektu i zależnej od wersora normalnego do powierzchni w danym punkcie przebicia jej promieniem. Jeśli promień przechodzący przez jakis piksel nie przetnie żadnego obiektu, piksel ten wyświetlany jest w kolorze tła.

 

Rysunek 56. Metoda rzucania promieni; obiekty są ponumerowane i zaznaczone schematycznie.

 

Metoda wymaga stosowania algorytmów przecięcia obiektów z prostoliniowym promieniem. Jest więc oczywiste, że złożoność obliczeniowa algorytmu rośnie wraz ze złożonością opisu matematycznego obiektów renderowanej sceny. Najprostsze w obliczeniach jest szukanie punktów przecięcia prostej z płaszczyzną czy kulą, bardziej pracochłonne jest poszukiwanie przecięć z wielościanami i siatkami wieloboków, zaś w przypadku powierzchni parametrycznych konieczne jest stosowanie iteracyjnych metod rozwiązywania nieliniowych równań określających współrzędne punktu przebicia. Ponieważ metoda musi być wykonywana dla każdego piksela ekranu, wymaga stosowania najbardziej efektywnych metod. Możliwość wykorzystania pracy wieloprocesorowej jest tu szczególnie istotna: każdy procesor wykonuje obliczenia tylko dla wybranego fragmentu ekranu. Algorytmiczne metody przyspieszenia obliczeń zostaną podane w ogólnym zarysie w następnym rozdziale.

Metoda rzucania promieni nadaje się również do wyświetlania brył CSG: punkt najbliższy obserwatorowi wyznacza się porządkując punkty przebicia brył składowych wzdłuż promienia i rozwiązując wzdłuż tego promienia jednowymiarowe operacje boolowskie.