USD Filformat for 3D: Derfor er det fantastisk

Kategorisert som 3D, Open Source Merket , , , , , , ,
Save and Share:

USD (Universal Scene Description) er et filformat utviklet av Pixar for å utveksle 3D-scener mellom ulike applikasjoner for digitalt innhold. Det er et utvidbart filformat med åpen kildekode som kan lagre informasjon om 3D-geometri, skyggelegging, lyssetting, fysikk og andre grafikkområder. Det kan også sette sammen og overstyre data fra flere kilder, og skape en enkelt scenegraf som kan redigeres ikke-destruktivt.

USD brukes i mange bransjer, som design, arkitektur, animasjon og spill, og støttes av mange programvareapplikasjoner, som Blender, Cinema 4D, Houdini, Maya og Apples SceneKit. USD er også kjernen i Pixars 3D-grafikkpipeline og grunnlaget for Nvidias Omniverse-plattform.

Universal Scene Description (USD)-spesifikasjonen bruker flere filformater:

  • .usd – Kan være enten ASCII- eller binærkodet
  • .usda – ASCII-kodet
  • .usdc – Binærkodet
  • .usdz – En pakkefil formatert som et ukomprimert, ukryptert zip-arkiv uten komprimering. Kan inneholde .usd-, .usda-, .usdc-, .png-, .jpeg-, .m4a-, .mp3- og .wav-filer.

Blender (eller annen 3D-programvare) gjør livet enkelt ved å la deg utføre mange oppgaver bare ved hjelp av grensesnittet, men så snart du begynner å introdusere annen programvare i arbeidsflyten din, begynner problemene å dukke opp i hytt og vær. Så la oss snakke om de største problemene du sannsynligvis allerede støter på i dag, og hvordan Pixar har skapt løsningen for å overvinne dem til det uendelige og forbi.

Video om USD-filformatet av KaizenTutorials

Problemet

Hvis du noen gang har teksturert en modell i Substance, importert arbeidet ditt til Unreal, eller prøvd å dele et prosjekt med noen som jobber i en annen programvare, har du sannsynligvis innsett hvor irriterende dette kan være. Å måtte håndtere ulike filtyper, riktige eksportarbeidsflyter for hver enkelt programvare, og miste verdifull data i prosessen kan få deg til å føle at du banker hodet i veggen med vilje, gjentatte ganger.

Og tro meg når jeg sier at dette er noe alle 3D-kunstnere overalt opplever – enten du jobber som en solo-skaper med din egen tilpassede arbeidsflyt eller i et stort studio som Pixar og må tilpasse deg strenge pipelinebegrensninger for å opprettholde en ordentlig arbeidsflyt for alle de 1232 andre menneskene som jobber der. Problemet forblir det samme.

Hvorfor dette skjer

Det gir jo mening, ikke sant? Hver programvare bruker en proprietær filtype som fungerer for deres behov. Så en fil fra Blender, for eksempel, er kodet for å fungere i Blender, men ikke i Substance. I et selskap trenger naturligvis hver artist en fil som er kompatibel med sitt eget foretrukne verktøy for å gjøre det enkelt og noen ganger til og med mulig å fortsette å jobbe med et prosjekt.

Dette er grunnen til at det er et must å eksportere til en mer universell filtype som FBX eller OBJ når du bytter til en annen programvare eller leverer prosjektet ditt videre til nestemann. Men selv disse filtypene har mange begrensninger, som for eksempel manglende evne til å lagre simuleringer, lyssetting og mange andre aspekter av Blender-prosjektene dine på en god måte.

Introduserer USD

Så hva er svaret på dette problemet? Universal Scene Description (USD), kort sagt! USD ble først publisert som programvare med åpen kildekode av Pixar i 2016 som deres nye kjernepipeline, og var hovedsakelig en måte for deres kunstnere å gjøre det enklere å flytte data mellom hverandre og verktøyene de bruker.

Siden lanseringen har USD vært i konstant endring og forbedring, noe som er vanlig for programvare med åpen kildekode, akkurat som Blender, som også oppdateres og utvides kontinuerlig.

Hva er USD?

USD er mange ting, og hvis jeg går virkelig i dybden på det, kan det faktisk være en veldig teknisk og komplisert ting å beskrive. Men for å si det enkelt: USD er en måte å få apper som Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse og mange flere til å snakke sammen og forstå hverandre.

