Jak złożyć środowisko z tysięcy assetów bez kopiowania ich do jednego pliku — problem, który Pixar rozwiązał dla siebie, a potem oddał całej branży.
TL;DR
USD nie kopiuje assetów do jednego pliku sceny — składa gotowy widok (stage) w locie z osobnych warstw, z których każda dokłada tylko swoją część.
Referencje pozwalają użyć tego samego assetu w tysiącu miejsc bez duplikowania danych — generalizacja zasady „jeden asset, wiele shotów" z Rozdziału 2, tym razem dla całych scen.
To, co Pixar zbudował dla własnej produkcji i oddał branży w 2016 roku jako otwarty standard, jest dziś wspólnym językiem niemal każdego dużego studia — poznasz to bliżej w Dodatku P.
Wyobraź sobie środowisko lasu z dziesięciu tysięcy drzew, każde nieco inne, plus postacie, pojazdy i rekwizyty porozrzucane po całej scenie. Tradycyjne podejście — zaimportuj wszystko do jednego pliku sceny — zawala się przy takiej skali: plik staje się gigantyczny, każda zmiana w jednym drzewie wymaga ręcznego zaktualizowania dziesięciu tysięcy kopii, a dwóch artystów pracujących nad tą samą sceną (layout i fx) nieustannie nadpisuje sobie nawzajem pracę. USD (Universal Scene Description) istnieje po to, żeby ten problem rozwiązać u źródła.
Etap: Kompozycja, nie kopiowanie
Scena składana w locie, nie scalana na stałe
Centralna idea USD nazywa się kompozycją. Zamiast trwale scalać dane wielu assetów w jeden plik, USD trzyma je osobno i składa gotowy widok — nazywany stage — dopiero w momencie otwarcia albo renderu, na podstawie zestawu reguł mówiących, co się z czego bierze. Każdy plik USD, który dokłada swoją część do tej układanki, nazywa się warstwą (layer). Nic nie jest kopiowane — stage to zawsze żywe złożenie warstw, nie ich trwały zapis.
Etap: Trzy podstawowe mechanizmy
Reference, warstwy, warianty
Referencja — wskazanie na inny plik USD (albo Alembic, Rozdział 10) jako źródło danych, zamiast kopiowania ich do bieżącej sceny. Dziesięć tysięcy drzew w lesie to w praktyce dziesięć tysięcy referencji do garstki opublikowanych assetów drzew, nie dziesięć tysięcy kopii geometrii.
Warstwy (sublayers) — kilka plików USD nakłada się na siebie, każdy dokładając własną „opinię" o tej samej scenie: warstwa layoutu ustawia pozycje, warstwa fx dokłada symulację, warstwa lightingu dokłada światła. Każdy dział edytuje wyłącznie swoją warstwę — nikt nie nadpisuje pracy innego działu, bo fizycznie znajduje się ona w innym pliku.
Warianty (variants) — przełącznik pozwalający wybrać jedną z kilku wersji tego samego assetu (inny strój postaci, inny poziom szczegółowości geometrii) bez duplikowania całego assetu dla każdej opcji.
To celowo uproszczony opis — pełne, precyzyjne reguły pierwszeństwa między warstwami (tzw. composition arcs) mają swój dokładny porządek i wyjątki, które rozkładamy krok po kroku w Dodatku B.
Stage.composeCztery warstwy, jeden shot
Każdy dział edytuje własną warstwę osobno — stage to ich żywe, nietrwałe złożenie.
Etap: Skąd się to wzięło
Narzędzie wewnętrzne, które stało się standardem
USD nie powstał jako projekt akademicki ani inicjatywa konsorcjum — to narzędzie, które Pixar zbudował dla samego siebie, żeby udźwignąć rosnącą złożoność własnych produkcji, od Cars po Coco. W 2016 roku studio zdecydowało się oddać je światu jako otwarty standard. Dziś, dekadę później, USD jest fundamentem pipeline'u w studiach, które nigdy nie miały nic wspólnego z Pixarem — od Weta Digital po Animal Logic — a Alliance for OpenUSD (AOUSD), konsorcjum obejmujące m.in. Apple, Adobe, Nvidię i Autodesk, rozwija go dalej jako wspólną własność całej branży. Bliżej tej historii i decyzji, która za nią stała, przyjrzymy się w Dodatku P (Pixar) i Dodatku S (poza Pixarem).
Słowniczek
Stage
Gotowy, złożony widok sceny — wynik kompozycji wielu warstw USD w danym momencie.
Layer (warstwa)
Pojedynczy plik USD dokładający własną „opinię" o scenie, edytowany niezależnie od innych.
Reference (referencja)
Wskazanie na dane w innym pliku zamiast ich kopiowania — podstawa wielokrotnego użycia assetów.
Variant (wariant)
Jedna z kilku wymiennych opcji tego samego assetu, wybierana bez duplikowania danych.
Prim
Podstawowa jednostka sceny USD (obiekt w hierarchii) — odpowiednik węzła w outlinerze DCC.
Co dalej
Mamy już geometrię (Alembic) i sposób składania całych scen (USD). Następny rozdział zajmuje się czymś równie fundamentalnym i równie łatwym do zepsucia: kolorem — dlaczego ta sama tekstura musi wyglądać identycznie w każdym programie, przez który przechodzi.