Co to są sferyczne harmoniczne i sondy świetlne?

14

Co to są sferyczne harmoniczne i sondy świetlne ? Jak przydatne są w grafice komputerowej? Co dokładnie robią? Wszędzie słyszałem słowo harmoniczne sferyczne i sondy świetlne, od prezentacji podpisów po posty na blogach.

Ostatnio Matt Pettineo opublikował na nich 6-częściową serię blogów, ale nadal nie rozumiem, czym one są.

Czy to kolejny sposób na poprawę oświetlenia otoczenia?

Arjan Singh
źródło

Odpowiedzi:

11

Podstawy harmonicznych sferycznych

Harmoniczne sferyczne to sposób na przedstawienie funkcji 2D na powierzchni kuli. Zamiast dziedziny przestrzennej (jak mapa kubaturowa), SH jest zdefiniowany w dziedzinie częstotliwości z pewnymi interesującymi właściwościami i operacjami związanymi z oświetleniem, które można skutecznie wykonywać. Wraz ze wzrostem „kolejności” SH możesz reprezentować wyższe częstotliwości (szczegóły) funkcji, jak pokazano na poniższym obrazku ( to kolejność SH). Skalując i sumując poniższe „funkcje podstawowe”, możesz reprezentować dowolny rodzaj funkcji 2D na kuli do częstotliwości określonej przez funkcje. Podstawowe funkcje są zdefiniowane za pomocą „ powiązanych wielomianów Legendre'a ”, ale zwykle nie musisz sam ich wyprowadzać, ale możesz użyć istniejących pochodnych dla prawdziwych harmonicznych sferycznych . lwprowadź opis zdjęcia tutaj

Jedna taka operacja, którą można skutecznie wykonać w SH, nazywa się „ splotem ”, co oznacza zintegrowanie iloczynu dwóch sferycznych funkcji 2D w kuli. Jest to powszechna operacja w obliczeniach oświetlenia, np. Jedną z funkcji może być oświetlenie padające, a jedną funkcją BRDF. Przedstawiona jako SH, ta operacja jest po prostu iloczynem kropkowym dwóch wektorów współczynnika SH.

Kolejną interesującą operacją jest możliwość wydajnego filtrowania dolnoprzepustowego. Ponieważ SH jest reprezentowany w dziedzinie częstotliwości, jest to po prostu kwestia skalowania lub zerowania niektórych współczynników SH. Z drugiej strony niektóre inne operacje mogą być trudne do wykonania w SH w porównaniu z dziedziną przestrzenną, np. Jeśli chcesz obrócić funkcję przedstawioną jako SH, może to być dość kosztowne dla SH wyższego rzędu. Tak więc to naprawdę zależy od problemu, czy można go wykonać w SH, czy nie.

SH jest zwykle używany do reprezentowania tylko funkcji niskiej częstotliwości (tj. Płynnie zmieniających się funkcji), ponieważ wyższe częstotliwości wymagają zwiększenia ilości pamięci (współczynniki SH) i przetwarzania. Dlatego nie widzisz SH używanego na przykład do zastępowania odbić lustrzanych na błyszczących powierzchniach. Istnieją również strefowe harmoniczne sferyczne , które można wykorzystać do ograniczenia przechowywania i obliczeń dla funkcji 2D, które są obrotowo symetryczne względem osi Z, poprzez przechowywanie tylko elementów ukośnych macierzy współczynnika SH. Można także użyć harmonicznych półkuli, jeśli potrzebujesz zajmować się tylko funkcjami półkuli (również powszechnymi w oświetleniu), z tą zaletą, że mogą reprezentować częstotliwości podobne do SH z mniejszymi współczynnikami.

Jedną operacją, którą musisz wykonać, jest „projekcja SH” w celu przekształcenia danych domeny przestrzennej w SH. Możesz wykonać tę operację, wykonując splot danych w przestrzeni przestrzennej za pomocą funkcji bazowych SH. Interesującą właściwością SH jest to, że w przeciwieństwie do reprezentacji w przestrzeni przestrzennej SH nie cierpi na aliasing, więc nie masz artefaktów aliasingu nawet podczas projekcji na SH bardzo niskiego rzędu.

Sondy świetlne

Teraz, gdy rozumiesz podstawowe operacje i właściwości SH, możemy zastanowić się, jak zastosować je do GI. Sonda świetlna rejestruje ilość światła docierającego z każdego kierunku do punktu, w którym znajduje się sonda. Jest to funkcja 2D na kuli i może być reprezentowana jako SH (lub 3 funkcja SH dla czerwonego, zielonego i niebieskiego). W zależności od ilości szczegółów oświetlenia, które chcemy zakodować w sondach, możemy wybrać zamówienie SH.

W przypadku sond świetlnych używanych tylko do rozproszonego oświetlenia lambertowskiego SH dość niskiego rzędu SH jest wystarczający, ponieważ splot odbywa się za pomocą płata cosinusowego, który można przedstawić za pomocą SH rzędu 2 (9 współczynników). Współczynniki SH dla sond świetlnych można wygenerować, po prostu renderując mapę sześcienną w punkcie sondy, a następnie rzutując ją na SH.

Podczas renderowania geometrii pobieranych jest kilka najbliższych sond świetlnych, a ich wyniki interpoluje się, aby uzyskać funkcję oświetlenia padającego w punkcie w przestrzeni. Można to zrobić na przykład interpolując bezpośrednio współczynniki SH pobliskich sond, a następnie wykonując splot z pikselowym płatem cosinusowym o normalnej orientacji w domenie SH.

JarkkoL
źródło
Jakie są zalety stosowania tej metody w porównaniu z prostszym oświetleniem opartym na obrazie?
Arjan Singh
Możesz mieć oświetlenie niskiej częstotliwości o lepszej jakości z podobnymi wymaganiami dotyczącymi przechowywania i wydajności niż powiedzmy przy użyciu map sześciennych.
JarkkoL
16

Harmoniczne sferyczne

Jeśli wiesz, czym jest transformata Fouriera, już prawie wiesz, czym są harmoniczne sferyczne: są one po prostu transformatą Fouriera, ale na zasadzie sferycznej zamiast liniowej. Oznacza to, że podczas gdy transformata Fouriera jest innym sposobem przedstawiania funkcji , harmoniczne sferyczne są analogiczne dla funkcji polarnych .f ( θ , ϕ )f(x)f(θ,ϕ)

Jeśli nie wiesz, czym jest transformata Fouriera, musisz wiedzieć, zanim zrozumiesz harmoniczne sferyczne. Transformacja Fouriera pozwala przedstawić sygnał jako szereg fal sinusoidalnych i cosinusoidalnych, z których każda ma dwukrotnie większą częstotliwość niż ostatnia. Oznacza to, że możesz przedstawić sygnał jako jego średnią plus falę sinusoidalną, której długość fali jest taka sama jak długość sygnału, plus falę sinusoidalną dwa razy większą niż długość fali i tak dalej. Ponieważ transformata Fouriera utrwala cię do tych określonych długości fal, wystarczy zarejestrować amplitudę każdego z nich.

Zwykle używamy transformacji Fouriera do reprezentowania obrazów, które są tylko cyfrowymi sygnałami 2D. Jest to przydatne, ponieważ możesz wyrzucić niektóre fale sinusoidalne (lub zmniejszyć precyzję, z jaką przechowujesz ich amplitudę) bez znaczącej zmiany wyglądu obrazu dla ludzkich oczu. OTOH, wyrzucanie pikseli bardzo zmienia wygląd obrazu.

W próbkowanym sygnale, takim jak obraz, jeśli użyjesz takiej samej liczby fal sinusoidalnych, jak w oryginalnym obrazie były próbki (piksele), możesz dokładnie zrekonstruować obraz, więc kiedy zaczniesz wyrzucać dowolne częstotliwości, tworzysz obraz zajmuje mniej miejsca.

Harmoniczne sferyczne są jak transformaty Fouriera, ale zamiast fal sinusoidalnych używają funkcji sferycznej, więc zamiast funkcji liniowych (takich jak obrazy) mogą reprezentować funkcje zdefiniowane na kuli (takie jak mapy środowiska).

Sondy świetlne

Podobnie jak standardowy obraz rejestruje całe światło docierające do określonego punktu przez płaszczyznę obrazu, sonda świetlna rejestruje całe światło docierające do określonego punktu ze wszystkich kierunków. Najpierw wyszły z efektów filmowych. Jeśli chcesz dodać obiekt generowany komputerowo do sceny w świecie rzeczywistym, musisz być w stanie oświetlić obiekt syntetyczny za pomocą oświetlenia w świecie rzeczywistym. Aby to zrobić, musisz wiedzieć, jakie światło dociera do punktu sceny, w którym będzie znajdować się obiekt syntetyczny. (Uwaga: Chociaż mówię „oświetlenie”, rejestrujesz obraz całego światła, więc można go również użyć do odbić.)

Ponieważ nie możesz mieć aparatu z soczewką sferyczną, która rejestruje całe światło docierające do jednego punktu ze wszystkich kierunków, nagrywasz to, robiąc normalne zdjęcia sferycznego lustra, a następnie ponownie rzutując obrazy na kulę.

Poza efektami filmowymi częściej stosuje się sondy świetlne generowane ze sztucznej sceny. Wyobraź sobie, że masz jakiś drogi algorytm do obliczania globalnego oświetlenia (GI) w scenie, a także masz mniejsze obiekty poruszające się w tej scenie (takie jak poziom gry z graczami). Nie możesz uruchomić całego algorytmu GI za każdym razem, gdy porusza się dowolny obiekt, więc uruchom go raz ze sceną statyczną i zapisz sondy świetlne pobrane w różnych punktach poziomu. Następnie można uzyskać dobre przybliżenie GI, oświetlając odtwarzacz dowolną sondą świetlną, która jest najbliżej.

Używanie ich razem

Zasadniczo i tak chcesz odfiltrować ostre krawędzie w swoim globalnym oświetleniu, więc chcesz, aby sposób ich reprezentowania był zwarty i pozwalał z łatwością wyrzucać wysokie częstotliwości. Właśnie w tym harmoniczne sferyczne są naprawdę dobre! Dlatego często słyszysz te dwa terminy.

Sondy świetlne obliczasz za pomocą drogiego algorytmu GI - zwykle w narzędziu do projektowania poziomów, a może raz na sekundę (zamiast raz na klatkę), jeśli chcesz dołączyć do nich obiekty dynamiczne. Przechowujesz je tanio z harmonicznymi sferycznymi - 16 pływaków wystarcza na dość wysokiej jakości oświetlenie, ale nie na odbicia. Następnie dla każdego obiektu dynamicznego, który chcesz oświetlić, wybierasz najbliższą sondę świetlną (lub interpolujesz liniowo kilka razem) i używasz jej jako jednolitego lub stałego wejścia do modułu cieniującego. Powszechne jest również stosowanie harmonicznych sferycznych do reprezentowania danych okluzji otoczenia i bardzo tanie jest konwertowanie ich za pomocą sondy świetlnej, chociaż istnieje pewna złożoność wokół obracających się sferycznych funkcji harmonicznych.

Dan Hulme
źródło
Świetna odpowiedź, to naprawdę wszystko wyjaśniło! Zasadniczo więc sondy świetlne są łatwym sposobem na obliczenie oświetlenia poruszających się postaci, co uniemożliwia nam ponowne obliczenie wskaźnika GI dla całej sceny. Z drugiej strony sferyczne harmoniczne służą do filtrowania wysokich częstotliwości. (Popraw mnie, jeśli się mylę, staram się tylko sprawdzić, czy mam właściwe zrozumienie).
Arjan Singh
„jeśli użyjesz takiej samej liczby fal sinusoidalnych, jak na oryginalnym obrazie były próbki (piksele), możesz dokładnie odtworzyć obraz”, w rzeczywistości nie jest to prawda. Na przykład fala prostokątna wymaga nieskończonej liczby częstotliwości do dokładnego przedstawienia
JarkkoL
@JarkkoL Pewnie, prawdziwa fala prostokątna robi. Ale jeśli dyskretujesz to przez próbkowanie, potrzebujesz tylko tej samej liczby częstotliwości, aby błąd był mniejszy niż błąd próbkowania. Jest to przydatny wynik twierdzenia Nyquista (że najwyższa częstotliwość obecna w próbkowanym sygnale stanowi połowę częstotliwości próbkowania).
Dan Hulme
Ach tak, to prawda. Przypuszczam, że potrzebujesz połowy częstotliwości, ale złożone (w porównaniu z rzeczywistymi) wynikami w dziedzinie częstotliwości. Lub użyj domeny DCT i prawdziwej z podwójną częstotliwością DFT.
JarkkoL
5

Harmoniczne sferyczne

Załóżmy, że masz jakieś dane w tablicy, ale chcesz reprezentować te dane za pomocą mniejszej liczby bajtów.

Jednym ze sposobów na to może być wyrażenie danych jako funkcji zamiast surowych wartości.

Możesz przedstawić to jako funkcję liniową: y=ax+b

Następnie zamiast przechowywać tablicę wartości, możesz zapisać tylko i .bab

Problem polega na tym, że równanie liniowe jest prawdopodobnie słabym przybliżeniem danych.

Zamiast tego możesz wypróbować kwadrat: y=ax2+bx+c

Teraz zamiast przechowywania i , zapisać , i .b a b cababc

Zwiększyliśmy pamięć, a także złożoność obliczeniową przechowywania i pobierania danych, w porównaniu do równania liniowego, ale jest to lepsze przybliżenie do twojej tablicy danych. Możemy również wziąć to do funkcji sześciennej lub wyższej. Zwiększenie kolejności zwiększa pamięć, obliczenia i dokładność.

Harmoniczne sferyczne to sposób na utworzenie funkcji zdefiniowanej na kuli zamiast tak jak mówiłem powyżej.f(x)

Podobnie jak w powyższych przykładach, możesz użyć funkcji harmonicznych sferycznych niższego rzędu, aby uzyskać coś z mniejszą pamięcią i niższym obliczeniem do obliczenia danych, ale także z mniejszą dokładnością.

Z drugiej strony możesz zwiększyć kolejność i uzyskać lepsze przybliżenie do oryginalnych danych, ale kosztem większej ilości wymaganej przestrzeni dyskowej i więcej obliczeń potrzebnych do obliczenia punktu danych.

W skrajności możesz użyć tyle sferycznych określeń harmonicznych, ile miałeś próbek w swojej tablicy, a następnie możesz dokładnie zrekonstruować swoją oryginalną tablicę, ale robisz to dużo obliczeń i zużywasz tyle samo miejsca do przechowywania jak zacząłeś.

Z tego powodu w praktyce funkcje harmonicznych sferycznych nie przynoszą wiele korzyści, jeśli trzeba reprezentować drobne szczegóły - jak ostre odbicie na kuli - ale mogą być tanie dla danych, które nie mają drobnych szczegółów (dane, które nie zawierają mają dużo treści o wysokiej częstotliwości). Są również przydatne do wykonywania obliczeń w dziedzinie częstotliwości, takich jak analiza spektralna lub splot.

Jednym z takich danych, które dobrze przechowują, jest „natężenie napromienienia”, czyli ilość światła padającego na punkt z innych kierunków. Wygląda na nieco rozmytego, co oznacza, że ​​ma tylko niską częstotliwość i jest dobrym kandydatem do przechowywania w funkcji sferycznych harmonicznych.

Wyjaśnienia dotyczące sond świetlnych pozostawię innej osobie: str

Alan Wolfe
źródło
Dlaczego głosowanie w dół? : P
Alan Wolfe
Nie jest prawdą, że harmoniczne sferyczne nie są dobre w przedstawianiu drobnych szczegółów. Podobnie jak transformata Fouriera, mogą one zrekonstruować oryginalny sygnał dokładnie, jeśli zachowasz wszystkie częstotliwości. Po prostu ułatwiają oszczędzanie miejsca, wyrzucając wysokie częstotliwości, jeśli ich nie potrzebujesz.
Dan Hulme
I przepraszam, pomyślałem po głosowaniu, że ciężko było głosować za jednym wątpliwym roszczeniem w odpowiedzi, która byłaby pomocna, ale mój głos został zablokowany, gdy zastanowiłem się nad tym.
Dan Hulme
Ach Tak, jest to możliwe, w taki sam sposób, w jaki można reprezentować dowolny zestaw danych za pomocą wielomianu, ale w praktyce oba są złym wyborem, ponieważ wymagają ścisłego dopasowania do wielu punktów danych. W przypadku wielomianu potrzebujesz N terminów funkcji N rzędu, aby na przykład dokładnie dopasować N punktów danych, co czyni go gorszym wyborem niż tylko tablica, ponieważ jej obliczenie, a nie wyszukiwanie, pozwala uzyskać punkt danych. Podobnie, w praktyce, harmoniczne sferyczne są złym wyborem dla danych sferycznych z zawartością wysokiej częstotliwości, które chcesz zachować. W takich sytuacjach nie jest to dobry wybór.
Alan Wolfe
To prawda, jeśli chcesz być w stanie zrekonstruować poszczególne próbki, ale nie wszystkie zastosowania Fouriera tego wymagają - podobnie nie w przypadku wszystkich zastosowań SH. Jeśli masz zamiar zrobić splot, znacznie taniej jest to zrobić w dziedzinie częstotliwości przed powrotem do próbek. Czy miałbyś coś przeciwko, żebym zaproponował edycję, która uczyniłaby to jaśniejszym w twojej odpowiedzi, po zakończeniu mojej własnej odpowiedzi?
Dan Hulme