DODATEK · CPORÓWNANIE · Alembic / USDEXT OF · Rozdział 10
Dodatek C / Głębiej: Wymiana danych

Alembic kontra USD: kiedy które

Oba zamrażają geometrię w czasie, ale jeden z nich potrafi więcej niż tylko cache'ować kształt — kiedy ta różnica ma znaczenie, a kiedy jest tylko teorią.

TL;DR

Rozdział 10 i Rozdział 11 opisały dwa różne rozwiązania na pierwszy rzut oka podobnego problemu — jak przenieść geometrię między programami i działami. Ten dodatek zestawia je wprost, bo pytanie „Alembic czy USD" pojawia się w realnej pracy pipeline TD częściej, niż sugerowałaby prostota obu poprzednich rozdziałów.

Etap: Różna ambicja, nie różna jakość

Cache kontra system kompozycji

Alembic (Rozdział 10) robi celowo jedną rzecz: zapisuje wynik — pozycje, kształty, transformacje w czasie — w formie zoptymalizowanej pod szybki, sekwencyjny odczyt. Nie wie nic o warstwach, wariantach czy nieniszczących nadpisaniach; żeby cokolwiek w nim zmienić, wracasz do źródła i zapiekasz na nowo. USD (Rozdział 11) rozwiązuje szerszy problem — składanie całych scen z wielu, niezależnie edytowalnych warstw — i ta szerokość ambicji ma swoją cenę: silnik kompozycji, który trzeba rozwiązać, zanim cokolwiek się wyświetli, jest z natury bardziej złożony niż sekwencyjny odczyt pliku Alembic.

Alembic
  • Wyłącznie do odczytu, brak nadpisań
  • Brak materiałów, wyłącznie geometria
  • Prosty, szybki sekwencyjny odczyt
  • Dobry do przekazania jednego, zamkniętego wyniku
USD
  • Nieniszczące warstwy i nadpisania (Dodatek B)
  • Materiały, warianty, pełna scena
  • Silnik kompozycji rozwiązujący warstwy
  • Dobry do składania sceny z wielu źródeł naraz
Etap: Nie zawsze albo-albo

USD potrafi wczytać Alembic jako część siebie

Te dwa formaty nie zawsze konkurują o to samo miejsce w pipeline. USD ma wbudowany mechanizm wczytywania plików .abc bezpośrednio jako część swojej kompozycji — cache z animacji, zapieczony dokładnie tak jak w Rozdziale 10, może zostać zreferowany do warstwy USD tak samo, jak referuje się natywny plik .usd. W praktyce wiele studiów robi dokładnie to: animacja publikuje Alembic, bo dla samego zadania „zapisz ruch" jest prostszy i szybszy w zapisie niż pełna scena USD, a warstwa lightingu czy layoutu referuje ten Alembic wewnątrz swojej kompozycji USD, korzystając z warstw i wariantów tam, gdzie faktycznie są potrzebne.

Etap: Kiedy które

Praktyczna reguła kciuka

Jeśli zadanie to „przekaż zamknięty, gotowy wynik, którego nikt po drodze nie musi nieniszcząco nadpisywać" — animację do FX, symulację do compu — Alembic zwykle wystarcza i bywa lżejszy w zapisie. Jeśli zadanie to „złóż całą scenę z assetów, warstw wielu działów i wariantów, które ktoś może jeszcze zmienić po drodze" — pełny shot gotowy do renderu — USD jest narzędziem zaprojektowanym dokładnie pod ten problem. Dobry pipeline rzadko wybiera jedno kosztem drugiego; częściej używa obu, każdego tam, gdzie jego mocna strona faktycznie ma znaczenie.