USD (Universal Scene Description) to format pliku opracowany przez Pixar do wymiany scen grafiki 3D między aplikacjami do tworzenia treści cyfrowych. Jest to rozszerzalny format open source, który może przechowywać informacje o geometrii 3D, cieniowaniu, oświetleniu, fizyce i innych dziedzinach związanych z grafiką. Może również łączyć i nadpisywać dane z wielu źródeł, tworząc pojedynczy scenograf, który można edytować w sposób niedestrukcyjny.
USD jest używany w wielu branżach, takich jak projektowanie, architektura, animacja i gry, i jest obsługiwany przez wiele aplikacji, takich jak Blender, Cinema 4D, Houdini, Maya i SceneKit firmy Apple. USD jest również podstawą potoku grafiki 3D firmy Pixar i podstawą platformy Omniverse firmy Nvidia.
Specyfikacja Universal Scene Description (USD) wykorzystuje kilka formatów plików:
- .usd – może być kodowany w formacie ASCII lub binarnym
- .usda – kodowany w formacie ASCII
- .usdc – kodowany binarnie
- .usdz – plik pakietu sformatowany jako nieszyfrowane archiwum zip z zerową kompresją. Może zawierać pliki .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 i .wav.
Blender (lub jakiekolwiek inne oprogramowanie 3D) ułatwia życie, pozwalając wykonywać wiele zadań za pomocą samego interfejsu, ale gdy tylko zaczniesz wprowadzać inne oprogramowanie do swojego potoku pracy, problemy zaczną pojawiać się z każdej strony. Porozmawiajmy więc o największych problemach, na które prawdopodobnie już natrafiasz, i o tym, jak Pixar stworzył rozwiązanie, aby przezwyciężyć je w nieskończoność.
Problem
Jeśli kiedykolwiek teksturowałeś model w Substance, importowałeś swoją pracę do Unreal lub próbowałeś udostępnić projekt komuś, kto pracuje w innym oprogramowaniu, prawdopodobnie zdałeś sobie sprawę, jakie to może być irytujące. Konieczność radzenia sobie z różnymi typami plików, odpowiednimi przepływami pracy eksportu dla każdego oprogramowania i utrata cennych danych w tym procesie może sprawić, że poczujesz się, jakbyś celowo walił głową w mur raz za razem.
I uwierz mi, kiedy mówię, że to jest coś, czego doświadczają wszyscy artyści 3D – niezależnie od tego, czy pracujesz jako twórca solo z własnym, niestandardowym potokiem pracy, czy w dużym studiu, takim jak Pixar, gdzie musisz dostosować się do rygorystycznych ograniczeń potoku pracy, aby utrzymać odpowiedni przepływ pracy dla wszystkich pozostałych 1232 osób, które tam pracują. Problem pozostaje ten sam.
Dlaczego tak się dzieje
Ale to ma sens, prawda? Każde oprogramowanie używa zastrzeżonego typu pliku, który odpowiada jego potrzebom. Tak więc plik z Blendera, na przykład, został zakodowany do pracy w Blenderze, ale nie w Substance. Oczywiście w firmie każdy artysta potrzebuje pliku, który jest kompatybilny z jego własnym narzędziem, aby ułatwić, a czasem nawet umożliwić kontynuowanie pracy nad projektem.
Właśnie dlatego konieczność eksportowania do bardziej uniwersalnego typu pliku, takiego jak FBX lub OBJ, jest koniecznością przy przechodzeniu do innego oprogramowania lub przekazywaniu projektu następnej osobie. Ale nawet te typy plików mają wiele ograniczeń, takich jak brak możliwości prawidłowego przechowywania symulacji, oświetlenia i wielu innych aspektów twoich projektów Blendera.
Przedstawiamy USD
Jaka jest więc odpowiedź na ten problem? Universal Scene Description (USD), w skrócie! Po raz pierwszy opublikowany jako oprogramowanie open source przez Pixar w 2016 roku jako ich nowy podstawowy potok pracy, USD był głównie sposobem na ułatwienie artystom przesyłania danych między sobą a narzędziami, których używają.
Od czasu wydania USD stale przechodzi zmiany i ulepszenia, co jest powszechne w przypadku oprogramowania open source, takiego jak Blender, który jest również stale aktualizowany i rozszerzany.
Czym jest USD?
USD to wiele rzeczy, a jeśli zagłębię się w to naprawdę głęboko, to w rzeczywistości może to być bardzo techniczna i skomplikowana rzecz do opisania. Ale mówiąc najprościej, USD to sposób, w jaki aplikacje takie jak Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse i wiele innych mogą się ze sobą komunikować i rozumieć się nawzajem.
W branży komputerowej istnieje nawet wymyślne słowo na to – interoperacyjność. Trochę trudno to wymówić! Jednak bez względu na to, jak fantazyjnie to brzmi, w rzeczywistości nie jest to tak skomplikowane, jak mogłoby się wydawać. Możesz zacząć go używać już dziś na własnym komputerze, a nawet z wieloma przyjaciółmi lub kolegami na całym świecie.
Czym USD różni się od innych
Tradycyjnie potok pracy jest bardzo jednokierunkowy, gdzie każda osoba może pracować nad czymś dopiero po zakończeniu pracy przez poprzednią osobę. Lub w twoim przypadku, możesz przejść do następnego kroku w procesie, takiego jak teksturowanie, tylko wtedy, gdy modelowanie jest całkowicie zakończone.
Można to porównać do pieczenia ciasta – podczas budowania i tworzenia tego ciasta musisz zakończyć każdy krok, zanim będziesz mógł rozpocząć następny. Nie możesz upiec ciasta, zanim wymieszasz ciasto, i nie możesz go zbudować, zanim upieczesz ciasta w piekarniku. Każdy krok jest zależny od ukończenia poprzedniego.
Co ważniejsze, gdy nałożysz lukier i nadzienie lub zdecydujesz, że biszkopt powinien być czekoladowy, nie ma już odwrotu. Nie możesz odpiec ciasta, zmienić smaku na waniliowy ani zdjąć lukru. I to nazywamy destrukcyjnym przepływem pracy.
USD jest jednak bardziej jak klocki Lego. Każdy klocek reprezentuje część sceny 3D – postacie, obiekty, środowiska, cokolwiek – i możesz składać, rozkładać i modyfikować te klocki niezależnie.
W tradycyjnym potoku pracy zmiana jednego klocka wiązałaby się z koniecznością dostosowania reszty konstrukcji. Ale dzięki USD każdy klocek można obrabiać niezależnie i mogę po prostu zmienić jeden klocek na inny kolor, na przykład, bez potrzeby przebudowy całego modelu.
Jest to niedestrukcyjne podejście, które pozwala na eksperymentowanie i współpracę bez ograniczeń potoku pracy.
Cel USD
Celem tego wszystkiego związanego z USD jest stworzenie sposobu na swobodne przesyłanie danych między aplikacjami, aby dać artystom i zespołom swobodę skupienia się na tworzeniu, a nie na eksportowaniu i utknięciu w oczekiwaniu na siebie nawzajem, aby móc kontynuować pracę. Artyści nie powinni musieć zaczynać od nowa, jeśli zespół koncepcyjny zdecyduje się wprowadzić zmiany na późniejszym etapie. I nie powinno być problemów z formatami plików pochodzących z innych programów, które nie działają w wybranym oprogramowaniu.
Na poziomie usług wydaje się, że USD jest bardzo interoperacyjnym formatem plików, który można łatwo wymieniać między różnymi programami. I uczciwie mówiąc, tak to będzie wyglądać dla większości użytkowników Blendera, ponieważ wielu z nas ma tendencję do pracy w pojedynkę. Ale USD to coś więcej niż tylko typ pliku…
To sposób na montaż i organizowanie dowolnej liczby zasobów w wirtualne zestawy, sceny, ujęcia i światy – używając ich z aplikacji do aplikacji i niedestrukcyjnie edytując je często w czasie rzeczywistym.
Jak pracować z USD
Spójrzmy więc, jak możemy pracować z USD w przepływie pracy Blendera. W swojej najbardziej podstawowej formie USD jest opcją eksportu w Blenderze od wersji 3.6. Tak więc, jeśli masz plik, nad którym pracujesz i chcesz zapisać go jako plik USD, możesz przejść do Plik > Eksportuj > Universal Scene Description, a pojawi się okno z pytaniem o zapisanie pliku.
Ma kilka opcji, ale główne, na które należy zwrócić uwagę, to:
- Tylko zaznaczone – w eksporcie zostaną uwzględnione tylko zaznaczone obiekty
- Animacja i włosy – uwzględni/wykluczy dane animacji i cząstek włosów dla twoich obiektów
Oto świetny przykład tego, jak działa USD. To jest plik z biblioteki próbek USD firmy Nvidia, który został stworzony w wielu programach, takich jak 3ds Max i Substance. Jeśli otworzysz go w Blenderze, importując go, działa prawie w 100% od razu!
Jak widać, zawiera wszystkie dane, w tym światła, głębię ostrości, kamerę, materiały i wiele innych. Jedyną rzeczą, która nie jest eksportowana poprawnie, jest oświetlenie HDRI, które musimy skonfigurować sami. Ale niesamowite jest to, że wygląda to prawie identycznie w rendererze Arnold firmy 3DS Max i po prostu zostało wyeksportowane do Blendera i działa równie dobrze, używając jednego typu pliku!
Ma odpowiednią hierarchię, materiały i w zasadzie wszystko jest skonfigurowane. To naprawdę, naprawdę fajne! W każdym razie pokazuje to, jak działa USD między różnymi aplikacjami i że funkcjonuje jako interoperacyjny format plików.
Praktyczny przykład USD
Przyjrzyjmy się bardziej praktycznemu przykładowi. W tym przykładzie potoku pracy użyję typowego przepływu pracy polegającego na użyciu Blendera do modelowania obiektu do gry.
Tradycyjny potok pracy wyglądałby mniej więcej tak:
- Utwórz model w Blenderze
- Rozwiń UV model
- Eksportuj jako FBX, ponieważ Painter nie może używać plików Blendera
- Importuj FBX do Substance Painter
- Dodaj materiały w Substance
- Eksportuj tekstury jako obrazy
- Importuj FBX do silnika gry
- Skonfiguruj tekstury ręcznie
- Utwórz rendery
Dzięki USD możemy znacznie uprościć ten proces i zachować w dużej mierze niedestrukcyjny przepływ pracy. Potok pracy pozostaje bardzo podobny, a Blender i Substance są głównymi komponentami.
Ale ponieważ USD nie działa natywnie w czasie rzeczywistym między tymi aplikacjami (głównie dlatego, że Blender nadal ma ograniczone wsparcie dla USD), użyję Nvidia Omniverse, aby stworzyć to połączenie dla nas.
Przez Omniverse mogę uzyskać dostęp do bardziej kompatybilnej z USD gałęzi Blendera, zbudowanej przez Nvidia. Mogę włączyć łącznik Omniverse dla Substance Painter, aby zrealizować LifeLink. I mogę użyć USD Composer, aby wypełnić lukę między aplikacjami i zobaczyć produkt końcowy.
Po skonfigurowaniu możemy teraz otworzyć nasz projekt Blendera w niestandardowej gałęzi Blendera. Jeśli następnie naciśniemy N i przejdziemy na prawą stronę, otrzymamy dodatek Nucleus, który pozwoli nam wyeksportować to jako plik USD.
Jeśli następnie przejdziemy do USD Composer i otworzymy ten plik USD, otrzymamy coś w rodzaju połączenia na żywo między aplikacjami. Mogę teraz wprowadzić dowolną zmianę w siatce, ponownie ją wyeksportować i mieć pewność, że zostanie ona automatycznie odebrana w USD Composer.
Jest jeszcze lepiej! Po zaimportowaniu modelu możemy otworzyć Substance Painter, włączyć łącznik Omniverse i przejść do Import Mesh, aby automatycznie zaimportować nasz obiekt z USD Composer do Substance. W tym momencie, jeśli wprowadzimy zmiany w Blenderze, nadal możemy ponownie wyeksportować i odebrać je w USD Composer, który automatycznie łączy się z Substance Painter.
Jednak po dodaniu tekstur w Substance Painter ponowne wykonanie tej czynności usunie te tekstury. Tak więc, gdy będziesz zadowolony, dodaj swoje materiały w Substance Painter, a przy włączonym Life Link te automatycznie pojawią się w USD Composer.
Wszelkie zmiany, które następnie wprowadzisz, zostaną automatycznie wyeksportowane i zaktualizowane w USD Composer. Naprawdę, naprawdę fajne!
Dla mnie ten przepływ pracy jest prawie oszałamiający. Możliwość wprowadzania zmian w Blenderze i Substance Painter w czasie rzeczywistym i automatyczne działanie tego wszystkiego w dalszej kolejności oraz odzwierciedlenie w ostatecznym renderze to coś innego.
Jeśli jesteś zainteresowany wypróbowaniem wszystkiego, co ma do zaoferowania Nvidia Omniverse, możesz pobrać go za darmo, korzystając z linku w opisie. A jeśli chcesz dowiedzieć się więcej o wszystkich technicznych przypadkach użycia, które razem zapewniają USD i Omniverse, możesz znaleźć kolejny darmowy link do pobrania oraz link do udziału w sesjach otwartego dnia USD wirtualnie lub osobiście na GTC w marcu.
Naprawdę polecam to sprawdzić, ponieważ to jest naprawdę przyszłość przepływów pracy 3D.
Więcej o USD
Oprócz tego fajnego przykładu, USD ma o wiele więcej do zaoferowania. A jeśli dobrze wykorzystasz jego możliwości, staniesz się o wiele bardziej wydajny jako artysta. Co jeszcze potrafi?
Oprócz faktu, że uniwersalny format plików znacznie ułatwiłby ci życie, jest to absolutnie przyszłość. Od sierpnia 2023 r. USD stał się oficjalną organizacją non-profit o nazwie The Alliance of Open USD (AO USD) w skrócie – z Pixar, Apple, Adobe, Autodesk i Nvidia jako jej założycielami.
Myślę, że to naprawdę pokazuje, jak bardzo te firmy są zaangażowane i jak naprawdę postrzegają to jako przyszłość interoperacyjnego formatu plików – z którego każdy powinien móc bardzo łatwo korzystać.
Oprócz bycia formatem plików, USD przechowuje prawie wszystko – od świateł i kamer po pamięć podręczną symulacji i dane sceny – w strukturze warstwowej zwanej „primami” (skrót od primitives). Zawiera wszystkie te dane do opisywania złożonych scen i zasobów w formacie czytelnym dla szerokiej gamy aplikacji.
Wiedząc to, nazwa „Universal Scene Description” nabiera wiele sensu!
Jeśli znasz kolekcje Blendera, USD działa podobnie. Możesz zagnieżdżać wszystko w wielu zagnieżdżonych kolekcjach, z dodatkową korzyścią, że USD traktuje wszystkie te warstwy jako instancje. Dlatego jest w stanie bardzo szybko ładować i odczytywać wszystkie dane w zoptymalizowany sposób.
Działa to podobnie do tworzenia instancji kolekcji w Blenderze, co jest dobre, ponieważ instancje wymagają mniej mocy obliczeniowej niż rzeczywiste zduplikowane obiekty. Jest to również bardzo podobne do prekomponowania w After Effects lub komponowania w Nuke – zasadniczo grupujesz elementy w zagnieżdżonych grupach/warstwach, co ułatwia i przyspiesza komputerowi pracę z plikiem.
Świetnym przykładem tej optymalizacji jest najnowszy projekt próbny USD firmy Nvidia o nazwie „Warsztat Da Vinci”. Korzystając z ich aplikacji USD Composer (która jest idealna do przeglądania projektów USD z oświetleniem w czasie rzeczywistym), mogę odtwarzać tę ogromną bibliotekę zasobów, tekstur i świateł o pojemności 67 GB z milionami poligonów z prędkością bliską 120 klatek na sekundę bez żadnych opóźnień i problemów. Jest to możliwe dzięki temu, jak wydajnie USD ładuje pliki i tekstury w niezwykle zoptymalizowany sposób.
Podobnie w przypadku animacji, które były eksportowane jako pliki Alembic, buforowanie USD jest teraz znacznie szybsze. Pliki Alembic są zwykle ogromne, bardzo niezoptymalizowane i powoli odczytywane przez komputer – zwykle powoduje to nierówne odtwarzanie. Dzięki USD osiągnięcie stabilnej liczby klatek na sekundę nie stanowi żadnego problemu, a rozmiar pliku jest znacznie mniejszy.
Więcej korzyści
Kolejną naprawdę fajną funkcją jest to, że możesz łatwo uzyskać dostęp do warstw w projekcie USD spoza pliku. Na przykład, jeśli w pliku USD znajduje się warstwa prima zawierająca dane, że kula jest zielona, po prostu zmieniając ten kolor na czerwony w edytorze kompatybilnym z USD, takim jak USD Composer, możemy zmienić kolor kuli bez otwierania pliku w Blenderze! To jest niesamowicie potężne.
Chociaż jest to oczywiście podstawowy przykład, pokazuje potencjał. Kolejną ważną zaletą jest to, że USD nadal pozwala pracować tylko na jednej warstwie złożonego pliku w określonym oprogramowaniu. Tak więc, nawet jeśli twój plik zawiera kompletny projekt z kamerami, światłami itp., nadal możesz otworzyć tylko jeden element – na przykład pojedynczy model – w Substance Painter i pracować tylko nad tą częścią projektu, nie wpływając na nic innego.
Dotyczy to również sytuacji, gdy wiele osób pracuje nad tym samym plikiem – kolejna główna zaleta USD. Dziesięć osób może pracować nad tym samym plikiem, więc zmiany wprowadzone przez artystę numer jeden są natychmiast widoczne dla artysty numer dwa, co pozwala im odpowiednio dostosować swoją pracę. Możliwość zdalnej współpracy z ludźmi jest niezwykle potężna.
Przyszłość potoków 3D
Można śmiało powiedzieć, że USD to znacznie więcej niż tylko format plików. Jest to kompleksowa platforma technologiczna i ekosystem, którego misja naprawdę wpisuje się w Blender: swoboda tworzenia bez ograniczeń.
USD jest nadal w fazie rozwoju. Marzenie jest realne – uniwersalny format pliku oprogramowania używany przez dowolne oprogramowanie w branży, edytowalny w czasie rzeczywistym przez wielu artystów.
Wszyscy powinniśmy być wdzięczni firmie Pixar za utorowanie drogi temu niesamowitemu rozwojowi oraz firmom takim jak Nvidia i Apple za wniesienie w to swojego wkładu.