ARNOLD · AOV lobowe, na sztywnoRENDERMAN · LPE, wyrażeniaSAMPLING · globalne, nie per-materiał
Rozdział 23 / Oświetlenie i review

AOV, debugging looku, Arnold vs RenderMan

Kiedy look wygląda źle, pytanie nie brzmi „który parametr zmienić”, tylko „w którym AOV widać winowajcę” — a Arnold i RenderMan dochodzą do czystego obrazu różnymi ścieżkami samplingu.

TL;DR
Etap: Dwa modele

Loby na sztywno kontra wyrażenia

Arnold deklaruje AOV przez tablicę outputs na node'zie opcji (to, co faktycznie trafia do pliku .ass, niezależnie od hosta) — w Mayi aiAOV i AOV Manager to warstwa wygody nad tym samym mechanizmem. Domyślny zestaw jest gotowy bez żadnej konfiguracji: pary direct/indirect dla każdego loba (diffuse_direct/diffuse_indirect, specular_direct/specular_indirect, coat_direct/coat_indirect, transmission_direct/transmission_indirect, sss_direct/sss_indirect, volume_direct/volume_indirect), plus agregaty (diffuse, specular, sss...) i AOV pomocnicze (N, P, Z, motionvector, Cryptomatte). Warto zapamiętać: sss i transmission nie są pojedynczymi, płaskimi AOV — mają ten sam podział direct/indirect co diffuse i specular, łatwo o tym zapomnieć, budując panel debugujący na pamięć.

RenderMan zamiast gotowego zestawu daje język: LPE opisuje ścieżkę światła jako wyrażenie regularne. Symbole: C — kamera, zawsze początek ścieżki; D — zdarzenie diffuse; S — zdarzenie specular; L — trafienie w światło; O — emisja z obiektu; modyfikatory R/T (odbite/przepuszczone) doklejane do liter zdarzeń. RenderMan pozwala nawet adresować osobno kilka lobów diffuse i specular tego samego materiału (do czterech diffuse, do ośmiu specular), gdy shader je rozróżnia. Ten sam zestaw AOV, który Arnold daje gotowy z automatu, w RenderManie trzeba złożyć samodzielnie z tych symboli.

Etap: LPE w Arnoldzie

Arnold ma LPE, ale jako furtkę, nie fundament

Arnold również wspiera Light Path Expressions (od wersji 5.0) — dokładnie po to, żeby wyciągnąć coś, czego gotowy, lobowy zestaw AOV nie przewidział. Różnica filozofii jest tu ważniejsza niż sama obecność LPE po obu stronach: w Arnoldzie stały słownik AOV jest domyślny i zarządzany przez hosta, LPE to świadomie dopisywane rozszerzenie dla nietypowego zapytania. W RenderManie to wyrażenie jest podstawowym, pierwszym narzędziem do niemal wszystkiego, łącznie z tym, co Arnold wystawia gotowe z pudełka.

Etap: Diagnoza szumu

Który sampling podnieść, i gdzie on w ogóle mieszka

Arnold rozdziela dwa poziomy samplingu, oba globalne, żyjące na node'zie opcji renderu, nie na materiale: AA_samples (próbki na piksel/kamerę — rzeczywista liczba promieni to kwadrat tej wartości) i osobno GI_diffuse_samples, GI_specular_samples, GI_transmission_samples, GI_sss_samples, GI_volume_samples (próbki per lob, też liczone jako kwadrat, „na każdą próbkę kamery”). Częste błędne założenie: że te ostatnie siedzą na standard_surface per materiał — nie, są globalne dla całej sceny. Diagnoza: szum wszędzie (krawędzie, DOF, motion blur) → podnieś AA_samples; szum widoczny tylko w jednym AOV (np. tylko specular_indirect) → podnieś dopasowany GI_*_samples, nie globalny AA.

RenderMan rozdziela to inaczej: sampling pikselowy/kamery żyje na hiderze (liczba próbek, adaptacyjność sterowana progiem wariancji pikseli), a sampling per lob — na integratorze PxrPathTracer: światło bezpośrednie przez numLightSamples i numBxdfSamples (łączone przez multiple importance sampling), światło pośrednie przez osobne numDiffuseSamples, numSpecularSamples, numSubsurfaceSamples, numRefractionSamples, gdy tryb samplingu jest ustawiony na ręczny. Ten sam podział koncepcyjny co w Arnoldzie — jedna gałka na piksel, osobne gałki per lob — tylko mieszkający w innym miejscu grafu (integrator zamiast globalnych opcji).

Z praktyki

Zanim dotkniesz jakiegokolwiek suwaka materiału, wyizoluj AOV specularu samego i sprawdź, czy błysk w ogóle ląduje tam, gdzie geometria i oświetlenie mówią, że powinien — to od razu rozdziela „zły materiał” od „złe światło albo złe normalne”, zanim zaczniesz zgadywać. Oba renderery wystawiają też pomocnicze AOV pod denoisery — albedo, normal i warianty wariancji (*_variance w Arnoldzie, statystyki wariancji per-AOV w RenderManie) — warto mieć je włączone od razu, nie dopiero gdy szum stanie się problemem na koniec produkcji.

Słowniczek
AOV (Arbitrary Output Variable)
Dodatkowa warstwa renderu, rozbijająca obraz na komponenty (diffuse, specular, sss...) zamiast jednego zbiorczego beauty.
LPE (Light Path Expression)
Wyrażenie opisujące konkretną ścieżkę światła (kamera → zdarzenia → światło) — podstawowy mechanizm AOV w RenderManie, dodatek w Arnoldzie.
GI_*_samples (Arnold)
Globalne liczby próbek per lob transportu (diffuse, specular, sss...), na node'zie opcji renderu, nie na materiale.
PxrPathTracer sampleMode
Tryb samplingu integratora RenderMana; ręczny odsłania osobne liczby próbek per lob (diffuse, specular, subsurface, refraction).