Scena wygenerowana metodą raytracingu, w której wszystkie obiekty odbijają światło
Ray tracing (literalnie: infiltracja promieni) - sprawność generowania fotorealistycznych obrazów scen trójwymiarowych. Opiera się na analizowaniu właśnie tych promieni światła, które trafiają wprost do obserwatora. W ray tracingu rekursywnym także bada się promienie odbite zwierciadlanie natomiast załamane.
Ponadto umożliwia łatwą realizację CSG, a podobnie wizualizację idealnych, opisywanych formułami matematycznymi obiektów.
Metoda wzdłuż uproszczonego modelu interakcji światła z otoczeniem daje ogromnie dobre rezultaty. Wszelako ze względu na koszty obliczeniowe, przez mnogość lat jej eksploatacja limitowała intensywność obliczeniowa komputerów, które były dostępne na rzecz dużych firm, głównie z branży filmowej. Współczesne komputery osobiste są w stanie wytwarzać obrazy tą metodą, dostępne są komercyjne jakże również darmowe programy np. POV-Ray, Blender.
Spis treści
//
Algorytm
Algorytm ray tracingu przebiega następująco:
- Z punktu w którym znajduje się świadek wyprowadzany jest promień dziki; promień przecina rzutnię.
- Wyszukiwany jest bliźni paragraf przecięcia z obiektami znajdującymi się na scenie.
- Następnie na rzecz każdego światła zdefiniowanego na scenie wyznaczana jest czytelność w tym punkcie, zgodnie z określonym modelem oświetlenia (np. Lamberta to znaczy Phonga).
Przeważnie również określa się cienie - w tym celu jest testowana widzialność źródła światła z danego punktu, tj. oznacza to przestrzeń niezadrukowana nie jest przesłaniane przez jakikolwiek cel i pod warunkiem nie - nie prędzej wówczas wyliczana jest zrozumiałość punktu na rzecz tego źródła.
W algorytmie rekurencyjnym dochodzi wciąż jeden warunek:
- Jeśli punkt programu przecięcia wypada do obiektu odbijającego przestrzeń niezadrukowana ewentualnie przezroczystego, wysyłane są z tego punktu promienie wtórne - godnie, promień lustrzany albo promień załamany - i wzór rekursywnie powtarza się od drugiego kroku (w większości programów wolno więzić liczbę zdechnąć rekurencyjnych). Odcień punktu wyznaczany jest nie prędzej, podczas gdy znane są wyniki przetwarzania promieni wtórnych; przeciętnie budowniczy podaje procentowo oddziaływanie kolorów z promieni wtórnych, tj. określa jakim sposobem nadzwyczaj cel odbija/załamuje światło.
Algorytm ray tracingu stosuje się na rzecz wszystkich pikseli obrazu; by zniknąć aliasingu przez jeden punkt przeprowadza się więcej aniżeli jeden promień.
Bardzo dużą zaletą tej metody jest prostota zrównoleglania programów - każdy promień niedostępny być może być przetwarzany obojętnie od innych; równie promienie wtórne są od siebie niezależne.
Obecnie implementuje się ray tracing również na procesorach graficznych, uzyskując obrazy w czasie rzeczywistym (kilkanaście-kilkadziesiąt klatek na sekundę).
Testowy proces algorytmu rekursywnego
Obserwator (aparat) znajduje się w punkcie O, na scenie umieszczone zostały dwoje światła L1 i L2 natomiast 3 obiekty:
- a (wyrzutnia): mętny, nie odbija światła,
- b (obwód): przeźroczysty, odbija światło,
- c (prostokąt): dopiero co odbija światło.
Z punktu O wyprowadzany jest promień dziki (naiwny), kto trafia w cel b - bowiem odbija i załamuje przestrzeń niezadrukowana, w związku z tym z punktu przecięcia wypuszczane są duet promienie wtórne: zwierciadlany (marksista) i załamany (lazur). Promień zwierciadlany trafia z kolei w cel a - w tym miejscu w tym momencie nie są generowane żadne promienie wtórne. Z kolei promień załamany znów trafia w cel b i jeszcze raz ulega załamaniu (tak bardzo istotnie winien tu być nadal promień lustrzany, pomimo tego ze względu na klarowność rysunku został pominięty). ów promień trafia w cel c, jaki odbija przestrzeń niezadrukowana, zatem generowany jest dopiero co jeden promień wtórny (zwierciadlany), jaki niemniej jednak nie przecina się z żadnym obiektem na scenie i na tym kończy się analiza.
Kreskami przerywanymi zaznaczono dodatkowe promienie, służące określeniu widoczności świateł w punktach przecięcia (na rzecz punktów obiektu b te promienie nie zostały narysowane) - w jaki sposób niechybnie zarówno inne obiekty (b) jakże i w pojedynkę cel (a) prawdopodobnie klinować światło.
Złożoność
Ray tracing jest cenny obliczeniowo - wartość obliczeń jest proporcjonalna do rozdzielczości obrazu, zależy również od stopnia skomplikowania sceny, tj. od liczby świateł (powołanie cieni), liczby obiektów zaś ich charakterystyki: o ile bo zawiera dużą liczbę obiektów odbijających czy też załamujących przestrzeń niezadrukowana powinno się wykonywać analizę podobnie na rzecz promieni wtórnych.
Zasadniczym czynnikiem wpływającym na prędkość obliczeń jest metoda znajdowania najbliższego przecięcia promienia z obiektami geometrycznymi. Np. desygnacja przecięcia z kulą wymaga rozwiązania równania kwadratowego, a przecięcia z płaszczyzną rozwiązania równania liniowego (aliści aktualnie na rzecz wycinków płaszczyzny, np. wielokątów, wymaga dodatkowych testów). Z kolei na rzecz obiektów w wyższym stopniu skomplikowanych, jakże torusy, bryły obrotowe, płaty Béziera, innymi słowy NURBS potrzebne są złożone obliczenia.
Nie mniej ważnym problemem jest wytypowanie tych obiektów ze sceny, które mogą się z danym promieniem przeciąć - żeby procedury przeprowadzające dokładne obliczenia być przyczyną dopiero co w takim razie, podczas gdy jest to niezbędne; mówiąc obrazowo: jeżeli starcie zawiera milion obiektów, by za każdym łącznie nie analizować milion rózgi, oznacza to promień przecina każdy z nich. Jednym ze sposobów na minimalizację obliczeń jest rozpad przestrzenny sceny (regularną siatką, drzewami ósemkowymi, kd, to znaczy BSP), uniwersalnie wykorzystuje się podobnie bryły otaczające (pozwalające szybciej scharakteryzować czyli promień może mieć paragraf skojarzony z obiektem, czy też iż na chyba go nie ma).
Wady
Ray tracing, nieopodal swoich zalet, nie jest idealnym sposobem tworzenia fotorealistycznych obrazów. Przede wszystkim w ogóle nie uwzględnia światła rozproszonego, prócz tego bo operuje na pojedynczych promieniach, nie przypadkiem słusznie formować dyfrakcji, np. na pryzmacie, interferencji fal świetlnych i innych zjawisk falowych.
Stworzono mrowie technik, które stosowane osobiście, czy też wszystkiego z ray tracingiem pozwalają obejść te wady. Są to m.in. radiosity, path tracing, photon mapping i forward raytracing.
Zobacz też
- Programy komputerowe wykorzystujące ray tracing:
- 3D Studio
- Blender
- Maya
- Lightwave 3D
- rendering