Innenfor dataindustrien finnes det faktisk et fancy ord for dette – interoperabilitet. Litt vanskelig å si! Men uansett hvor fancy det høres ut, er det faktisk ikke så komplisert som du kanskje tror. Du kan begynne å bruke det i dag på din egen datamaskin, eller til og med med flere venner eller kolleger over hele verden.

Hvordan USD er annerledes

Tradisjonelt sett er en pipeline en veldig enveis ting, der hver person bare får jobbe med noe når den forrige personen er ferdig. Eller for deg personlig, du kan bare gå til neste trinn i prosessen, som teksturering, hvis modelleringen er fullstendig ferdig.

Du kan sammenligne dette med å bake en kake – når du bygger og lager denne kaken, må du fullføre hvert trinn før du kan begynne på det neste. Du kan ikke steke kaken før du blander deigen, og du kan ikke bygge den før du steker kakene i ovnen. Hvert trinn er avhengig av at det forrige trinnet er fullført.

Og enda viktigere, når du først har tatt på glasur og fyll, eller bestemt deg for at bunnen skulle være sjokolade, er det ingen vei tilbake. Du kan ikke avbake kaken, endre smaken til vanilje eller fjerne glasuren. Og dette er det vi kaller en destruktiv arbeidsflyt.

USD er derimot mer som Lego. Hver kloss representerer en del av en 3D-scene – karakterer, objekter, miljøer, hva som helst – og du kan sette sammen, ta fra hverandre og endre disse klossene uavhengig av hverandre.

I en tradisjonell pipeline vil det å endre én kloss innebære å måtte justere resten av strukturen. Men med USD kan hver byggekloss bearbeides uavhengig, og jeg kan for eksempel enkelt endre fargen på én kloss uten å måtte bygge hele modellen på nytt.

Det er en ikke-destruktiv tilnærming som gir rom for eksperimentering og samarbeidsarbeidsflyter uten å bli tynget ned av pipelinebegrensninger.

Målet med USD

Målet med alt dette med USD er å skape en måte for data å bevege seg fritt mellom applikasjoner, for å gi kunstnere og team friheten til å fokusere på skapelse og ikke på eksportering og det å sitte fast og vente på at hverandre skal bli ferdige for å kunne fortsette å jobbe. Kunstnere burde ikke måtte starte på nytt hvis konseptteamet bestemmer seg for å endre ting senere i prosessen. Og det burde ikke være problemer med at filformater som kommer inn fra andre programmer ikke fungerer i din valgte programvare.

På et tjenestenivå er det slik USD ser ut til å være – et svært interoperabelt filformat som enkelt kan utveksles mellom ulike programvarer. Og for å være rettferdig er det dette det vil være for de fleste Blender-brukere, ettersom mange av oss har en tendens til å jobbe alene. Men USD er mer enn bare en filtype …

Det er en måte å sette sammen og organisere et hvilket som helst antall ressurser til virtuelle sett, scener, opptak og verdener – ved å bruke dem fra applikasjon til applikasjon og ikke-destruktivt redigere dem, ofte i sanntid.

Hvordan jobbe med USD

Så la oss se på hvordan vi kan jobbe med USD i en Blender-arbeidsflyt. I sin mest grunnleggende form har USD vært et eksportalternativ i Blender helt siden versjon 3.6. Så hvis du har en fil du jobber med og ønsker å lagre den som en USD-fil, kan du gå til Fil > Eksporter > Universal Scene Description, og da får du opp et vindu der du kan lagre filen.

Det har ganske mange alternativer, men de viktigste å merke seg er:

  • Bare utvalg – Vil bare inkludere utvalgte objekter i eksporten
  • Animasjon og hår – Vil inkludere/ekskludere animasjons- og hårpartikkeldata for objektene dine

Her er et flott eksempel på hvordan USD fungerer. Dette er en fil fra Nvidias USD-prøvebibliotek som ble laget i en rekke programvarer som 3ds Max og Substance. Hvis du åpner denne i Blender ved å importere den, fungerer den nesten 100 % umiddelbart!

Som du kan se, inneholder den all data, inkludert lys, dybdeskarphet, kamera, materialer og mye mer. Det eneste som ikke eksporteres ordentlig, er HDRI-belysningen, som vi må sette opp selv. Men det er utrolig å tenke på at dette ser nesten identisk ut i 3DS Maxs Arnold-renderer, og nettopp ble eksportert over til Blender og fungerer like bra ved hjelp av én enkelt filtype!

Den har riktig hierarki, materialer, og i bunn og grunn er alt satt opp. Det er virkelig, virkelig kult! Uansett, dette viser hvordan USD fungerer mellom ulike applikasjoner, og at det fungerer som et interoperabelt filformat.

Et praktisk USD-eksempel

Men la oss ta en titt på et mer praktisk eksempel. For dette pipelineeksemplet vil jeg bruke en typisk arbeidsflyt med Blender for å modellere et objekt for et spill.

Den tradisjonelle pipelinen ville gått omtrent slik:

  1. Opprett modell i Blender
  2. UV-unwrap modell
  3. Eksporter som FBX siden Painter ikke kan bruke Blender-filer
  4. Importer FBX til Substance Painter
  5. Legg til materialer i Substance
  6. Eksporter teksturer som bilder
  7. Importer FBX til spillmotor
  8. Sett opp teksturer manuelt
  9. Opprett rendringer

Med USD kan vi forenkle denne prosessen betydelig og beholde en i stor grad ikke-destruktiv arbeidsflyt. Pipelinen forblir veldig lik, med Blender og Substance som hovedkomponenter.

Men siden USD ikke fungerer i sanntid mellom disse appene (hovedsakelig fordi Blender fortsatt har begrenset USD-støtte), vil jeg bruke Nvidia Omniverse for å skape den forbindelsen for oss.

Gjennom Omniverse kan jeg få tilgang til en mer USD-kompatibel gren av Blender bygget av Nvidia. Jeg kan aktivere Omniverse-koblingen for Substance Painter for å realisere LifeLink. Og jeg kan bruke USD Composer for å bygge bro mellom appene og se sluttproduktet.

Med det oppsettet kan vi nå åpne Blender-prosjektet vårt i den tilpassede Blender-grenen. Hvis vi deretter trykker N og går til høyre side her, får vi Nucleus-tillegget, som lar oss eksportere dette som en USD-fil.

Hvis vi deretter går til USD Composer og åpner den USD-filen, får vi en slags direkte kobling mellom appene. Jeg kan nå gjøre endringer i meshet, re-eksportere det, og få det automatisk plukket opp inne i USD Composer.

Det blir bedre! Når vi har importert modellen, kan vi åpne Substance Painter, aktivere Omniverse-koblingen og gå til Importer mesh for automatisk å importere objektet vårt fra USD Composer til Substance. På dette tidspunktet, hvis vi gjør endringer i Blender, kan vi fortsatt re-eksportere og plukke det opp i USD Composer, som automatisk kobles til Substance Painter.

Men når vi først legger til teksturer i Substance Painter, vil det å gjøre dette igjen fjerne disse teksturene. Så når du er fornøyd, legg til materialene dine i Substance Painter, og med Life Link aktivert, vil disse automatisk dukke opp i USD Composer.

Alle endringer du deretter gjør, eksporteres og oppdateres automatisk i USD Composer. Virkelig, virkelig kult!

For meg er denne arbeidsflyten ganske så imponerende. Å kunne gjøre endringer i Blender og Substance Painter i sanntid og få alt dette til å automatisk fungere videre i pipelinen og gjenspeiles i den endelige rendringen, er noe helt annet.

Hvis du er interessert i å prøve ut alt Nvidia Omniverse har å tilby, kan du laste det ned gratis via lenken i beskrivelsen. Og hvis du vil lære mer om alle de tekniske bruksområdene som USD og Omniverse til sammen gir, kan du finne en annen gratis nedlastingslenke for det, i tillegg til en lenke for å delta på de åpne USD-dagene virtuelt eller fysisk på GTC i mars.

Jeg anbefaler virkelig å sjekke det ut, for dette er virkelig fremtiden for 3D-arbeidsflyter.

Mer om USD

I tillegg til dette morsomme eksemplet, har USD mye mer å tilby. Og hvis du utnytter mulighetene godt, vil du bli mye mer effektiv som kunstner. Så hva annet kan det gjøre?

Vel, i tillegg til det faktum at et universelt filformat vil gjøre livet ditt mye enklere, er det absolutt fremtiden. Siden august 2023 har USD blitt en offisiell ideell organisasjon kalt The Alliance of Open USD (AO USD) for kort – med Pixar, Apple, Adobe, Autodesk og Nvidia som grunnleggende medlemmer.

Jeg tror dette virkelig viser hvor investerte disse selskapene er, og hvordan de virkelig ser på dette som fremtiden for et interoperabelt filformat – som alle burde kunne bruke veldig enkelt.

I tillegg til å være et filformat, lagrer USD nesten alt – fra lys og kameraer til simuleringscache og scenedata – i en lag-lignende struktur kalt «prims» (kort for primitiver). Det inneholder all dataen for å beskrive komplekse scener og ressurser i et format som er lesbart av et bredt spekter av applikasjoner.

Nå som vi vet det, gir navnet «Universal Scene Description» faktisk mye mening!

Hvis du er kjent med Blender-kolleksjoner, fungerer USD på samme måte. Du kan nestle hva som helst inni flere nestede samlinger, med den ekstra fordelen at USD behandler alle disse lagene som instanser. Derfor er det i stand til å laste inn og lese all dataen veldig raskt på en optimalisert måte.

Dette fungerer på samme måte som instansiering av samlinger i Blender, noe som er bra fordi instanser krever mindre datakraft enn faktiske duplikate objekter. Det er også veldig likt pre-komposisjon i After Effects eller compounding i Nuke – du grupperer i bunn og grunn ting inni nestede grupper/lag, noe som gjør det enklere og raskere for datamaskinen å jobbe med filen.

Et godt eksempel på denne optimaliseringen er Nvidias nyeste USD-prøveprosjekt kalt «Da Vincis verksted». Ved hjelp av deres USD Composer-app (som er perfekt for å vise USD-prosjekter med sanntidsbelysning), kan jeg spille av dette massive 67 GB-biblioteket med ressurser, teksturer og lys med millioner av polygoner med nesten 120 FPS uten hakking eller problemer. Dette er mulig på grunn av hvor effektivt USD laster inn filene og teksturene på en ekstremt optimalisert måte.

På samme måte er USD-caching nå mye raskere for animasjoner som pleide å bli eksportert som Alembic-filer. Alembic-filer er vanligvis enorme, veldig uoptimaliserte og leses sakte av datamaskinen din – noe som vanligvis resulterer i hakkete avspilling. Med USD er det ikke noe problem å oppnå en jevn FPS, og filstørrelsen er mye mindre.

Flere fordeler

En annen virkelig kul funksjon er at du enkelt kan få tilgang til lagene inni USD-prosjektet ditt fra utsiden av filen. For eksempel, hvis det er et prim-lag som inneholder dataen om at en kule er grønn inni en USD-fil, kan vi ved å bare endre den fargen til rød i en USD-kompatibel editor som USD Composer, endre fargen på kulen uten å noen gang åpne filen i Blender! Det er utrolig kraftig.

Selv om det åpenbart er et grunnleggende eksempel, viser det potensialet. En annen stor fordel er at USD fortsatt lar deg bare jobbe med et enkelt lag av en kompleks fil i en bestemt programvare. Så selv om filen din inneholder et komplett prosjekt med kameraer, lys osv., kan du fortsatt bare åpne én del av den – for eksempel en enkelt modell – inne i Substance Painter, og bare jobbe med den delen av prosjektet uten å påvirke noe annet.

Dette gjelder også hvis flere personer jobber med samme fil – en annen stor styrke ved USD. Ti personer kan jobbe med samme fil, slik at endringer gjort av kunstner nummer én umiddelbart er synlige for kunstner nummer to, slik at de kan tilpasse arbeidet sitt deretter. Å kunne samarbeide med folk eksternt er utrolig kraftig.

Fremtiden for 3D-pipelines

Det er trygt å si at USD er langt mer enn bare et filformat. Det er en omfattende teknologiplattform og et økosystem som i sitt oppdrag virkelig stemmer overens med Blender: friheten til å skape uten begrensninger.

USD er fortsatt under utvikling. Drømmen er reell – et universelt programvarefilformat som kan brukes av all programvare i bransjen, redigerbart i sanntid av flere kunstnere.

Vi bør alle være takknemlige for at Pixar baner vei med denne utrolige utviklingen, og for selskaper som Nvidia og Apple som bidrar med sin del.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *