Dwie rzeczy muszą się zgadzać, zanim cokolwiek dołożysz: gdzie naprawdę jest głębia i jak obiektyw wygiął obraz. Obie potrafią wyglądać dobrze i być kompletnie błędne.
Raport zdjęciowy bywa niekompletny, spóźniony albo nieprawdziwy — a praca ma iść dalej. Na szczęście obraz sam niesie dowody, bo każde zjawisko z tej książki jest funkcją parametrów kamery i daje się odwrócić.
Kąt widzenia z prostych. Dwie równoległe w scenie proste, biegnące ku horyzontowi, przecinają się w kadrze w punkcie zbiegu. Odległość tego punktu od środka kadru wiąże się z kątem, pod jakim proste biegły — a mając dwie takie pary o znanym kącie, na przykład dwie krawędzie prostokątnego budynku, kąt widzenia wyznacza się jednoznacznie.
Wysokość kamery z horyzontu. Linia horyzontu przecina każdą pionową rzecz na wysokości oka kamery. Człowiek, którego horyzont przecina na wysokości pasa, mówi, że kamera stała mniej więcej metr nad ziemią — bez żadnego rachunku i z dokładnością wystarczającą do zaczęcia pracy.
Przysłona z rozmycia. Znając odległość ostrzenia i mierząc średnicę krążka rozmycia jakiegoś punktowego światła w tle, przysłonę liczy się wprost ze wzoru na głębię z Dodatku E.
Kąt migawki ze smugi. Stosunek długości smugi do przesunięcia między klatkami to kąt migawki wyrażony ułamkiem — rachunek z Dodatku R.
Warto zauważyć, że te pomiary kontrolują się nawzajem. Kąt widzenia zmierzony z punktów zbiegu musi zgadzać się z ogniskową z raportu przy właściwej bramce. Jeśli nie zgadza się, jedna z trzech rzeczy jest błędna — i sam fakt niezgodności jest cenną informacją, bo wskazuje, gdzie szukać.
Obiektyw rzadko odwzorowuje proste jako proste. Dystorsja beczkowata i poduszkowata z Rozdziału 12 to odchylenie rzeczywistego kadru od tego, co zakłada każde narzędzie do trackingu i każda kamera renderera.
Ma to konsekwencję, która bywa źródłem długich poszukiwań: element dopasowany do zniekształconego plate'u trzyma się w środku kadru i rozjeżdża przy brzegach. Przyczyna jest oczywista, gdy się ją nazwie — renderer rysuje idealny rzut perspektywiczny, a plate go nie ma.
Standardowe postępowanie jest trzyetapowe i warto rozumieć, dlaczego akurat takie.
Etap 1: zdjąć dystorsję z plate'u. Powstaje obraz zgodny z rzutem perspektywicznym — czyli z tym, co renderer i tracker umieją. Przy okazji obraz nieco się rozciąga na brzegach, więc trzyma się większy prostokąt niż oryginał.
Etap 2: pracować na wyprostowanym. Tracking, ustawienie kamery, render elementu — wszystko w świecie bez dystorsji, gdzie proste są proste i geometria się zgadza.
Etap 3: nałożyć dystorsję na element i złożyć z oryginałem. Nie na wyprostowany plate — na oryginalny, nietknięty. W ten sposób plate nigdy nie przechodzi przez przepróbkowanie, a więc nie traci ostrości ani ziarna.
Jak zmierzyć dystorsję z siatki, jak zapisać ją jako STMapę i dlaczego STMapa bywa lepsza od wzoru — Dodatek V.
Tracking daje kamerę poruszającą się w przestrzeni, ale nie daje jej skali. Ta sama chmura punktów opisuje pokój przemierzany krokiem i stadion przemierzany biegiem — obraz nie zawiera informacji o wielkości sceny i zawierać jej nie może, bo perspektywa jest niezmiennicza względem skalowania.
Wynika stąd, że skalę trzeba wnieść z zewnątrz, i wystarczy do tego jedna zmierzona odległość. Jedna, nie kilka — wszystkie pozostałe wynikają z niej przez proporcje, które tracking już zna.
Najwygodniejsze źródła tej jednej liczby, w kolejności od najpewniejszego:
Warto pamiętać o rzeczy, która czyni ten krok ważniejszym, niż wygląda: skala wchodzi w każde zjawisko zależne od odległości. Głębia ostrości, natężenie świateł spadające z kwadratem odległości, rozmycie ruchu liczone z prędkości — wszystkie te rzeczy będą fałszywe w scenie o złej skali, i to fałszywe w sposób spójny, więc trudny do wykrycia. Scena dwukrotnie za mała da głębię ostrości jak przy makrofotografii, a przyczyna nie będzie widoczna nigdzie poza wynikiem.
Tracking odczytuje ruch kamery z tego, jak przesuwają się w kadrze punkty sceny. Kluczowa jest tu jedna zależność, którą warto rozumieć, bo tłumaczy większość niepowodzeń: przesunięcie punktu w kadrze zależy od jego odległości tylko wtedy, gdy kamera zmienia położenie.
Przy panoramie z jednego miejsca wszystkie punkty przesuwają się identycznie, bez względu na to, czy leżą metr, czy kilometr od kamery. Wynikało to już z Dodatku R, gdzie prędkość obrazu przy panoramie okazała się niezależna od odległości. Konsekwencja dla trackingu jest ostra: ujęcie kręcone z głowicy, bez przesunięcia, nie zawiera informacji o głębi sceny — i nie ma programu, który by ją stamtąd wydobył.
Warto dodać, że wielkość paralaksy zależy nie tylko od tego, ile kamera przejechała, ale od stosunku tej drogi do odległości przedmiotów. Metr przesunięcia przy przedmiotach oddalonych o dwa metry daje paralaksę ogromną; ten sam metr przy panoramie miasta z dachu daje zerową. Ujęcie krajobrazowe z ręki jest więc, z punktu widzenia trackingu, panoramą — mimo że kamera fizycznie się poruszała.
Praktyczne skutki są dwa i oba wypada znać przed rozpoczęciem pracy, a nie po.
Ujęcie z samej panoramy rozwiązuje się jako obrót i tylko jako obrót. Da się w nie wstawić element odległy albo element trzymający się jednej płaszczyzny, ale nie da się zbudować przestrzeni. Nie jest to wada narzędzia; jest to brak danych.
Mała paralaksa jest gorsza niż żadna. Ujęcie z ledwie zauważalnym przesunięciem daje rozwiązanie o dużej niepewności — kamera dryfuje, punkty pływają, a wynik wygląda na błąd trackingu, choć jest poprawnym rozwiązaniem źle uwarunkowanego zadania. Wtedy uczciwiej jest potraktować ujęcie jak panoramę, niż walczyć o głębię, której w nim nie ma.
Część informacji z tego rozdziału daje się wydobyć z obrazu, ale znacznie taniej jest zebrać ją na planie. Poniższa lista to rzeczy, których nieobecność kosztuje potem godziny — uporządkowane według tego, ile kosztują na planie.
Dwie pozycje z tej listy zasługują na komentarz, bo bywają pomijane jako oczywiste.
Siatka musi być z tego samego szkła i z tej samej przysłony. Dystorsja zależy od obiektywu, a przy zoomie także od ogniskowej — siatka z innego szkła opisuje inny kadr. Przy zoomie warto mieć ją z obu końców zakresu i ze środka, bo dystorsja zmienia się w trakcie i potrafi zmienić znak.
Zdjęcia otoczenia z ręki są warte więcej, niż kosztują. Nie chodzi o precyzyjną mapę oświetlenia, tylko o to, żeby wiedzieć, co stało dookoła — odbicia w scenie CG muszą mieć co odbijać, a pamięć ludzka nie przechowuje układu jasnych i ciemnych plam w pomieszczeniu.
Ostatnia uwaga dotyczy formy. Zapisz te rzeczy tak, żeby dało się je znaleźć bez ciebie — w nazwie pliku, w notatce obok ujęcia, w tym samym katalogu. Materiał zebrany na planie i zagubiony w strukturze folderów jest praktycznie równoważny materiałowi niezebranemu, a kosztował więcej.
Zmierz kąt widzenia z obrazu, nawet gdy masz raport. Zajmuje to kilka minut i wychwytuje najczęstsze pomyłki: złą bramkę, nieudokumentowane przycięcie i zapisaną ogniskową zooma, która w trakcie ujęcia się zmieniała.
Nigdy nie składaj na wyprostowanym plate'cie. Każde przepróbkowanie zmiękcza obraz i rozmazuje ziarno. Plate ma przejść przez łańcuch dokładnie raz — jako tło przy składaniu, w oryginalnej postaci.
Zapisz skalę razem ze sceną, w metrach. Nie „jednostka to mniej więcej metr”, tylko konkretnie: co zmierzono, ile wyszło i skąd ta liczba. Jest to informacja, której nie da się odtworzyć z plików, gdy ujęcie wraca po miesiącu.
Zostały wszystkie zjawiska z tej książki i pytanie, w jakiej kolejności je nakładać. Następny rozdział pokazuje, że kolejność nie jest kwestią przyzwyczajenia: wynika wprost z tego, w jakiej kolejności zdarzały się w prawdziwej kamerze — a każde odstępstwo daje błąd, który da się nazwać z góry.
Zasada „plate przechodzi przez łańcuch dokładnie raz” brzmi jak przesadna ostrożność. Warto zobaczyć, co dokładnie się traci, bo strata jest mierzalna i kumuluje się szybciej, niż podpowiada intuicja.
Ostrość. Nowy piksel powstaje jako średnia ważona kilku starych. Każde takie uśrednienie jest filtrem dolnoprzepustowym — obniża odpowiedź na wysokich częstotliwościach przestrzennych, czyli dokładnie tam, gdzie leży drobny detal. Kaskada z Dodatku H stosuje się tu bez zmian: dwa przepróbkowania mnożą się przez siebie.
Ziarno. Uśrednianie sąsiednich pikseli zmniejsza wariancję szumu i jednocześnie zwiększa jego zasięg przestrzenny — ziarno staje się słabsze i grubsze naraz. Jest to najbardziej rozpoznawalny objaw plate'u przepuszczonego przez zbyt wiele przekształceń, bo oko dobrze zna wygląd ziarna i wyłapuje zmianę bez świadomej analizy.
Krawędzie zapisane z aliasingiem. Materiał, w którym pojawia się schodkowanie, po przepróbkowaniu dostaje schodki w nowych miejscach — i one już nie są zgodne z niczym w scenie.
Rachunek pokazuje skalę: przepróbkowanie filtrem sześciennym obniża odpowiedź przy połowie częstotliwości Nyquista o kilkanaście procent. Jedno przejście jest niewidoczne. Trzy — zdjęcie dystorsji, stabilizacja i przeskalowanie do rozdzielczości docelowej — dają już spadek, który da się porównać obok siebie z oryginałem.
Stąd praktyczna reguła: jeśli przekształceń geometrii ma być kilka, złóż je w jedno i wykonaj raz. Zdjęcie dystorsji, przesunięcie i przeskalowanie dają się połączyć w jedną STMapę, a wtedy obraz jest próbkowany dokładnie raz, niezależnie od tego, ile operacji opisuje mapa. Sposób opisuje Dodatek V.