See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Ray tracing - Wikipedia, wolna encyklopedia

Ray tracing

Z Wikipedii

Scena wygenerowana metodą raytracingu, w której wszystkie obiekty odbijają światło
Scena wygenerowana metodą raytracingu, w której wszystkie obiekty odbijają światło

Ray tracing (dosłownie: śledzenie promieni) - technika generowania fotorealistycznych obrazów scen trójwymiarowych. Opiera się na analizowaniu tylko tych promieni światła, które trafiają bezpośrednio do obserwatora. W ray tracingu rekursywnym dodatkowo bada się promienie odbite zwierciadlanie oraz załamane.

Ponadto umożliwia łatwą realizację CSG, a także wizualizację idealnych, opisywanych formułami matematycznymi obiektów.

Metoda mimo uproszczonego modelu interakcji światła z otoczeniem daje bardzo dobre rezultaty. Jednak ze względu na koszty obliczeniowe, przez wiele lat jej wykorzystanie limitowała moc obliczeniowa komputerów, które były dostępne dla dużych firm, głównie z branży filmowej. Współczesne komputery osobiste są w stanie generować obrazy tą metodą, dostępne są komercyjne jak również darmowe programy np. POV-Ray, Blender.

Spis treści

[edytuj] Algorytm

Algorytm ray tracingu przebiega następująco:

  1. Z punktu w którym znajduje się obserwator wyprowadzany jest promień pierwotny; promień przecina rzutnię.
  2. Wyszukiwany jest najbliższy punkt przecięcia z obiektami znajdującymi się na scenie.
  3. Następnie dla każdego światła zdefiniowanego na scenie wyznaczana jest jasność w tym punkcie, zgodnie z określonym modelem oświetlenia (np. Lamberta czy Phonga).
    Najczęściej także określa się cienie - w tym celu jest testowana widoczność źródła światła z danego punktu, tj. czy światło nie jest przesłaniane przez jakiś obiekt i jeśli nie - dopiero wówczas wyliczana jest jasność punktu dla tego źródła.

W algorytmie rekurencyjnym dochodzi jeszcze jeden warunek:

  1. Jeśli punkt przecięcia należy do obiektu odbijającego światło lub przezroczystego, wysyłane są z tego punktu promienie wtórne - odpowiednio, promień odbity lub promień załamany - i algorytm rekursywnie powtarza się od drugiego kroku (w większości programów można ograniczyć liczbę zejść rekurencyjnych). Kolor punktu wyznaczany jest dopiero, gdy znane są wyniki przetwarzania promieni wtórnych; zwykle projektant podaje procentowo wpływ kolorów z promieni wtórnych, tj. określa jak bardzo obiekt odbija/załamuje światło.

Algorytm ray tracingu stosuje się dla wszystkich pikseli obrazu; aby uniknąć aliasingu przez jeden piksel przeprowadza się więcej niż jeden promień.

Bardzo dużą zaletą tej metody jest łatwość zrównoleglania programów - każdy promień pierwotny może być przetwarzany niezależnie od innych; podobnie 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ę).

[edytuj] Przykładowy przebieg algorytmu rekursywnego

Obserwator (kamera) znajduje się w punkcie O, na scenie umieszczone zostały dwa światła L1 i L2 oraz 3 obiekty:

  1. a (elipsa): nieprzezroczysty, nie odbija światła,
  2. b (koło): przezroczysty, odbija światło,
  3. c (prostokąt): tylko odbija światło.

Z punktu O wyprowadzany jest promień pierwotny (zielony), który trafia w obiekt b - ponieważ odbija i załamuje światło, toteż z punktu przecięcia wypuszczane są dwa promienie wtórne: odbity (czerwony) i załamany (niebieski). Promień odbity trafia z kolei w obiekt a - tutaj już nie są generowane żadne promienie wtórne. Z kolei promień załamany znów trafia w obiekt b i ponownie ulega załamaniu (tak naprawdę powinien tutaj być jeszcze promień odbity, ale ze względu na przejrzystość rysunku został pominięty). Ten promień trafia w obiekt c, który odbija światło, toteż generowany jest tylko jeden promień wtórny (odbity), który 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 (dla punktów obiektu b te promienie nie zostały narysowane) - jak widać zarówno inne obiekty (b) jak i sam obiekt (a) może blokować światło.

[edytuj] Złożoność

Ray tracing jest kosztowny obliczeniowo - liczba obliczeń jest proporcjonalna do rozdzielczości obrazu, zależy również od stopnia skomplikowania sceny, tj. od liczby świateł (wyznaczenie cieni), liczby obiektów oraz ich charakterystyki: jeśli bowiem zawiera dużą liczbę obiektów odbijających lub załamujących światło należy przeprowadzać analizę także dla promieni wtórnych.

Zasadniczym czynnikiem wpływającym na szybkość obliczeń jest procedura znajdowania najbliższego przecięcia promienia z obiektami geometrycznymi. Np. wyznaczenie przecięcia z kulą wymaga rozwiązania równania kwadratowego, a przecięcia z płaszczyzną rozwiązania równania liniowego (ale już dla wycinków płaszczyzny, np. wielokątów, wymaga dodatkowych testów). Z kolei dla obiektów bardziej skomplikowanych, jak torusy, bryły obrotowe, płaty Béziera, czy 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ąć - aby procedury przeprowadzające dokładne obliczenia wywoływać tylko wtedy, gdy jest to niezbędne; mówiąc obrazowo: jeśli scena zawiera milion obiektów, by za każdym razem nie testować milion razy, czy promień przecina każdy z nich. Jednym ze sposobów na minimalizację obliczeń jest podział przestrzenny sceny (regularną siatką, drzewami ósemkowymi, kd, czy BSP), powszechnie wykorzystuje się także bryły otaczające (pozwalające szybciej określić czy promień może mieć punkt wspólny z obiektem, bądź że na pewno go nie ma).

[edytuj] Wady

Ray tracing, mimo swoich zalet, nie jest idealnym sposobem tworzenia fotorealistycznych obrazów. Przede wszystkim w ogóle nie uwzględnia światła rozproszonego, ponadto ponieważ operuje na pojedynczych promieniach, nie może prawidłowo modelować dyfrakcji, np. na pryzmacie, interferencji fal świetlnych i innych zjawisk falowych.

Stworzono wiele technik, które stosowane samodzielnie, bądź razem z ray tracingiem pozwalają obejść te wady. Są to m.in. radiosity, photon mapping i forward raytracing.

[edytuj] Zobacz też


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -