USD Bestandsformaat voor 3D: Waarom het fantastisch is

Gecategoriseerd als 3D, Open Source Getagged , , , , , , ,
Save and Share:

USD (Universal Scene Description) is een bestandsformaat ontwikkeld door Pixar voor het uitwisselen van 3D computer graphics scènes tussen applicaties voor digitale contentcreatie. Het is een uitbreidbaar open-source bestandsformaat dat informatie kan opslaan over 3D geometrie, shading, belichting, physics, en andere grafische domeinen. Het kan ook data uit meerdere bronnen samenstellen en overschrijven, waardoor een enkele scenegraph ontstaat die non-destructief bewerkt kan worden.

USD wordt in veel industrieën gebruikt, zoals design, architectuur, animatie en gaming, en wordt ondersteund door veel softwareapplicaties, zoals Blender, Cinema 4D, Houdini, Maya en Apple’s SceneKit. USD is ook de kern van Pixar’s 3D grafische pipeline en de basis van Nvidia’s Omniverse platform.

De Universal Scene Description (USD) specificatie gebruikt verschillende bestandsformaten:

  • .usd – Kan zowel ASCII als binair gecodeerd zijn
  • .usda – ASCII gecodeerd
  • .usdc – Binair gecodeerd
  • .usdz – Een pakketbestand geformatteerd als een zero-compressie, niet-versleuteld ziparchief. Kan .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 en .wav bestanden bevatten.

Blender (of andere 3D-software) maakt je leven makkelijk door je veel taken te laten uitvoeren met alleen de interface, maar zodra je andere software in je pipeline introduceert, duiken er links en rechts problemen op. Laten we het dus hebben over de grootste problemen waar je waarschijnlijk vandaag al tegenaan loopt, en hoe Pixar de oplossing heeft gecreëerd om deze te overwinnen, tot in het oneindige en verder.

Video over het USD bestandsformaat door KaizenTutorials

Het Probleem

Als je ooit een model hebt getextureerd in Substance, je werk in Unreal hebt geïmporteerd, of hebt geprobeerd een project te delen met iemand die met andere software werkt, heb je waarschijnlijk gemerkt hoe vervelend dit kan zijn. Om te moeten omgaan met verschillende bestandstypen, correcte exportworkflows voor elke afzonderlijke software, en kostbare data te verliezen in het proces, kan het voelen alsof je met opzet herhaaldelijk met je hoofd tegen de muur aan het bonken bent.

En geloof me als ik zeg dat dit iets is dat alle 3D-artiesten overal ervaren – of je nu als solo creator werkt met je eigen custom pipeline, of in een grote studio zoals Pixar die zich moet conformeren aan strikte pipeline beperkingen om een goede workflow te behouden voor alle andere 1.232 mensen die daar werken. Het probleem blijft hetzelfde.

Waarom Dit Gebeurt

Het is echter logisch, toch? Elke software gebruikt een eigen bestandstype dat werkt voor zijn behoeften. Dus een bestand van Blender is bijvoorbeeld gecodeerd om in Blender te werken, maar niet in Substance. Vanzelfsprekend heeft in een bedrijf elke artiest een bestand nodig dat compatibel is met zijn eigen gekozen tool om het makkelijk en soms zelfs mogelijk te maken om aan een project te blijven werken.

Dit is waarom het exporteren naar een meer universeel bestandstype zoals FBX of OBJ een must is wanneer je overschakelt naar andere software of je project overdraagt aan de volgende persoon. Maar zelfs deze bestandstypen hebben veel beperkingen, zoals het onvermogen om simulaties, belichting en vele andere aspecten van je Blenderprojecten correct op te slaan.

Introductie van USD

Dus wat is het antwoord op dit probleem? Universal Scene Description (USD), kortweg! USD, voor het eerst gepubliceerd als open source software door Pixar in 2016 als hun nieuwe core pipeline, was vooral een manier voor hun artiesten om data makkelijker tussen elkaar en de tools die ze gebruiken te verplaatsen.

Sinds de release wordt USD constant veranderd en verbeterd, wat gebruikelijk is voor open source software net als Blender, dat ook voortdurend wordt bijgewerkt en uitgebreid.

Wat is USD?

USD is veel dingen en als ik er echt diep op inga, kan het eigenlijk een heel technisch en ingewikkeld ding zijn om te beschrijven. Maar als ik het simpel zeg, is USD een manier om apps zoals Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse, en nog veel meer met elkaar te laten praten en elkaar te laten begrijpen.

Binnen de computerindustrie is er eigenlijk een chique woord voor – interoperabiliteit. Best moeilijk om te zeggen! Hoe chique dat ook klinkt, het is eigenlijk niet zo ingewikkeld als je misschien denkt. Je kunt er vandaag nog mee beginnen op je eigen computer of zelfs met meerdere vrienden of collega’s over de hele wereld.

Hoe USD Anders Is

Traditioneel is een pipeline iets heel eenrichtingsverkeer waarbij elke persoon pas aan iets mag werken als de vorige persoon klaar is. Of voor jou persoonlijk, kun je pas naar de volgende stap in het proces gaan, zoals textureren, als de modellering volledig klaar is.

Je zou dit kunnen vergelijken met het bakken van een cake – terwijl je deze cake bouwt en maakt, moet je elke stap afronden voordat je aan de volgende kunt beginnen. Je kunt de cake niet bakken voordat je het deeg hebt gemengd, en je kunt hem niet bouwen voordat je de cakes in de oven hebt gebakken. Elke stap is afhankelijk van het feit dat de vorige is voltooid.

Belangrijker nog, als je eenmaal de frosting en vulling hebt aangebracht of hebt besloten dat de cakebodem chocolade moest zijn, is er geen weg meer terug. Je kunt de cake niet meer ontbakken, de smaak veranderen in vanille, of de frosting eraf halen. En dit noemen we een destructieve workflow.

USD is echter meer als Lego. Elk blokje vertegenwoordigt een deel van een 3D-scène – personages, objecten, omgevingen, wat dan ook – en je kunt deze blokjes onafhankelijk van elkaar monteren, demonteren en aanpassen.

In een traditionele pipeline zou het veranderen van één blok betekenen dat je de rest van de structuur zou moeten aanpassen. Maar met USD kan aan elk bouwblok onafhankelijk worden gewerkt en kan ik bijvoorbeeld eenvoudig één blok in een andere kleur veranderen zonder dat ik het hele model opnieuw hoef op te bouwen.

Het is een non-destructieve aanpak die experimenteren en collaboratieve workflows mogelijk maakt zonder te worden gehinderd door pipeline beperkingen.

Het Doel van USD

Het doel van dit alles met USD is om een manier te creëren waarop data vrijelijk tussen applicaties kan bewegen, om artiesten en teams de vrijheid te geven zich te richten op creatie en niet op exporteren en vastzitten in het wachten op elkaar om te kunnen blijven werken. Artiesten zouden niet opnieuw moeten hoeven beginnen als het conceptteam besluit om later in het traject dingen te veranderen. En er zouden geen problemen moeten zijn met bestandsformaten die van andere programma’s komen en niet werken in jouw software naar keuze.

Op serviceniveau lijkt dat te zijn wat USD is – een zeer interoperabel bestandsformaat dat makkelijk uitwisselbaar is tussen verschillende software. En eerlijk gezegd is dit wat het voor de meeste Blender-gebruikers zal zijn, aangezien velen van ons de neiging hebben om solo te werken. Maar USD is meer dan alleen een bestandstype…

Het is een manier om een willekeurig aantal assets samen te stellen en te organiseren in virtuele sets, scènes, shots en werelden – ze van applicatie naar applicatie te gebruiken en ze non-destructief en vaak in real-time te bewerken.

Hoe te Werken met USD

Laten we dus eens kijken hoe we met USD kunnen werken in een Blender workflow. In zijn meest basale vorm is USD al sinds versie 3.6 een exportoptie in Blender. Dus als je een bestand hebt waar je aan werkt en je wilt het opslaan als een USD-bestand, kun je naar Bestand > Exporteren > Universal Scene Description gaan en krijg je een promptvenster om het bestand op te slaan.

Het heeft nogal wat opties, maar de belangrijkste om op te merken zijn:

  • Alleen Selectie – Zal alleen geselecteerde objecten in je export opnemen
  • Animatie en Haar – Zal animatie en haar particle data voor je objecten opnemen/uitsluiten

Hier is een geweldig voorbeeld van hoe USD werkt. Dit is een bestand uit Nvidia’s USD sample library, dat is gemaakt in een scala aan software zoals 3ds Max en Substance. Als je dit in Blender opent door het te importeren, werkt het bijna 100% direct!

Zoals je kunt zien, bevat het alle data, inclusief lights, depth of field, de camera, materialen, en nog veel meer. Het enige dat niet correct wordt geëxporteerd is de HDRI-belichting, die we zelf moeten instellen. Maar het is ongelooflijk om te bedenken dat dit er bijna identiek uitziet in 3DS Max’s Arnold renderer, en gewoon is geëxporteerd naar Blender en net zo goed werkt met een enkel bestandstype!

