Kalibracja znormalizowanej mapy do metrów, pułapki filtrowania kanału Z, kiedy deep jest jedynym wyjściem i ile kosztuje.
Zanim cokolwiek policzy się z mapy głębi, trzeba wiedzieć, którą wielkość ona zawiera. Cztery bywają nazywane tak samo, a różnią się na tyle, że pomylenie ich daje rozmycie błędne w całym kadrze.
| Wariant | Co mierzy | Rozpoznasz po |
|---|---|---|
| odległość wzdłuż osi | składowa Z w układzie kamery | płaska ściana prostopadła do osi ma jedną wartość |
| odległość euklidesowa | długość promienia od źrenicy | ta sama ściana jaśnieje ku rogom kadru |
| głębia znormalizowana | wartość 0–1 między płaszczyznami obcięcia | zakres dokładnie 0–1, nieliniowo rozłożony |
| odwrotność odległości | 1/Z | tło ma wartości bliskie zeru, nie ogromne |
Test rozpoznawczy zajmuje sekundę: wystaw w scenie płaską ścianę prostopadłą do osi i sprawdź, czy jest jednolita.
Różnica między dwoma pierwszymi wariantami rośnie z kątem polowym i jest większa, niż podpowiada intuicja. Punkt leżący w rogu kadru przy kącie polowym θ ma odległość euklidesową większą o czynnik 1/cos θ — czyli przy 24 mm na pełnej klatce, gdzie kąt rogu wynosi 42°, aż o 35 procent.
Do rozmycia potrzebna jest odległość wzdłuż osi, bo to ona wchodzi we wzór na krążek. Użycie euklidesowej daje rozmycie rosnące ku rogom kadru w sposób, którego żaden obiektyw nie robi — a objaw jest łatwy do pomylenia z winietowaniem albo z krzywizną pola.
Wzór jest ten sam, co w Dodatku E, tylko rozwiązany w drugą stronę: zamiast pytać, jaka głębia mieści się w dopuszczalnym krążku, pytamy, jaki krążek daje dana odległość.
Na piksele przelicza się przez stosunek szerokości kadru w pikselach do szerokości bramki:
Rachunek pokazuje przy okazji, dlaczego rozmycie z mapy głębi bywa kosztowne obliczeniowo: promień jądra splotu sięga tu osiemdziesięciu pikseli, a naiwny splot kosztuje kwadrat promienia. Stąd biorą się przybliżenia stosowane w narzędziach — i stąd ich artefakty.
| Sytuacja | Dlaczego | Objaw |
|---|---|---|
| krawędź na tle o innej odległości | piksel niesie mieszankę, mapa wybiera jedną | ostra obwódka albo halo |
| przezroczystość | przez piksel widać dwie rzeczy naraz | szyba rozmywa się jak to, co za nią |
| ruchome rozmycie już w obrazie | mapa jest ostra, obraz nie | rozmyty przedmiot dostaje ostrą maskę rozmycia |
| przedmiot rozciągnięty w głąb | rozmycie liczone na piksel, nie na powierzchnię | skokowa zmiana rozmycia wzdłuż płaszczyzny |
Pierwszy wiersz jest najczęstszy, drugi najbardziej nieusuwalny, trzeci najczęściej mylony z błędem trackingu.
Trzeci wiersz zasługuje na osobne omówienie, bo jego przyczyna jest inna niż pozostałych. Mapa głębi zapisuje się bez rozmycia ruchu — jest ostra, bo próbkowana w jednej chwili. Obraz kolorowy jest rozmyty. Nakładając jedną na drugą, dostajemy rozmycie głębi o ostrych granicach na przedmiocie, który tych granic nie ma.
Obejście jest proste i warto je znać: rozmycie głębi wykonuje się przed rozmyciem ruchu, na obu kanałach ostrych. Odpowiada to zresztą rzeczywistości, bo obiektyw rozmywa w głąb niezależnie od tego, co dzieje się w czasie, a nośnik całkuje dopiero potem. Jest to jeden z tych przypadków, gdzie właściwa kolejność w compie wynika wprost z kolejności w kamerze — temat Rozdziału 36.
Rozmywanie warstwami. Zamiast jednej mapy dla całej sceny, render zapisuje kilka warstw o rozłącznych zakresach głębi, każdą z własnym kryciem. Każdą rozmywa się osobno pełnym promieniem, a potem składa od tyłu do przodu. Rozwiązuje to pierwszy i czwarty wiersz tabeli, bo w obrębie warstwy krawędź ma prawidłowe krycie, a to, co za nią, istnieje w warstwie niżej.
Koszt: kilka razy więcej danych i konieczność ustalenia zakresów przy renderze. Zysk: wynik nie do odróżnienia od renderowanej głębi, jeśli warstw jest dość.
Głębia razem z kryciem. Rozmywa się element wraz z jego kanałem krycia, przed złożeniem z tłem. Krawędź elementu staje się wtedy miękka tak jak on sam, więc obwódka znika. Nie pomaga to tam, gdzie przedmiot przecina sam siebie na różnych odległościach — ale na granicy z tłem, czyli w większości ujęć, wystarcza.
Rozmycie kierunkowe od tyłu. Wariant, w którym piksele bliższe mają prawo rozlewać się na dalsze, ale nie odwrotnie. Odtwarza to zachowanie prawdziwego obiektywu, w którym nieostry pierwszy plan zachodzi na ostre tło, a nie na odwrót. Poprawia wygląd, nie usuwa braku danych.
Kiedy żaden nie pomoże? Gdy informacji nie ma i nie da się jej dorobić: przy elementach, w których krawędzi jest więcej niż wnętrza — włosy, dym, siatka, listowie pod światło. Wtedy obowiązuje reguła z Rozdziału 34 i głębię liczy się w rendererze. Jest to jedno z niewielu miejsc w tej książce, gdzie odpowiedź brzmi po prostu „tego nie da się zrobić taniej”.