USD (Universal Scene Description) è un formato file sviluppato da Pixar per lo scambio di scene di grafica computerizzata 3D tra diverse applicazioni di creazione di contenuti digitali. Si tratta di un formato file open-source estensibile in grado di memorizzare informazioni su geometria 3D, shading, illuminazione, fisica e altri settori relativi alla grafica. Può anche comporre e sovrascrivere dati provenienti da più fonti, creando un singolo scenegrafo che può essere modificato in modo non distruttivo.
USD è utilizzato in molti settori, come design, architettura, animazione e gaming, ed è supportato da molte applicazioni software, come Blender, Cinema 4D, Houdini, Maya e SceneKit di Apple. USD è anche il fulcro della pipeline di grafica 3D di Pixar e la base della piattaforma Omniverse di Nvidia.
La specifica Universal Scene Description (USD) utilizza diversi formati di file:
- .usd: può essere codificato sia in ASCII che in binario
- .usda: codificato in ASCII
- .usdc: codificato in binario
- .usdz: un file di pacchetto formattato come archivio zip non crittografato e a compressione zero. Può contenere file .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 e .wav.
Blender (o qualsiasi altro software 3D) ti semplifica la vita permettendoti di svolgere molte attività utilizzando solo la sua interfaccia, ma una volta che inizi a introdurre altri software nella tua pipeline, i problemi iniziano a spuntare da tutte le parti. Quindi parliamo dei maggiori problemi che probabilmente stai già incontrando oggi e di come Pixar ha creato la soluzione per superarli all’infinito e oltre.
Il problema
Se hai mai texturizzato un modello in Substance, importato il tuo lavoro in Unreal o provato a condividere un progetto con qualcuno che lavora con un software diverso, probabilmente ti sarai reso conto di quanto possa essere fastidioso. Dover avere a che fare con diversi tipi di file, flussi di lavoro di esportazione adeguati per ogni singolo software e perdere dati preziosi nel processo può farti sentire come se stessi sbattendo la testa contro il muro di proposito ripetutamente.
E credimi quando dico che questa è una cosa che tutti gli artisti 3D sperimentano ovunque, sia che tu stia lavorando come creatore solista con la tua pipeline personalizzata o in un grande studio come Pixar dovendo conformarti a rigidi vincoli di pipeline per mantenere un flusso di lavoro adeguato per tutte le altre 1.232 persone che ci lavorano. Il problema rimane lo stesso.
Perché succede
Ha senso però, giusto? Ogni software utilizza un tipo di file proprietario che funziona per le sue esigenze. Quindi un file di Blender, ad esempio, è stato codificato per funzionare in Blender ma non in Substance. Ovviamente in un’azienda, ogni artista ha bisogno che un file sia compatibile con il proprio strumento preferito per rendere facile e a volte anche possibile continuare a lavorare su un progetto.
Questo è il motivo per cui dover esportare in un tipo di file più universale come FBX o OBJ è un must quando si passa a un software diverso o si consegna il progetto alla persona successiva. Ma anche questi tipi di file hanno molte limitazioni, come l’incapacità di archiviare correttamente simulazioni, illuminazione e molti altri aspetti dei tuoi progetti Blender.
Introduzione a USD
Quindi qual è la risposta a questo problema? Universal Scene Description (USD), per farla breve! Pubblicato per la prima volta come software open source da Pixar nel 2016 come nuova pipeline principale, USD era principalmente un modo per i loro artisti di rendere più facile lo spostamento dei dati tra loro e gli strumenti che utilizzano.
Dalla sua uscita, USD è costantemente in fase di modifiche e miglioramenti, cosa comune per i software open source proprio come Blender, che viene anche costantemente aggiornato ed ampliato.
Cos’è USD?
USD è molte cose e, se mi addentro davvero nel dettaglio, può essere in realtà una cosa molto tecnica e complicata da descrivere. Ma per dirla in parole semplici, USD è un modo per far sì che app come Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse e molte altre si parlino e si capiscano tra loro.
All’interno del settore informatico c’è in realtà una parola elegante per questo: interoperabilità. Un po’ difficile da pronunciare! Per quanto elegante possa sembrare, in realtà non è così complicato come potresti pensare. Puoi iniziare a usarlo oggi sul tuo computer o anche con più amici o colleghi in tutto il mondo.
Come è diverso USD
Tradizionalmente, una pipeline è una cosa molto unidirezionale in cui ogni persona può lavorare su qualcosa solo quando la persona precedente ha finito. Oppure, per te personalmente, puoi passare alla fase successiva del processo, come la texturizzazione, solo se la modellazione è completamente terminata.
Potresti paragonarlo alla preparazione di una torta: mentre costruisci e crei questa torta devi finire ogni passaggio prima di poter iniziare il successivo. Non puoi cuocere la torta prima di aver mescolato l’impasto e non puoi costruirla prima di aver cotto le torte in forno. Ogni passaggio dipende dal completamento del precedente.
Ancora più importante, una volta che hai messo la glassa e il ripieno o hai deciso che il pan di Spagna doveva essere al cioccolato, non si torna indietro. Non puoi scuocere la torta, cambiare il sapore in vaniglia o togliere la glassa. E questo è ciò che chiamiamo un flusso di lavoro distruttivo.
USD invece è più come i Lego. Ogni blocco rappresenta una parte di una scena 3D (personaggi, oggetti, ambienti, qualsiasi cosa) e puoi assemblare, smontare e modificare questi blocchi in modo indipendente.
In una pipeline tradizionale, la modifica di un blocco comporterebbe la necessità di regolare il resto della struttura. Ma con USD ogni blocco può essere lavorato in modo indipendente e posso semplicemente cambiare un blocco in un colore diverso, ad esempio, senza la necessità di ricostruire l’intero modello.
È un approccio non distruttivo che consente la sperimentazione e flussi di lavoro collaborativi senza essere impantanati dalle limitazioni della pipeline.
L’obiettivo di USD
L’obiettivo in tutto questo con USD è creare un modo per i dati di spostarsi liberamente tra le applicazioni, per dare ad artisti e team la libertà di concentrarsi sulla creazione e non sull’esportazione e di essere bloccati ad aspettare che gli altri siano in grado di continuare a lavorare. Gli artisti non dovrebbero dover ricominciare da capo se il team di concept decide di cambiare le cose più avanti. E non ci dovrebbero essere problemi con i formati di file provenienti da altri programmi che non funzionano nel software che hai scelto.
A livello di servizio, questo è ciò che sembra essere USD: un formato file altamente interoperabile facilmente scambiabile tra diversi software. E a dire il vero, questo è ciò che sarà per la maggior parte degli utenti di Blender, poiché molti di noi tendono a lavorare da soli. Ma USD è più di un semplice tipo di file…
È un modo per assemblare e organizzare un numero qualsiasi di risorse in set virtuali, scene, riprese e mondi, utilizzandoli da un’applicazione all’altra e modificandoli in modo non distruttivo spesso in tempo reale.
Come lavorare con USD
Quindi vediamo come possiamo lavorare con USD in un flusso di lavoro di Blender. Nella sua forma più semplice, USD è stata un’opzione di esportazione in Blender sin dalla versione 3.6. Quindi, se hai un file su cui stai lavorando e vuoi salvarlo come file USD, puoi andare su File > Esporta > Universal Scene Description e ti darà una finestra di prompt per salvare il file.
Ha diverse opzioni, ma le principali da notare sono:
- Solo selezione: includerà solo gli oggetti selezionati nell’esportazione
- Animazione e capelli: includerà/escluderà i dati di animazione e delle particelle di capelli per i tuoi oggetti
Ecco un ottimo esempio di come funziona USD. Questo è un file dalla libreria di esempi USD di Nvidia che è stato realizzato in una serie di software come 3ds Max e Substance. Se lo apri in Blender importandolo, funziona quasi al 100% immediatamente!
Come puoi vedere, contiene tutti i dati, tra cui luci, profondità di campo, la fotocamera, materiali e molto altro. L’unica cosa che non viene esportata correttamente è l’illuminazione HDRI che dobbiamo impostare noi stessi. Ma è incredibile pensare che questo appaia quasi identico all’interno del renderer Arnold di 3DS Max e sia stato semplicemente esportato su Blender e funzioni altrettanto bene utilizzando un singolo tipo di file!
Ha una gerarchia corretta, materiali e praticamente tutto è impostato. È davvero, davvero fantastico! Ad ogni modo, questo dimostra come funziona USD tra diverse applicazioni e che funziona come un formato file interoperabile.
Un esempio pratico di USD
Ma diamo un’occhiata a un esempio più pratico. Per questo esempio di pipeline utilizzerò un tipico flusso di lavoro di utilizzo di Blender per modellare un oggetto per un gioco.
La pipeline tradizionale sarebbe qualcosa del genere:
- Crea modello in Blender
- Disimballa UV modello
- Esporta come FBX poiché Painter non può utilizzare i file di Blender
- Importa FBX in Substance Painter
- Aggiungi materiali in Substance
- Esporta texture come immagini
- Importa FBX nel motore di gioco
- Imposta le texture manualmente
- Crea rendering
Con USD possiamo semplificare significativamente questo processo e mantenere un flusso di lavoro non distruttivo in gran parte. La pipeline rimane molto simile con Blender e Substance che sono i componenti principali.
Ma poiché USD non funziona nativamente in tempo reale tra queste app (principalmente perché Blender ha ancora un supporto USD limitato), utilizzerò Nvidia Omniverse per creare quella connessione per noi.
Tramite Omniverse posso accedere a una filiale di Blender più compatibile con USD creata da Nvidia. Posso abilitare il connettore Omniverse per Substance Painter per realizzare LifeLink. E posso usare USD Composer per colmare il divario tra le app e visualizzare il prodotto finale.
Con questa configurazione, ora possiamo aprire il nostro progetto Blender nella filiale Blender personalizzata. Se premiamo N e andiamo sul lato destro qui otteniamo l’addon Nucleus che ci consente di esportare questo come file USD.
Se poi andiamo su USD Composer e apriamo quel file USD otteniamo una sorta di collegamento live tra le app. Ora posso apportare qualsiasi modifica alla mesh, riesportarla e farla automaticamente prelevare all’interno di USD Composer.
Diventa ancora meglio! Una volta importato il modello, possiamo aprire Substance Painter, abilitare il connettore Omniverse e andare su Importa mesh per importare automaticamente il nostro oggetto da USD Composer in Substance. A questo punto, se apportiamo modifiche in Blender, possiamo comunque riesportare e prelevare in USD Composer, che si collega automaticamente a Substance Painter.
Tuttavia, una volta che aggiungiamo texture all’interno di Substance Painter, fare di nuovo questo rimuoverà quelle texture. Quindi, una volta che sei contento, aggiungi i tuoi materiali in Substance Painter e con Life Link abilitato, questi appariranno automaticamente in USD Composer.
Qualsiasi modifica apportata verrà automaticamente esportata e aggiornata in USD Composer. Davvero, davvero fantastico!
Per me questo flusso di lavoro è praticamente sbalorditivo. Essere in grado di apportare modifiche in Blender e Substance Painter in tempo reale e avere tutto ciò che funziona automaticamente lungo la linea e si riflette nel rendering finale è qualcosa di diverso.
Se sei interessato a provare tutto ciò che Nvidia Omniverse ha da offrire, puoi scaricarlo gratuitamente tramite il link nella descrizione. E se vuoi saperne di più su tutti i casi d’uso tecnici che USD e Omniverse offrono insieme, puoi trovare un altro link per il download gratuito e un link per partecipare alle sessioni della giornata aperta di USD virtualmente o di persona al GTC di marzo.
Consiglio vivamente di dare un’occhiata perché questo è davvero il futuro dei flussi di lavoro 3D.
Altro su USD
Oltre a questo divertente esempio, USD ha molto altro da offrire. E se fai buon uso delle sue capacità, diventerai molto più efficiente come artista. Quindi cos’altro può fare?
Oltre al fatto che un formato di file universale ti semplificherebbe molto la vita, è assolutamente il futuro. Da agosto 2023, USD è diventata un’organizzazione ufficiale senza scopo di lucro chiamata The Alliance of Open USD (AO USD) in breve, con Pixar, Apple, Adobe, Autodesk e Nvidia come membri fondatori.
Penso che questo dimostri davvero quanto queste aziende siano investite e come vedano davvero questo come il futuro di un formato di file interoperabile, che tutti dovrebbero essere in grado di utilizzare molto facilmente.
Oltre ad essere un formato di file, USD memorizza quasi tutto (da luci e telecamere a cache di simulazione e dati di scena) in una struttura a strati chiamata “prim” (abbreviazione di primitive). Contiene tutti i dati per descrivere scene e risorse complesse in un formato leggibile da una vasta gamma di applicazioni.
Ora, sapendo questo, il nome “Universal Scene Description” ha davvero molto senso!
Se hai familiarità con le collezioni di Blender, USD funziona in modo simile. Puoi nidificare qualsiasi cosa all’interno di più collezioni nidificate, con l’ulteriore vantaggio che USD tratta tutti questi livelli come istanze. Pertanto, è in grado di caricare e leggere molto rapidamente tutti i dati in modo ottimizzato.
Questo funziona in modo simile alle collezioni di istanze in Blender, il che è positivo perché le istanze richiedono meno calcoli rispetto agli oggetti duplicati effettivi. È anche molto simile alla pre-compilazione in After Effects o alla composizione in Nuke: fondamentalmente raggruppi le cose all’interno di gruppi/livelli nidificati, il che rende più facile e veloce per il computer lavorare con il file.
Un ottimo esempio di questa ottimizzazione è il più recente progetto di esempio USD di Nvidia chiamato “L’officina di Da Vinci”. Utilizzando la loro app USD Composer (che è perfetta per visualizzare progetti USD con illuminazione in tempo reale), posso riprodurre questa massiccia libreria di risorse, texture e luci da 67 GB con milioni di poligoni a quasi 120 FPS senza alcun ritardo o problema. Questo è possibile grazie a quanto efficientemente USD carica i file e le texture in modo estremamente ottimizzato.
Allo stesso modo, per le animazioni che venivano esportate come file Alembic, la memorizzazione nella cache USD è ora molto più veloce. I file Alembic sono solitamente enormi, molto non ottimizzati e letti lentamente dal tuo computer, il che di solito si traduce in una riproduzione a scatti. Con USD, ottenere un FPS stabile non è affatto un problema e la dimensione del file è molto più piccola.
Altri vantaggi
Un’altra caratteristica davvero interessante è che puoi accedere ai livelli all’interno del tuo progetto USD dall’esterno del file abbastanza facilmente. Ad esempio, se c’è un livello prim contenente i dati che una sfera è verde all’interno di un file USD, semplicemente cambiando quel colore in rosso in un editor compatibile con USD come USD Composer, possiamo cambiare il colore della sfera senza mai aprire il file in Blender! Ora questo è incredibilmente potente.
Anche se questo è ovviamente un esempio di base, mostra il potenziale. Un altro vantaggio importante è che USD ti consente comunque di lavorare solo su un singolo livello di un file complesso in un determinato software. Quindi, anche se il tuo file contiene un progetto completo con telecamere, luci, ecc., sei comunque in grado di aprire solo un pezzo di esso, ad esempio un singolo modello, all’interno di Substance Painter e lavorare solo su quella parte del progetto senza influire su nient’altro.
Questo vale anche se più persone stanno lavorando allo stesso file, un altro grande punto di forza di USD. Dieci persone potrebbero lavorare sullo stesso file, quindi le modifiche apportate dall’artista numero uno sono immediatamente visibili all’artista numero due, consentendo loro di adattare il proprio lavoro di conseguenza. Essere in grado di collaborare con le persone da remoto è incredibilmente potente.
Il futuro delle pipeline 3D
È sicuro dire che USD è molto più di un semplice formato di file. È una piattaforma tecnologica ed un ecosistema completo che nella sua missione si allinea davvero con Blender: la libertà di creare senza limitazioni.
USD è ancora in fase di sviluppo. Il sogno è reale: un formato di file software universale utilizzabile da qualsiasi software del settore, modificabile in tempo reale da più artisti.
Dovremmo essere tutti grati a Pixar per aver aperto la strada con questo incredibile sviluppo e alle aziende come Nvidia e Apple per aver contribuito con la loro parte.