Het heeft een correcte hiërarchie, materialen, en eigenlijk is alles ingesteld. Het is echt, echt cool! Hoe dan ook, dit laat zien hoe USD werkt tussen verschillende applicaties en dat het functioneert als een interoperabel bestandsformaat.

Een Praktisch USD Voorbeeld

Maar laten we eens kijken naar een meer praktisch voorbeeld. Voor dit pipeline voorbeeld zal ik een typische workflow gebruiken waarbij Blender wordt gebruikt om een object te modelleren voor een game.

De traditionele pipeline zou er ongeveer zo uitzien:

  1. Model creëren in Blender
  2. UV unwrap model
  3. Exporteer als FBX, omdat Painter geen Blender-bestanden kan gebruiken
  4. Importeer FBX in Substance Painter
  5. Voeg materialen toe in Substance
  6. Exporteer textures als afbeeldingen
  7. Importeer FBX in game engine
  8. Stel textures handmatig in
  9. Creëer renders

Met USD kunnen we dit proces aanzienlijk vereenvoudigen en een grotendeels non-destructieve workflow behouden. De pipeline blijft erg vergelijkbaar, met Blender en Substance als de belangrijkste componenten.

Maar omdat USD niet native in real-time werkt tussen deze apps (voornamelijk omdat Blender nog steeds beperkte USD-ondersteuning heeft), zal ik Nvidia Omniverse gebruiken om die verbinding voor ons te creëren.

Via Omniverse krijg ik toegang tot een meer USD-compatibele branch van Blender die door Nvidia is gebouwd. Ik kan de Omniverse connector voor Substance Painter inschakelen om de LifeLink te realiseren. En ik kan USD Composer gebruiken om de kloof tussen de apps te overbruggen en het eindproduct te bekijken.

Met die setup kunnen we nu ons Blender-project openen in de custom Blender branch. Als we dan op N drukken en naar de rechterkant hier gaan, krijgen we de Nucleus add-on waarmee we dit als een USD-bestand kunnen exporteren.

Als we dan naar USD Composer gaan en dat USD-bestand openen, krijgen we een soort live link tussen de apps. Ik kan nu elke wijziging aan de mesh aanbrengen, deze opnieuw exporteren, en dat wordt automatisch opgepikt in USD Composer.

Het wordt nog beter! Zodra we het model hebben geïmporteerd, kunnen we Substance Painter openen, de Omniverse connector inschakelen en naar Import Mesh gaan om ons object automatisch vanuit USD Composer in Substance te importeren. Op dit punt, als we wijzigingen aanbrengen in Blender, kunnen we nog steeds opnieuw exporteren en dat oppikken in USD Composer, dat automatisch linkt naar Substance Painter.

Echter, zodra we textures toevoegen in Substance Painter, zal dit opnieuw doen die textures verwijderen. Dus zodra je tevreden bent, voeg je je materialen toe in Substance Painter, en met de Life Link ingeschakeld, verschijnen deze automatisch in USD Composer.

Alle wijzigingen die je dan maakt worden automatisch geëxporteerd en bijgewerkt in USD Composer. Echt, echt cool!

Voor mij is deze workflow behoorlijk verbluffend. In staat zijn om wijzigingen in Blender en Substance Painter in real-time aan te brengen en dat alles automatisch door te laten werken en te laten reflecteren in de uiteindelijke render is iets anders.

Als je geïnteresseerd bent in het uitproberen van alles wat Nvidia Omniverse te bieden heeft, kun je het gratis downloaden via de link in de beschrijving. En als je meer wilt weten over alle technische use cases die USD en Omniverse samen bieden, kun je nog een gratis downloadlink vinden, evenals een link om de open USD day sessies virtueel of in persoon bij te wonen op GTC in maart.

Ik raad echt aan om dat te bekijken, want dit is echt de toekomst van 3D workflows.

Meer over USD

Naast dit leuke voorbeeld heeft USD nog veel meer te bieden. En als je goed gebruik maakt van de mogelijkheden, zul je een stuk efficiënter worden als artiest. Dus wat kan het nog meer?

Nou, naast het feit dat een universeel bestandsformaat je leven een stuk makkelijker zou maken, is het absoluut de toekomst. Sinds augustus 2023 is USD een officiële non-profitorganisatie geworden, genaamd The Alliance of Open USD (AO USD) in het kort – met Pixar, Apple, Adobe, Autodesk en Nvidia als oprichters.

