W jaki sposób wdrażana jest okluzja otoczenia przestrzeni ekranu?


11

Nie rozumiem wyjaśnienia z wikipedii.

Dla każdego piksela na ekranie moduł cieniujący piksele próbkuje wartości głębokości wokół bieżącego piksela i próbuje obliczyć stopień okluzji z każdego z próbkowanych punktów.

W jaki sposób wartości głębokości otaczających pikseli mogą powiedzieć coś o okluzji? O ile rozumiem, okluzja ma miejsce, gdy obiekt A stoi przed innym obiektem B, więc nie widzisz obiektu B. Ale dlaczego miałbyś teraz patrzeć na głębokość pikseli otaczających pikseli? Mam na myśli, że widać te piksele, więc nie ma okluzji. Może źle zrozumiałem okluzję.

Nie zrozumiałem też terminu jądro w innych samouczkach. Co to jest jądro i dlaczego miałbyś używać go do ssao?

Czy ktoś mógłby szczegółowo wyjaśnić algorytm w odniesieniu do moich pytań?


pomyśl o tym w ten sposób: głębokie załamanie będzie miało cienie.
Alan Wolfe

1
Kluczową rzeczą do zrozumienia tutaj jest to, że próbujemy obliczyć okluzję światła otoczenia, a nie okluzję z widoku.
trichoplax

Odpowiedzi:


5

Motywacja związana z okluzją otoczenia (AO) w ogólności polega na przybliżeniu sposobu, w jaki szczeliny i rogi są często zacienione, ponieważ odbija się w nich mniej pośrednie światło. Przykład ze zdjęcia mojego biura - zauważ ciemnienie wzdłuż krawędzi, gdzie spotykają się ściany i sufit. Pokój jest oświetlony tylko światłem wpadającym przez okno i skaczącym dookoła.

zdjęcie przedstawiające efekt AO w rogu pokoju

Aby dokładnie symulować to zjawisko, rendererzy offline używają technik takich jak śledzenie ścieżki i mapowanie fotonów. Do celów czasu rzeczywistego albo wstępnie obliczamy go offline, albo w jakiś sposób przybliżamy.

Okluzja otoczenia w przestrzeni ekranu (SSAO) opiera się na spostrzeżeniu, że można wykryć narożniki i szczeliny, patrząc na bufor głębokości (i ewentualnie również na normalne wektory) renderowanego obrazu, dzięki czemu można obliczyć przybliżone AO ​​jako przechodzić. Bufor głębokości jest zgrubną reprezentacją geometrii w scenie, więc próbkując wartości bufora głębokości w sąsiedztwie docelowego piksela, możesz uzyskać wyobrażenie o kształcie otaczającej geometrii i zgadnąć, jak ciemne jest przez AO Powinien być.

schemat przedstawiający, jak bufor głębokości reprezentuje geometrię, z Bavoil i Sainz (2008)

Ten diagram, autorstwa Bavoil i Sainza (2008) , pokazuje, w jaki sposób wartości bufora głębokości, interpretowane jako swego rodzaju pole wysokości, reprezentują dyskretną wersję jakiejś geometrii. Przy obliczaniu SSAO dla środkowego piksela należy spojrzeć na wartości głębokości otaczających pikseli i podłączyć je do jakiejś formuły, zaprojektowanej w celu uzyskania ciemniejszej wartości, gdy geometria jest bardziej wklęsła (jak na schemacie), i jaśniej wartość, gdy geometria jest płaska lub wypukła.

Formuła, w którą wchodzą wartości głębokości, nazywa się „jądrem” przez analogię do jąder filtrów używanych do rozmycia, wykrywania krawędzi i tym podobnych. Jednak SSAO jest bardziej skomplikowane niż tylko liniowy splot wartości głębokości. Diabeł tkwi w szczegółach. Rozkład próbek i formuła przetwarzająca je w celu wygenerowania wartości okluzji były przedmiotem wielu badań w ciągu ostatniej dekady, próbując poprawić realizm i zmniejszyć artefakty przy jednoczesnym zachowaniu dobrej wydajności.


5

Jak wspominają Alan i trichoplax w komentarzach, efektem symulowanym przez okluzję otoczenia nie jest okluzja powierzchni z kamery, ale okluzja powierzchni od otoczenia.

Pomyśl o tym w ten sposób: powiedz, że masz nawet oświetlenie pochodzące ze wszystkich kierunków, tak że całkowite przychodzące światło w dowolnym punkcie sumuje się do wartości 1. Jeśli umieścisz płaską płaszczyznę w tym otoczeniu i spojrzysz na nią z jednej strony, ta strona otrzyma 50% tego oświetlenia, czyli 0,5, ponieważ druga połowa jest blokowana przez sam samolot. Innymi słowy, dowolny punkt na powierzchni samolotu może „widzieć” światło pochodzące z połowy otoczenia, więc jest w połowie tak jasno oświetlone. Jeśli złożysz tę płaszczyznę w kierunku swojego punktu widzenia (zagięcie „dolinne”), wówczas zmniejszysz oświetlenie wejściowe do tej strony płaszczyzny dalej, do pewnej wartości poniżej 0,5, ponieważ znowu każdy punkt na płaszczyźnie „widzi” trochę mniej światła pochodzącego z otoczenia.

Okluzja otoczenia przestrzeni ekranu działa mniej więcej, szukając tych „fałdów” - obszarów, w których głębokość zmienia się gwałtownie, zgodnie z definicją przez porównanie głębokości sąsiednich pikseli - i przyciemnia je, aby zasymulować zmniejszone oświetlenie ze środowiska punktów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.