USD (Universal Scene Description) er et filformat udviklet af Pixar til udveksling af 3D computergrafikscener mellem forskellige applikationer til digitalt indhold. Det er et udvideligt open source-filformat, der kan gemme information om 3D-geometri, shading, lyssætning, fysik og andre grafikrelaterede områder. Det kan også sammensætte og tilsidesætte data fra flere kilder og skabe en enkelt scenegraf, der kan redigeres ikke-destruktivt.
USD anvendes i mange brancher, såsom design, arkitektur, animation og gaming, og understøttes af mange softwareapplikationer, som Blender, Cinema 4D, Houdini, Maya og Apples SceneKit. USD er også kernen i Pixars 3D-grafikpipeline og grundlaget for Nvidias Omniverse-platform.
Universal Scene Description (USD) specifikationen anvender flere filformater:
- .usd – Kan være enten ASCII- eller binært kodet
- .usda – ASCII-kodet
- .usdc – Binært kodet
- .usdz – En pakkefil formateret som et nul-komprimeret, ukrypteret zip-arkiv. Kan indeholde .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 og .wav filer.
Blender (eller anden 3D-software) gør livet nemt ved at lade dig udføre mange opgaver udelukkende via interfacet, men så snart du begynder at introducere anden software i din pipeline, begynder problemerne at dukke op på stribe. Så lad os tale om de største problemer, du sandsynligvis allerede støder på i dag, og hvordan Pixar har skabt løsningen til at overvinde dem i det uendelige.
Problemet
Hvis du nogensinde har tekstureret en model i Substance, importeret dit arbejde til Unreal, eller prøvet at dele et projekt med nogen, der arbejder i en anden software, har du sandsynligvis indset, hvor irriterende det kan være. At skulle håndtere forskellige filtyper, korrekte eksportworkflows for hver enkelt software og miste værdifulde data i processen kan få dig til at føle, at du med vilje gentagne gange banker hovedet mod en mur.
Og tro mig, når jeg siger, at det er noget, alle 3D-kunstnere overalt oplever – uanset om du arbejder som en solo-skaber med din egen tilpassede pipeline eller i et stort studie som Pixar, hvor man er nødt til at overholde strenge pipeline-begrænsninger for at opretholde et ordentligt workflow for alle de andre 1.232 mennesker, der arbejder der. Problemet er det samme.
Hvorfor det sker
Det giver dog mening, ikke? Hver software bruger en proprietær filtype, der fungerer til dens behov. Så en fil fra Blender, for eksempel, er blevet kodet til at fungere i Blender, men ikke i Substance. I en virksomhed har hver kunstner naturligvis brug for, at en fil er kompatibel med deres eget valgte værktøj for at gøre det nemt og nogle gange endda muligt at fortsætte arbejdet på et projekt.
Det er derfor, det er et must at skulle eksportere til en mere universel filtype som FBX eller OBJ, når man skifter til en anden software eller overdrager sit projekt til den næste person. Men selv disse filtyper har mange begrænsninger, såsom manglende evne til korrekt at gemme simuleringer, lyssætning og mange andre aspekter af dine Blender-projekter.
Introduktion til USD
Så hvad er svaret på dette problem? Universal Scene Description (USD) kort sagt! Først udgivet som open source-software af Pixar i 2016 som deres nye kerne-pipeline, var USD hovedsageligt en måde for deres kunstnere at gøre det lettere at flytte data mellem hinanden og de værktøjer, de bruger.
Siden udgivelsen er USD konstant under udvikling og forbedringer, hvilket er almindeligt for open source-software ligesom Blender, der også løbende opdateres og udvides.
Hvad er USD?
USD er mange ting, og hvis jeg dykker rigtig dybt ned i det, kan det faktisk være en meget teknisk og kompliceret ting at beskrive. Men hvis jeg skal sige det simpelt, er USD en måde at få apps som Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse og mange flere til at tale sammen og forstå hinanden.
Inden for computerindustrien er der faktisk et fancy ord for dette – interoperabilitet. Lidt svært at sige! Men uanset hvor fancy det lyder, er det faktisk ikke så kompliceret, som du måske tror. Du kan begynde at bruge det i dag på din egen computer eller endda med flere venner eller kolleger over hele verden.
Hvordan USD er anderledes
Traditionelt set er en pipeline en meget envejs-ting, hvor hver person kun kan arbejde på noget, når den forrige person er færdig. Eller for dig personligt, kan du kun gå videre til næste trin i processen, som teksturering, hvis modelleringen er fuldstændig færdig.
Du kan sammenligne det med at bage en kage – når du bygger og skaber denne kage, er du nødt til at afslutte hvert trin, før du kan starte det næste. Du kan ikke bage kagen, før du blander dejen, og du kan ikke bygge den, før du bager bundene i ovnen. Hvert trin er afhængigt af, at det forrige er fuldført.
Endnu vigtigere er det, at når du først har lagt glasur og fyld på, eller besluttet dig for, at bunden skulle være chokolade, er der ingen vej tilbage. Du kan ikke ubage kagen, ændre smagen til vanilje eller fjerne glasuren. Og det er det, vi kalder et destruktivt workflow.
USD er derimod mere som Lego. Hver klods repræsenterer en del af en 3D-scene – karakterer, objekter, miljøer, hvad som helst – og du kan samle, adskille og modificere disse klodser uafhængigt.
I en traditionel pipeline ville ændring af en klods indebære, at man var nødt til at justere resten af strukturen. Men med USD kan der arbejdes uafhængigt på hver byggeklods, og jeg kan simpelthen ændre en klods til en anden farve for eksempel, uden at det er nødvendigt at genopbygge hele modellen.
Det er en ikke-destruktiv tilgang, der giver mulighed for eksperimentering og samarbejdende workflows uden at blive hæmmet af pipeline-begrænsninger.
Målet med USD
Målet med alt dette med USD er at skabe en måde, hvorpå data kan flyde frit mellem applikationer, at give kunstnere og teams frihed til at fokusere på skabelse og ikke på eksport og at sidde fast og vente på hinanden for at kunne fortsætte med at arbejde. Kunstnere bør ikke være nødt til at starte forfra, hvis konceptteamet beslutter sig for at ændre tingene senere hen. Og der bør ikke være problemer med, at filformater, der kommer fra andre programmer, ikke fungerer i din valgte software.
På et overordnet niveau, er det hvad USD ser ud til at være – et meget interoperabelt filformat, der nemt kan udveksles mellem forskellige software. Og for at være ærlig, er det, hvad det vil være for de fleste Blender-brugere, da mange af os har tendens til at arbejde alene. Men USD er mere end bare en filtype…
Det er en måde at samle og organisere et hvilket som helst antal aktiver i virtuelle sæt, scener, shots og verdener – bruge dem fra applikation til applikation og ikke-destruktivt redigere dem, ofte i realtid.
Sådan arbejder du med USD
Lad os se på, hvordan vi kan arbejde med USD i et Blender-workflow. I sin mest grundlæggende form har USD været en eksportmulighed i Blender siden version 3.6. Så hvis du har en fil, du arbejder på og vil gemme den som en USD-fil, kan du gå til Fil > Eksport > Universal Scene Description, og det vil give dig et promptvindue til at gemme filen.
Der er en del muligheder, men de vigtigste at bemærke er:
- Kun markering – Vil kun inkludere markerede objekter i din eksport
- Animation og hår – Vil inkludere/udelukke animations- og hårpartikeldata for dine objekter
Her er et godt eksempel på, hvordan USD fungerer. Dette er en fil fra Nvidias USD-samplebibliotek, der blev lavet i en række softwareprogrammer som 3ds Max og Substance. Hvis du åbner den i Blender ved at importere den, fungerer den næsten 100% med det samme!
Som du kan se, indeholder den alle data, herunder lys, dybdeskarphed, kameraet, materialer og meget mere. Det eneste, der ikke eksporteres korrekt, er HDRI-lyssætningen, som vi selv er nødt til at sætte op. Men det er utroligt at tænke på, at dette ser næsten identisk ud i 3DS Max’s Arnold-renderer, og lige er blevet eksporteret over til Blender og fungerer lige så godt ved hjælp af en enkelt filtype!
Det har korrekt hierarki, materialer, og grundlæggende set er alt sat op. Det er virkelig, virkelig fedt! Under alle omstændigheder viser dette, hvordan USD fungerer mellem forskellige applikationer, og at det fungerer som et interoperabelt filformat.
Et praktisk USD-eksempel
Men lad os se på et mere praktisk eksempel. Til dette pipeline-eksempel vil jeg bruge et typisk workflow med at bruge Blender til at modellere et objekt til et spil.
Den traditionelle pipeline ville være noget i retning af dette:
- Opret model i Blender
- UV-unwrap model
- Eksporter som FBX, da Painter ikke kan bruge Blender-filer
- Importer FBX til Substance Painter
- Tilføj materialer i Substance
- Eksporter teksturer som billeder
- Importer FBX til spilmotor
- Opsæt teksturer manuelt
- Opret renders
Med USD kan vi forenkle denne proces betydeligt og bevare et overvejende ikke-destruktivt workflow. Pipeline’en forbliver meget ens med Blender og Substance som de vigtigste komponenter.
Men da USD ikke nativt fungerer i realtid mellem disse apps (hovedsageligt fordi Blender stadig har begrænset USD-support), vil jeg bruge Nvidia Omniverse til at skabe den forbindelse for os.
Via Omniverse kan jeg få adgang til en mere USD-kompatibel gren af Blender bygget af Nvidia. Jeg kan aktivere Omniverse-konnektoren til Substance Painter for at realisere LifeLink. Og jeg kan bruge USD Composer til at bygge bro over kløften mellem applikationerne og se det endelige produkt.
Med det sat op, kan vi nu åbne vores Blender-projekt i den brugerdefinerede Blender-gren. Hvis vi derefter trykker på N og går til højre side her, får vi Nucleus-tilføjelsesprogrammet, der giver os mulighed for at eksportere dette som en USD-fil.
Hvis vi derefter går til USD Composer og åbner den USD-fil, får vi en slags live-link mellem applikationerne. Jeg kan nu foretage enhver ændring af meshet, re-eksportere det og få det automatisk opfanget i USD Composer.
Det bliver bedre! Når vi har importeret modellen, kan vi åbne Substance Painter, aktivere Omniverse-konnektoren og gå til Import Mesh for automatisk at importere vores objekt fra USD Composer til Substance. På dette tidspunkt, hvis vi foretager ændringer i Blender, kan vi stadig re-eksportere og opfange det i USD Composer, som automatisk linker til Substance Painter.
Men når vi først har tilføjet teksturer i Substance Painter, vil det fjerne disse teksturer, hvis vi gør dette igen. Så når du er tilfreds, skal du tilføje dine materialer i Substance Painter, og med Life Link aktiveret, vil disse automatisk dukke op i USD Composer.
Enhver ændring, du derefter foretager, eksporteres automatisk og opdateres i USD Composer. Virkelig, virkelig fedt!
For mig er dette workflow stort set blæret. At kunne foretage ændringer i Blender og Substance Painter i realtid og have det hele til automatisk at fungere i hele forløbet og afspejles i den endelige render er noget andet.
Hvis du er interesseret i at prøve alt, hvad Nvidia Omniverse har at tilbyde, kan du downloade det gratis via linket i beskrivelsen. Og hvis du vil lære mere om alle de tekniske use cases, som USD og Omniverse tilsammen giver, kan du finde et andet gratis downloadlink til det samt et link til at deltage i de åbne USD-dage virtuelt eller personligt på GTC i marts.
Jeg anbefaler virkelig at tjekke det ud, fordi det virkelig er fremtiden for 3D-workflows.
Mere om USD
Ud over dette sjove eksempel har USD meget mere at byde på. Og hvis du gør god brug af dets muligheder, vil du blive meget mere effektiv som kunstner. Så hvad mere kan det gøre?
Ud over det faktum, at et universelt filformat ville gøre dit liv meget lettere, er det absolut fremtiden. Siden august 2023 er USD blevet en officiel nonprofitorganisation kaldet The Alliance of Open USD (AO USD) i korthed – med Pixar, Apple, Adobe, Autodesk og Nvidia som stiftere.
Jeg tror, det virkelig viser, hvor investerede disse virksomheder er, og hvordan de virkelig ser dette som fremtiden for et interoperabelt filformat – som alle burde kunne bruge meget let.
Udover at være et filformat gemmer USD næsten alt – fra lys og kameraer til simuleringscaches og scene data – i en lag-lignende struktur kaldet “prims” (forkortelse for primitives). Det indeholder alle de data til at beskrive komplekse scener og aktiver i et format, der er læsbart af en lang række applikationer.
Nu når man ved det, giver navnet “Universal Scene Description” faktisk meget mening!
Hvis du er bekendt med Blender-samlinger, fungerer USD på samme måde. Du kan indlejre hvad som helst inde i flere indlejrede samlinger, med den ekstra fordel, at USD behandler alle disse lag som instanser. Derfor er det i stand til meget hurtigt at indlæse og læse alle data på en optimeret måde.
Dette fungerer på samme måde som instancing af samlinger i Blender, hvilket er godt, fordi instanser kræver mindre datakraft end faktiske duplikerede objekter. Det minder også meget om pre-comping i After Effects eller compounding i Nuke – du grupperer dybest set ting inde i indlejrede grupper/lag, hvilket gør det nemmere og hurtigere for computeren at arbejde med filen.
Et godt eksempel på denne optimering er Nvidias nyeste USD-sampleprojekt kaldet “Da Vinci’s Workshop”. Ved hjælp af deres USD Composer-app (som er perfekt til visning af USD-projekter med realtidsbelysning), kan jeg afspille dette massive 67 GB bibliotek af aktiver, teksturer og lys med millioner af polygoner med næsten 120 FPS uden lag eller problemer. Dette er muligt på grund af, hvor effektivt USD indlæser filerne og teksturerne på en ekstremt optimeret måde.
På samme måde er USD-caching nu meget hurtigere for animationer, der plejede at blive eksporteret som Alembic-filer. Alembic-filer er normalt store, meget uoptimerede og læses langsomt af din computer – hvilket normalt resulterer i hakkende afspilning. Med USD er det intet problem at opnå en stabil FPS, og filstørrelsen er meget mindre.
Flere fordele
En anden virkelig cool funktion er, at du nemt kan få adgang til lagene inde i dit USD-projekt udefra filen. For eksempel, hvis der er et prim-lag, der indeholder dataene om, at en sfære er grøn inde i en USD-fil, kan vi ved blot at ændre den farve til rød i en USD-kompatibel editor som USD Composer ændre farven på sfæren uden nogensinde at åbne filen i Blender! Det er utroligt kraftfuldt.
Selvom det selvfølgelig er et grundlæggende eksempel, viser det potentialet. En anden stor fordel er, at USD stadig giver dig mulighed for kun at arbejde på et enkelt lag af en kompleks fil i en bestemt software. Så selvom din fil indeholder et komplet projekt med kameraer, lys osv., er du stadig i stand til kun at åbne en del af det – for eksempel en enkelt model – inde i Substance Painter og kun arbejde på den del af projektet uden at påvirke noget andet.
Dette gælder også, hvis flere personer arbejder på den samme fil – en anden stor styrke ved USD. Ti personer kan arbejde på den samme fil, så ændringer foretaget af kunstner nummer et er straks synlige for kunstner nummer to, hvilket gør det muligt for dem at tilpasse deres arbejde i overensstemmelse hermed. At kunne samarbejde med folk eksternt er utroligt kraftfuldt.
Fremtiden for 3D Pipelines
Det er sikkert at sige, at USD er langt mere end bare et filformat. Det er en omfattende teknologiplatform og et økosystem, der i sin mission virkelig stemmer overens med Blender: friheden til at skabe uden begrænsninger.
USD er stadig under udvikling. Drømmen er reel – et universelt softwarefilformat, der kan bruges af enhver software i branchen, redigeres i realtid af flere kunstnere.
Vi bør alle være taknemmelige for, at Pixar baner vejen med denne utrolige udvikling, og for virksomheder som Nvidia og Apple, der bidrager med deres del.