USD (Universal Scene Description, ou Description universelle de scène) est un format de fichier développé par Pixar pour l’échange de scènes de graphiques 3D entre différentes applications de création de contenu numérique. Il s’agit d’un format de fichier open source extensible qui peut stocker des informations sur la géométrie 3D, l’ombrage, l’éclairage, la physique et d’autres domaines liés aux graphiques. Il peut également composer et remplacer des données provenant de plusieurs sources, créant ainsi un seul graphe de scène qui peut être modifié de manière non destructive.
USD est utilisé dans de nombreux secteurs, tels que la conception, l’architecture, l’animation et le jeu vidéo, et est pris en charge par de nombreuses applications logicielles, telles que Blender, Cinema 4D, Houdini, Maya et SceneKit d’Apple. USD est également au cœur du pipeline de graphiques 3D de Pixar et à la base de la plateforme Omniverse de Nvidia.
La spécification Universal Scene Description (USD) utilise plusieurs formats de fichiers :
- .usd : peut être encodé en ASCII ou en binaire
- .usda : encodé en ASCII
- .usdc : encodé en binaire
- .usdz : un fichier package formaté comme une archive zip non chiffrée et sans compression. Peut contenir des fichiers .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 et .wav.
Blender (ou tout autre logiciel 3D) vous simplifie la vie en vous permettant d’effectuer de nombreuses tâches en utilisant uniquement son interface, mais dès que vous commencez à introduire d’autres logiciels dans votre pipeline, des problèmes surgissent de toutes parts. Parlons donc des problèmes les plus importants que vous rencontrez probablement déjà aujourd’hui et de la manière dont Pixar a créé la solution pour les surmonter, et aller au-delà.
Le problème
Si vous avez déjà texturé un modèle dans Substance, importé votre travail dans Unreal ou essayé de partager un projet avec quelqu’un qui travaille dans un logiciel différent, vous avez probablement réalisé à quel point cela peut être pénible. Devoir gérer différents types de fichiers, des workflows d’exportation appropriés pour chaque logiciel individuel et perdre des données précieuses dans le processus peut vous donner l’impression de vous cogner la tête contre un mur à plusieurs reprises, et ce, volontairement.
Et croyez-moi quand je dis que c’est quelque chose que tous les artistes 3D du monde entier vivent, que vous travailliez en tant que créateur solo avec votre propre pipeline personnalisé ou dans un grand studio comme Pixar, devant vous conformer à des contraintes de pipeline rigoureuses pour maintenir un workflow approprié pour toutes les 1 232 autres personnes qui y travaillent. Le problème reste le même.
Pourquoi cela se produit-il ?
Mais c’est logique, n’est-ce pas ? Chaque logiciel utilise un type de fichier propriétaire qui fonctionne pour ses besoins. Ainsi, un fichier de Blender, par exemple, a été codé pour fonctionner dans Blender, mais pas dans Substance. Il est évident que dans une entreprise, chaque artiste a besoin d’un fichier compatible avec son propre outil de choix afin de faciliter, voire de rendre possible, la poursuite du travail sur un projet.
C’est pourquoi il est indispensable d’exporter vers un type de fichier plus universel comme FBX ou OBJ lors du passage à un autre logiciel ou de la transmission de votre projet à la personne suivante. Mais même ces types de fichiers ont beaucoup de limitations, comme l’incapacité de stocker correctement les simulations, l’éclairage et de nombreux autres aspects de vos projets Blender.
Présentation d’USD
Alors, quelle est la réponse à ce problème ? Universal Scene Description (USD), pour faire court ! D’abord publié en tant que logiciel open source par Pixar en 2016 comme leur nouveau pipeline de base, USD était principalement un moyen pour leurs artistes de faciliter le transfert de données entre eux et les outils qu’ils utilisent.
Depuis sa sortie, USD subit constamment des changements et des améliorations, ce qui est courant pour les logiciels open source, tout comme Blender, qui est également constamment mis à jour et étendu.
Qu’est-ce qu’USD ?
USD est beaucoup de choses et, si je m’y plonge vraiment, cela peut en fait être une chose très technique et compliquée à décrire. Mais pour faire simple, USD est un moyen de faire en sorte que des applications comme Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse et bien d’autres communiquent et se comprennent.
Dans l’industrie informatique, il existe en fait un mot compliqué pour cela : l’interopérabilité. Un peu difficile à prononcer ! Mais aussi compliqué que cela puisse paraître, ce n’est en fait pas aussi compliqué que vous pourriez le penser. Vous pouvez commencer à l’utiliser dès aujourd’hui sur votre propre ordinateur ou même avec plusieurs amis ou collègues à travers le monde.
En quoi USD est-il différent ?
Traditionnellement, un pipeline est une chose très unidirectionnelle où chaque personne ne peut travailler sur quelque chose qu’une fois que la personne précédente a terminé. Ou, pour vous personnellement, vous ne pouvez passer à l’étape suivante du processus, comme la texturation, que si la modélisation est complètement terminée.
Vous pourriez comparer cela à la préparation d’un gâteau : lorsque vous construisez et créez ce gâteau, vous devez terminer chaque étape avant de pouvoir commencer la suivante. Vous ne pouvez pas cuire le gâteau avant de mélanger la pâte, et vous ne pouvez pas le construire avant de faire cuire les gâteaux au four. Chaque étape dépend de l’achèvement de la précédente.
Plus important encore, une fois que vous avez mis le glaçage et la garniture ou que vous avez décidé que la génoise devait être au chocolat, il n’y a pas de retour en arrière possible. Vous ne pouvez pas décuire le gâteau, changer la saveur en vanille ou enlever le glaçage. Et c’est ce que nous appelons un workflow destructif.
USD, cependant, est plus comme des Legos. Chaque bloc représente une partie d’une scène 3D : personnages, objets, environnements, peu importe, et vous pouvez assembler, désassembler et modifier ces blocs indépendamment.
Dans un pipeline traditionnel, changer un bloc impliquerait d’ajuster le reste de la structure. Mais avec USD, chaque élément de construction peut être travaillé indépendamment et je peux simplement changer un bloc en une couleur différente, par exemple, sans avoir besoin de reconstruire l’ensemble du modèle.
Il s’agit d’une approche non destructive qui permet l’expérimentation et les workflows collaboratifs sans être freiné par les limitations du pipeline.
Le but d’USD
L’objectif de tout cela avec USD est de créer un moyen pour les données de circuler librement entre les applications, de donner aux artistes et aux équipes la liberté de se concentrer sur la création et non sur l’exportation et d’être coincés à attendre les uns les autres pour pouvoir continuer à travailler. Les artistes ne devraient pas avoir à recommencer si l’équipe de conception décide de changer les choses plus tard. Et il ne devrait pas y avoir de problèmes avec les formats de fichiers provenant d’autres programmes qui ne fonctionnent pas dans votre logiciel de choix.
Au niveau du service, c’est ce que semble être USD : un format de fichier hautement interopérable qui est facilement échangeable entre différents logiciels. Et pour être juste, c’est ce qu’il sera pour la plupart des utilisateurs de Blender, car beaucoup d’entre nous ont tendance à travailler en solo. Mais USD est plus qu’un simple type de fichier…
C’est une façon d’assembler et d’organiser un nombre quelconque d’éléments dans des ensembles, des scènes, des prises de vue et des mondes virtuels, en les utilisant d’une application à l’autre et en les modifiant de manière non destructive, souvent en temps réel.
Comment travailler avec USD
Voyons donc comment nous pouvons travailler avec USD dans un workflow Blender. Dans sa forme la plus élémentaire, USD est une option d’exportation dans Blender depuis la version 3.6. Ainsi, si vous avez un fichier sur lequel vous travaillez et que vous voulez l’enregistrer en tant que fichier USD, vous pouvez aller dans Fichier > Exporter > Universal Scene Description et une fenêtre s’ouvrira pour vous inviter à enregistrer le fichier.
Il a pas mal d’options, mais les principales à noter sont les suivantes :
- Sélection uniquement : n’inclura que les objets sélectionnés dans votre exportation.
- Animation et cheveux : inclura/exclura les données d’animation et de particules de cheveux pour vos objets.
Voici un excellent exemple de la façon dont USD fonctionne. Il s’agit d’un fichier de la bibliothèque d’échantillons USD de Nvidia qui a été créé dans une multitude de logiciels comme 3ds Max et Substance. Si vous l’ouvrez dans Blender en l’important, il fonctionne à presque 100 % immédiatement !
Comme vous pouvez le voir, il contient toutes les données, y compris les lumières, la profondeur de champ, la caméra, les matériaux et bien plus encore. La seule chose qui n’est pas exportée correctement est l’éclairage HDRI que nous devons configurer nous-mêmes. Mais il est incroyable de penser que cela ressemble presque trait pour trait au rendu Arnold de 3DS Max, et qu’il a simplement été exporté vers Blender et fonctionne tout aussi bien en utilisant un seul type de fichier !
Il a une hiérarchie appropriée, des matériaux et, en gros, tout est configuré. C’est vraiment, vraiment cool ! Quoi qu’il en soit, cela montre comment USD fonctionne entre différentes applications et qu’il fonctionne comme un format de fichier interopérable.
Un exemple pratique d’USD
Mais jetons un coup d’œil à un exemple plus pratique. Pour cet exemple de pipeline, j’utiliserai un workflow typique d’utilisation de Blender pour modéliser un objet pour un jeu.
Le pipeline traditionnel ressemblerait à ceci :
- Créer un modèle dans Blender
- Dérouler les UV du modèle
- Exporter au format FBX puisque Painter ne peut pas utiliser les fichiers Blender
- Importer le FBX dans Substance Painter
- Ajouter des matériaux dans Substance
- Exporter les textures en tant qu’images
- Importer le FBX dans le moteur de jeu
- Configurer les textures manuellement
- Créer des rendus
Avec USD, nous pouvons simplifier considérablement ce processus et conserver un workflow largement non destructif. Le pipeline reste très similaire, Blender et Substance étant les principaux composants.
Mais comme USD ne fonctionne pas nativement en temps réel entre ces applications (principalement parce que Blender a encore un support USD limité), j’utiliserai Nvidia Omniverse pour créer cette connexion pour nous.
Grâce à Omniverse, je peux accéder à une branche de Blender plus compatible avec USD construite par Nvidia. Je peux activer le connecteur Omniverse pour Substance Painter afin de réaliser le LifeLink. Et je peux utiliser USD Composer pour combler le fossé entre les applications et visualiser le produit final.
Avec cette configuration, nous pouvons maintenant ouvrir notre projet Blender dans la branche Blender personnalisée. Si nous appuyons ensuite sur N et allons sur le côté droit ici, nous obtenons l’extension Nucleus qui nous permet d’exporter cela en tant que fichier USD.
Si nous allons ensuite dans USD Composer et ouvrons ce fichier USD, nous obtenons une sorte de lien en direct entre les applications. Je peux maintenant apporter n’importe quelle modification au maillage, le réexporter et faire en sorte que cela soit automatiquement pris en charge dans USD Composer.
Ça devient encore mieux ! Une fois que nous avons importé le modèle, nous pouvons ouvrir Substance Painter, activer le connecteur Omniverse et aller dans Importer le maillage pour importer automatiquement notre objet d’USD Composer dans Substance. À ce stade, si nous apportons des modifications dans Blender, nous pouvons toujours réexporter et reprendre cela dans USD Composer, qui se relie automatiquement à Substance Painter.
Cependant, une fois que nous ajoutons des textures dans Substance Painter, refaire cela supprimera ces textures. Donc, une fois que vous êtes satisfait, ajoutez vos matériaux dans Substance Painter, et avec Life Link activé, ceux-ci apparaîtront automatiquement dans USD Composer.
Toutes les modifications que vous apportez ensuite sont automatiquement exportées et mises à jour dans USD Composer. Vraiment, vraiment cool !
Pour moi, ce workflow est à peu près époustouflant. Être capable d’apporter des modifications dans Blender et Substance Painter en temps réel et de faire en sorte que tout cela fonctionne automatiquement en aval et se reflète dans le rendu final est quelque chose d’autre.
Si vous êtes intéressé à essayer tout ce que Nvidia Omniverse a à offrir, vous pouvez le télécharger gratuitement via le lien dans la description. Et si vous voulez en savoir plus sur tous les cas d’utilisation techniques que USD et Omniverse offrent ensemble, vous pouvez trouver un autre lien de téléchargement gratuit pour cela ainsi qu’un lien pour assister aux séances de la journée USD ouverte virtuellement ou en personne au GTC en mars.
Je vous recommande vraiment de vérifier cela parce que c’est vraiment l’avenir des workflows 3D.
Plus sur USD
Outre cet exemple amusant, USD a beaucoup plus à offrir. Et si vous faites bon usage de ses capacités, vous deviendrez beaucoup plus efficace en tant qu’artiste. Alors, que peut-il faire d’autre ?
Eh bien, outre le fait qu’un format de fichier universel vous faciliterait beaucoup la vie, c’est absolument l’avenir. Depuis août 2023, USD est devenu une organisation officielle à but non lucratif appelée The Alliance of Open USD (AO USD) pour faire court, avec Pixar, Apple, Adobe, Autodesk et Nvidia comme membres fondateurs.
Je pense que cela montre vraiment à quel point ces entreprises sont investies et comment elles voient vraiment cela comme l’avenir d’un format de fichier interopérable, que tout le monde devrait pouvoir utiliser très facilement.
Outre le fait d’être un format de fichier, USD stocke presque tout (des lumières et des caméras aux caches de simulation et aux données de scène) dans une structure en couches appelée « prims » (abréviation de primitives). Il contient toutes ces données pour décrire des scènes et des éléments complexes dans un format lisible par un large éventail d’applications.
Maintenant que vous savez cela, le nom « Universal Scene Description » prend tout son sens !
Si vous connaissez les collections Blender, USD fonctionne de la même manière. Vous pouvez imbriquer n’importe quoi à l’intérieur de plusieurs collections imbriquées, avec l’avantage supplémentaire que USD traite toutes ces couches comme des instances. Par conséquent, il est capable de charger et de lire très rapidement toutes les données de manière optimisée.
Cela fonctionne de la même manière que les collections d’instanciation dans Blender, ce qui est bien parce que les instances nécessitent moins de calcul que les objets dupliqués réels. C’est également très similaire au pré-composition dans After Effects ou à la composition dans Nuke : vous regroupez essentiellement des éléments à l’intérieur de groupes/couches imbriqués, ce qui permet à l’ordinateur de travailler plus facilement et plus rapidement avec le fichier.
Un excellent exemple de cette optimisation est le plus récent projet d’échantillons USD de Nvidia appelé « L’atelier de Da Vinci ». En utilisant leur application USD Composer (qui est parfaite pour visualiser des projets USD avec un éclairage en temps réel), je peux lire cette bibliothèque massive de 67 Go d’éléments, de textures et de lumières avec des millions de polygones à près de 120 FPS sans aucun décalage ou problème. Ceci est possible grâce à la façon dont USD charge efficacement les fichiers et les textures d’une manière extrêmement optimisée.
De même, pour les animations qui étaient auparavant exportées en tant que fichiers Alembic, la mise en cache USD est maintenant beaucoup plus rapide. Les fichiers Alembic sont généralement énormes, très peu optimisés et lus lentement par votre ordinateur, ce qui se traduit généralement par une lecture saccadée. Avec USD, atteindre un FPS stable n’est pas du tout un problème et la taille du fichier est beaucoup plus petite.
Plus d’avantages
Une autre fonctionnalité vraiment intéressante est que vous pouvez accéder aux couches à l’intérieur de votre projet USD de l’extérieur du fichier assez facilement. Par exemple, s’il y a une couche prim contenant les données indiquant qu’une sphère est verte à l’intérieur d’un fichier USD, en changeant simplement cette couleur en rouge dans un éditeur compatible avec USD comme USD Composer, nous pouvons changer la couleur de la sphère sans jamais ouvrir le fichier dans Blender ! C’est incroyablement puissant.
Bien que ce soit évidemment un exemple de base, il montre le potentiel. Un autre avantage majeur est que USD vous permet toujours de ne travailler que sur une seule couche d’un fichier complexe dans un certain logiciel. Ainsi, même si votre fichier contient un projet complet avec des caméras, des lumières, etc., vous êtes toujours en mesure d’ouvrir uniquement une partie de celui-ci (par exemple, un seul modèle) à l’intérieur de Substance Painter, et de travailler uniquement sur cette partie du projet sans affecter quoi que ce soit d’autre.
Cela vaut également si plusieurs personnes travaillent sur le même fichier, ce qui est une autre force majeure d’USD. Dix personnes pourraient travailler sur le même fichier de sorte que les modifications apportées par l’artiste numéro un soient immédiatement visibles par l’artiste numéro deux, ce qui leur permet d’adapter leur travail en conséquence. Être capable de collaborer avec des personnes à distance est incroyablement puissant.
L’avenir des pipelines 3D
On peut dire sans risque de se tromper qu’USD est bien plus qu’un simple format de fichier. Il s’agit d’une plateforme technologique et d’un écosystème complet qui, dans sa mission, s’aligne vraiment sur Blender : la liberté de créer sans limites.
USD est toujours en cours de développement. Le rêve est réel : un format de fichier logiciel universel utilisable par n’importe quel logiciel de l’industrie, modifiable en temps réel par plusieurs artistes.
Nous devrions tous être reconnaissants à Pixar d’avoir ouvert la voie avec ce développement incroyable, et à des entreprises comme Nvidia et Apple d’avoir apporté leur contribution.