Ik denk dat dit echt laat zien hoe geïnvesteerd deze bedrijven zijn en hoe ze dit echt zien als de toekomst van een interoperabel bestandsformaat – dat iedereen heel gemakkelijk zou moeten kunnen gebruiken.

Naast een bestandsformaat slaat USD vrijwel alles op – van lights en camera’s tot simulatie caches en scène data – in een laag-achtige structuur genaamd “prims” (afkorting van primitives). Het bevat al die data om complexe scènes en assets te beschrijven in een formaat dat leesbaar is voor een breed scala aan applicaties.

Nu dat wetende, is de naam “Universal Scene Description” eigenlijk heel logisch!

Als je bekend bent met Blender collections, werkt USD op dezelfde manier. Je kunt alles nesten binnen meerdere geneste collections, met als bijkomend voordeel dat USD al deze lagen behandelt als instances. Daarom is het in staat om alle data zeer snel te laden en te lezen op een geoptimaliseerde manier.

Dit werkt vergelijkbaar met instancing collections in Blender, wat goed is omdat instances minder computing vereisen dan daadwerkelijke duplicate objecten. Het is ook erg vergelijkbaar met pre-comping in After Effects of compounding in Nuke – je groepeert in feite dingen binnen geneste groepen/lagen, wat het makkelijker en sneller maakt voor de computer om met het bestand te werken.

Een geweldig voorbeeld van deze optimalisatie is Nvidia’s nieuwste USD sample project genaamd “Da Vinci’s Workshop”. Met behulp van hun USD Composer app (die perfect is voor het bekijken van USD projecten met real-time belichting), kan ik deze enorme 67GB library van assets, textures en lights met miljoenen polygonen afspelen met bijna 120 FPS zonder enige lag of problemen. Dit is mogelijk vanwege hoe efficiënt USD de bestanden en textures laadt op een extreem geoptimaliseerde manier.

Evenzo is voor animaties, die vroeger werden geëxporteerd als Alembic bestanden, USD caching nu een stuk sneller. Alembic bestanden zijn meestal enorm groot, zeer ongeoptimaliseerd, en worden traag gelezen door je computer – meestal resulterend in schokkerige playback. Met USD is het bereiken van een stabiele FPS geen enkel probleem en is de bestandsgrootte veel kleiner.

Meer Voordelen

Een andere echt coole feature is dat je vrij makkelijk toegang kunt krijgen tot de lagen binnen je USD project van buiten het bestand. Bijvoorbeeld, als er een prim layer is die de data bevat dat een bol groen is binnen een USD bestand, kunnen we door die kleur simpelweg te veranderen naar rood in een USD-compatibele editor zoals USD Composer, de kleur van de bol veranderen zonder ooit het bestand in Blender te openen! Dat is nu ongelooflijk krachtig.

Hoewel dat uiteraard een basaal voorbeeld is, laat het wel het potentieel zien. Een ander groot voordeel is dat USD je nog steeds in staat stelt om slechts aan één laag van een complex bestand te werken in een bepaalde software. Dus zelfs als je bestand een compleet project met camera’s, lights etc. bevat, ben je nog steeds in staat om slechts één stuk ervan te openen – bijvoorbeeld een enkel model – in Substance Painter, en alleen aan dat deel van het project te werken zonder iets anders te beïnvloeden.

Dit geldt ook als meerdere mensen aan hetzelfde bestand werken – nog een grote kracht van USD. Tien mensen zouden aan hetzelfde bestand kunnen werken, zodat wijzigingen die door artiest nummer één worden aangebracht onmiddellijk zichtbaar zijn voor artiest nummer twee, waardoor ze hun werk dienovereenkomstig kunnen aanpassen. In staat zijn om op afstand met mensen samen te werken is ongelooflijk krachtig.

De Toekomst van 3D Pipelines

Het is veilig om te zeggen dat USD veel meer is dan alleen een bestandsformaat. Het is een uitgebreid technologieplatform en ecosysteem dat in zijn missie echt aansluit bij Blender: de vrijheid om te creëren zonder beperkingen.

USD is nog steeds in ontwikkeling. De droom is reëel – een universeel software bestandsformaat dat door elke software in de industrie kan worden gebruikt, real-time bewerkbaar door meerdere artiesten.

We zouden allemaal dankbaar moeten zijn voor Pixar die de weg baant met deze ongelooflijke ontwikkeling, en voor bedrijven zoals Nvidia en Apple die hun steentje bijdragen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *