Website powered by

Baking Ambient Occlusion on stacked UV's

Bejkowanie AO jest tak prostym procesem, jak długo można sobie pozwolić na szybki (często automatyczny) unikalny unwrap. Problem zaczyna się w przypadku skomplikowanych modeli, gdzie unikalny unwrap na pojedynczym arkuszu UV daje w rezultacie bardzo niską gęstość tekstury. Rozwiązaniem są podziały na kolejne ID materiałowe, kombinowanie z UDIMami, kanałami UV itp. W rezultacie powstaje dylemat pomiędzy szybkim bejkiem dającym niskiej jakości mapę AO, a pracochłonnymi, i o dziwo pod względem optymalizacji wcale nie lepszymi alternatywnymi rozwiązaniami.
W przypadku modeli o dużej powtarzalności elementów lub/i modułów, prosi się samo o zastosowanie starego triku z blokerami. Niestety metoda ta również bywa pracochłonna i wymaga sporej uwagi, ale rezultaty są bardzo dobre - otrzymuje się mapę o dużej gęstości tektury. W przypadku modeli o dużej symetrii dodatkowo metoda ta produkuje niewielką ilość artefaktów, które mogą być potem ręczenie korygowane na już gotowej mapie. System obiektów blokujących to powtórzenia geometrii wchodzące w proces wyliczania okluzji, ale nie mające swojego odzwierciedlenia na mapie UV - w bejkerze mają przypisany inny, nieistotny materiał który nie podlega procesowy wypalania.
Po otrzymaniu mapy AO dla poszczególnych modułów wystarczy podmienić model na złożony z wszystkich elementów (ale o identycznym rozkładzie shelli na UV!).
W stakowaniu shelli podczas ich pakowania na UV pomocne są "grupy" w edytorze Unwrap UVW, w 3ds max. Ich złożenie z zasady musi być ręczne, ale pomocne są tutaj snappingi UVsowych werteksów. Grupy te pozwalają na nie-rozsypywanie się shelli po przepakowaniu mapy, a nawet na ograniczone możliwości zmiany wzajemnych skal grupy (ich roznormalizowania). Blender z kolei ma bardzo dobre rozwiązanie znajdowania i stakowania identycznych shelli (niestety za pomocą pluginu).
Powyższy przykład powstał na potrzeby szybkiego stworzenia low-poly modelu sceny drugiego planu - model nie musiał być oteksturowany (był stylizowany), natomiast mapa AO multiplikowana w shaderach z BaseColor bardzo podkreśla jego detal nawet z większej odległości.

Gotowa, wypalona (wyliczona) mapa AO.

Gotowa, wypalona (wyliczona) mapa AO.

System blokerów otaczających moduły modelu dla poprawnego wyliczenia okluzji od elementów nie pochodzacych z modułów.  Widoczny checker dla kontroli gęstości tekstury. (3ds Max)

System blokerów otaczających moduły modelu dla poprawnego wyliczenia okluzji od elementów nie pochodzacych z modułów. Widoczny checker dla kontroli gęstości tekstury. (3ds Max)

Wypalone AO na modułach. Okluzja wyliczona jest nie tylko z modułów, ale popchodzi również od rozstawionych blokerów (niebieskie). (Substance Painter)

Wypalone AO na modułach. Okluzja wyliczona jest nie tylko z modułów, ale popchodzi również od rozstawionych blokerów (niebieskie). (Substance Painter)

Efekt końcowy - Mapa AO o dużej gęstości tekstury, zachowanej dzięki stakowaniu shells`ów na mapie UV

Efekt końcowy - Mapa AO o dużej gęstości tekstury, zachowanej dzięki stakowaniu shells`ów na mapie UV

AO mapa złożonych modułów z widocznym wireframe low-poly modelu.

AO mapa złożonych modułów z widocznym wireframe low-poly modelu.

Mapa UV (z AO) z widocznymi zestakowanymi shellami - przy pełnym unikalnym unwrupie dla tak złożonego modelu, gęstość tekstury zeszłaby do w zasadzie niepraktycznego poziomu.

Mapa UV (z AO) z widocznymi zestakowanymi shellami - przy pełnym unikalnym unwrupie dla tak złożonego modelu, gęstość tekstury zeszłaby do w zasadzie niepraktycznego poziomu.