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 .
l
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.
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.
źródło
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 .ba b
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 ca b a b c
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
źródło