USD (Universal Scene Description, Descripción Universal de Escenas) es un formato de archivo desarrollado por Pixar para el intercambio de escenas de gráficos 3D entre aplicaciones de creación de contenido digital. Es un formato de archivo de código abierto extensible que puede almacenar información sobre geometría 3D, sombreado, iluminación, física y otros dominios relacionados con los gráficos. También puede componer y anular datos de múltiples fuentes, creando un único grafo de escena que se puede editar de forma no destructiva.
USD se utiliza en muchas industrias, como el diseño, la arquitectura, la animación y los videojuegos, y es compatible con muchas aplicaciones de software, como Blender, Cinema 4D, Houdini, Maya y SceneKit de Apple. USD es también el núcleo del flujo de trabajo de gráficos 3D de Pixar y la base de la plataforma Omniverse de Nvidia.
La especificación Universal Scene Description (USD) utiliza varios formatos de archivo:
- .usd: puede tener codificación ASCII o binaria
- .usda: codificación ASCII
- .usdc: codificación binaria
- .usdz: un archivo de paquete con formato de archivo zip sin cifrar y con compresión cero. Puede contener archivos .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 y .wav.
Blender (o cualquier otro software 3D) te facilita la vida al permitirte realizar muchas tareas utilizando solo su interfaz, pero una vez que empiezas a introducir otro software en tu flujo de trabajo, los problemas empiezan a surgir por todas partes. Así que vamos a hablar de los mayores problemas con los que probablemente ya te estés encontrando hoy en día y de cómo Pixar ha creado la solución para superarlos hasta el infinito y más allá.
El problema
Si alguna vez has texturizado un modelo en Substance, has importado tu trabajo en Unreal o has intentado compartir un proyecto con alguien que trabaja con un software diferente, probablemente te hayas dado cuenta de lo molesto que puede ser. Tener que lidiar con diferentes tipos de archivos, flujos de trabajo de exportación adecuados para cada software individual y la pérdida de datos valiosos en el proceso puede hacer que sientas que te estás golpeando la cabeza contra la pared a propósito repetidamente.
Y créeme cuando te digo que esto es algo que todos los artistas 3D de todo el mundo experimentan, ya sea que estés trabajando como creador en solitario con tu propio flujo de trabajo personalizado o en un gran estudio como Pixar teniendo que ajustarte a las rigurosas restricciones del flujo de trabajo para mantener un flujo de trabajo adecuado para las otras 1232 personas que trabajan allí. El problema sigue siendo el mismo.
Por qué sucede esto
Pero tiene sentido, ¿verdad? Cada software utiliza un tipo de archivo propietario que funciona para sus necesidades. Así que un archivo de Blender, por ejemplo, ha sido codificado para funcionar en Blender pero no en Substance. Obviamente, en una empresa, cada artista necesita que un archivo sea compatible con su propia herramienta preferida para que sea fácil y a veces incluso posible continuar trabajando en un proyecto.
Esta es la razón por la que tener que exportar a un tipo de archivo más universal como FBX u OBJ es imprescindible cuando se cambia a un software diferente o se entrega tu proyecto a la siguiente persona. Pero incluso estos tipos de archivos tienen muchas limitaciones, como la imposibilidad de almacenar correctamente simulaciones, iluminación y muchos otros aspectos de tus proyectos de Blender.
Presentación de USD
Entonces, ¿cuál es la respuesta a este problema? ¡Universal Scene Description (USD) para abreviar! Publicado por primera vez como software de código abierto por Pixar en 2016 como su nuevo flujo de trabajo principal, USD fue principalmente una forma para que sus artistas facilitaran el movimiento de datos entre sí y las herramientas que utilizan.
Desde su lanzamiento, USD está en constante cambio y mejora, lo cual es común para el software de código abierto al igual que Blender, que también se actualiza y amplía constantemente.
¿Qué es USD?
USD es muchas cosas y, si profundizo en ello, en realidad puede ser algo muy técnico y complicado de describir. Pero si lo digo de forma sencilla, USD es una forma de que aplicaciones como Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse y muchas más hablen y se entiendan entre sí.
Dentro de la industria informática, en realidad hay una palabra elegante para esto: interoperabilidad. ¡Un poco difícil de decir! Sin embargo, por muy elegante que suene, en realidad no es tan complicado como podrías pensar. Puedes empezar a usarlo hoy mismo en tu propio ordenador o incluso con varios amigos o colegas de todo el mundo.
En qué se diferencia USD
Tradicionalmente, un flujo de trabajo es algo muy unidireccional en el que cada persona solo puede trabajar en algo una vez que la persona anterior ha terminado. O, para ti personalmente, solo puedes pasar al siguiente paso del proceso, como la texturización, si el modelado está completamente terminado.
Podrías comparar esto con hornear un pastel: a medida que construyes y creas este pastel, tienes que terminar cada paso antes de poder empezar el siguiente. No puedes hornear el pastel antes de mezclar la masa, y no puedes construirlo antes de hornear los bizcochos en el horno. Cada paso depende de que el anterior esté terminado.
Más importante aún, una vez que le pones el glaseado y el relleno o decides que el bizcocho necesita ser de chocolate, no hay vuelta atrás. No puedes deshornear el pastel, cambiar el sabor a vainilla o quitar el glaseado. Y esto es lo que llamamos un flujo de trabajo destructivo.
Sin embargo, USD es más como Legos. Cada bloque representa una parte de una escena 3D (personajes, objetos, entornos, lo que sea) y puedes montar, desmontar y modificar estos bloques de forma independiente.
En un flujo de trabajo tradicional, cambiar un bloque implicaría tener que ajustar el resto de la estructura. Pero con USD se puede trabajar en cada bloque de construcción de forma independiente y puedo simplemente cambiar un bloque a un color diferente, por ejemplo, sin necesidad de reconstruir todo el modelo.
Es un enfoque no destructivo que permite la experimentación y los flujos de trabajo colaborativos sin verse obstaculizado por las limitaciones del flujo de trabajo.
El objetivo de USD
El objetivo de todo esto con USD es crear una forma para que los datos se muevan libremente entre las aplicaciones, para dar a los artistas y a los equipos la libertad de centrarse en la creación y no en la exportación y en quedarse atascados esperando a que los demás puedan seguir trabajando. Los artistas no deberían tener que empezar de nuevo si el equipo de concepto decide cambiar las cosas más adelante. Y no debería haber problemas con los formatos de archivo procedentes de otros programas que no funcionan en tu software preferido.
A nivel de servicio, eso es lo que parece ser USD: un formato de archivo altamente interoperable que se puede intercambiar fácilmente entre diferentes softwares. Y para ser justos, esto es lo que será para la mayoría de los usuarios de Blender, ya que muchos de nosotros tendemos a trabajar en solitario. Pero USD es más que un simple tipo de archivo…
Es una forma de ensamblar y organizar cualquier número de activos en conjuntos virtuales, escenas, tomas y mundos, utilizándolos de una aplicación a otra y editándolos de forma no destructiva, a menudo en tiempo real.
Cómo trabajar con USD
Así que veamos cómo podemos trabajar con USD en un flujo de trabajo de Blender. En su forma más básica, USD ha sido una opción de exportación en Blender desde la versión 3.6. Así que si tienes un archivo en el que estás trabajando y quieres guardarlo como un archivo USD, puedes ir a Archivo > Exportar > Universal Scene Description y te dará una ventana emergente para guardar el archivo.
Tiene bastantes opciones, pero las principales a tener en cuenta son:
- Solo selección: solo incluirá los objetos seleccionados en la exportación
- Animación y pelo: incluirá/excluirá los datos de animación y de partículas de pelo para tus objetos
Aquí tienes un gran ejemplo de cómo funciona USD. Este es un archivo de la biblioteca de muestras USD de Nvidia que se hizo en una serie de softwares como 3ds Max y Substance. Si lo abres en Blender importándolo, ¡funciona casi al 100 % de inmediato!
Como puedes ver, contiene todos los datos, incluyendo luces, profundidad de campo, la cámara, materiales y mucho más. Lo único que no se exporta correctamente es la iluminación HDRI, que tenemos que configurar nosotros mismos. Pero es increíble pensar que esto se ve casi idéntico dentro del renderizador Arnold de 3DS Max, ¡y simplemente se exportó a Blender y funciona igual de bien utilizando un solo tipo de archivo!
Tiene la jerarquía correcta, los materiales y básicamente todo está configurado. ¡Es realmente genial! De todos modos, esto demuestra cómo funciona USD entre diferentes aplicaciones y que funciona como un formato de archivo interoperable.
Un ejemplo práctico de USD
Pero echemos un vistazo a un ejemplo más práctico. Para este ejemplo de flujo de trabajo voy a utilizar un flujo de trabajo típico de uso de Blender para modelar un objeto para un juego.
El flujo de trabajo tradicional sería algo así:
- Crear modelo en Blender
- Desempaquetar UV del modelo
- Exportar como FBX ya que Painter no puede usar archivos de Blender
- Importar FBX en Substance Painter
- Añadir materiales en Substance
- Exportar texturas como imágenes
- Importar FBX en el motor del juego
- Configurar las texturas manualmente
- Crear renders
Con USD podemos simplificar significativamente este proceso y mantener un flujo de trabajo no destructivo en gran medida. El flujo de trabajo sigue siendo muy similar, siendo Blender y Substance los componentes principales.
Pero como USD no funciona de forma nativa en tiempo real entre estas aplicaciones (principalmente porque Blender todavía tiene un soporte limitado de USD), voy a utilizar Nvidia Omniverse para crear esa conexión para nosotros.
A través de Omniverse puedo acceder a una rama de Blender más compatible con USD construida por Nvidia. Puedo activar el conector de Omniverse para Substance Painter para realizar el LifeLink. Y puedo usar USD Composer para cerrar la brecha entre las aplicaciones y ver el producto final.
Con eso configurado, ahora podemos abrir nuestro proyecto de Blender en la rama personalizada de Blender. Si pulsamos N y vamos al lado derecho aquí, obtenemos el complemento Nucleus que nos permite exportar esto como un archivo USD.
Si luego vamos a USD Composer y abrimos ese archivo USD obtenemos una especie de enlace en vivo entre las aplicaciones. Ahora puedo hacer cualquier cambio en la malla, volver a exportarla y hacer que se recoja automáticamente dentro de USD Composer.
¡Aún hay más! Una vez que importamos el modelo, podemos abrir Substance Painter, activar el conector de Omniverse e ir a Importar malla para importar automáticamente nuestro objeto desde USD Composer a Substance. En este punto, si hacemos cambios en Blender, podemos volver a exportar y recogerlos en USD Composer, que se vincula automáticamente a Substance Painter.
Sin embargo, una vez que añadimos texturas dentro de Substance Painter, hacer esto de nuevo eliminará esas texturas. Así que una vez que estés contento, añade tus materiales en Substance Painter, y con el Life Link activado, estos aparecerán automáticamente en USD Composer.
Cualquier cambio que hagas entonces se exporta y se actualiza automáticamente en USD Composer. ¡Realmente genial!
Para mí, este flujo de trabajo es alucinante. Ser capaz de hacer cambios en Blender y Substance Painter en tiempo real y que todo eso funcione automáticamente en el futuro y se refleje en el render final es otra cosa.
Si estás interesado en probar todo lo que Nvidia Omniverse tiene que ofrecer, puedes descargarlo gratis a través del enlace en la descripción. Y si quieres aprender más sobre todos los casos de uso técnico que USD y Omniverse juntos proporcionan, puedes encontrar otro enlace de descarga gratuita para eso, así como un enlace para asistir a las sesiones de USD Day abiertas virtualmente o en persona en GTC en marzo.
Realmente recomiendo echarle un vistazo porque este es verdaderamente el futuro de los flujos de trabajo 3D.
Más sobre USD
Además de este divertido ejemplo, USD tiene mucho más que ofrecer. Y si haces un buen uso de sus capacidades te volverás mucho más eficiente como artista. Entonces, ¿qué más puede hacer?
Bueno, además del hecho de que un formato de archivo universal te haría la vida mucho más fácil, es absolutamente el futuro. Desde agosto de 2023, USD se ha convertido en una organización oficial sin ánimo de lucro llamada The Alliance of Open USD (AO USD) para abreviar, con Pixar, Apple, Adobe, Autodesk y Nvidia como miembros fundadores.
Creo que esto realmente demuestra lo invertidas que están estas empresas y cómo realmente ven esto como el futuro de un formato de archivo interoperable, que todo el mundo debería ser capaz de usar muy fácilmente.
Además de ser un formato de archivo, USD almacena casi todo (desde luces y cámaras hasta cachés de simulación y datos de escena) en una estructura tipo capa llamada «prims» (abreviatura de primitives, primitivas). Contiene todos esos datos para describir escenas y activos complejos en un formato legible por una amplia gama de aplicaciones.
Ahora que lo sabes, ¡el nombre «Universal Scene Description» tiene mucho sentido!
Si estás familiarizado con las colecciones de Blender, USD funciona de forma similar. Puedes anidar cualquier cosa dentro de múltiples colecciones anidadas, con el beneficio añadido de que USD trata todas estas capas como instancias. Por lo tanto, es capaz de cargar y leer muy rápidamente todos los datos de una manera optimizada.
Esto funciona de forma similar a la creación de instancias de colecciones en Blender, lo cual es bueno porque las instancias requieren menos computación que los objetos duplicados reales. También es muy similar a la precomposición en After Effects o la composición en Nuke: básicamente se agrupan cosas dentro de grupos/capas anidados, lo que hace que sea más fácil y rápido para el ordenador trabajar con el archivo.
Un gran ejemplo de esta optimización es el proyecto de muestra USD más reciente de Nvidia llamado «Da Vinci’s Workshop». Usando su aplicación USD Composer (que es perfecta para ver proyectos USD con iluminación en tiempo real), puedo reproducir esta enorme biblioteca de 67 GB de activos, texturas y luces con millones de polígonos a cerca de 120 FPS sin ningún tipo de retraso o problemas. Esto es posible debido a la eficiencia con la que USD carga los archivos y las texturas de una manera extremadamente optimizada.
Del mismo modo, para las animaciones que solían exportarse como archivos Alembic, el almacenamiento en caché de USD es ahora mucho más rápido. Los archivos Alembic suelen ser enormes, muy poco optimizados y leídos lentamente por tu ordenador, lo que suele resultar en una reproducción entrecortada. Con USD, lograr un FPS constante no es ningún problema y el tamaño del archivo es mucho menor.
Más beneficios
Otra característica realmente interesante es que puedes acceder a las capas dentro de tu proyecto USD desde fuera del archivo con bastante facilidad. Por ejemplo, si hay una capa primitiva que contiene los datos de que una esfera es verde dentro de un archivo USD, simplemente cambiando ese color a rojo en un editor compatible con USD como USD Composer, ¡podemos cambiar el color de la esfera sin necesidad de abrir el archivo en Blender! Eso es increíblemente poderoso.
Aunque obviamente es un ejemplo básico, muestra el potencial. Otro beneficio importante es que USD todavía te permite trabajar solo en una sola capa de un archivo complejo en un determinado software. Así que incluso si tu archivo contiene un proyecto completo con cámaras, luces, etc., todavía puedes abrir solo una parte de él, por ejemplo, un solo modelo, dentro de Substance Painter, y trabajar solo en esa parte del proyecto sin afectar a nada más.
Esto también se aplica si varias personas están trabajando en el mismo archivo, otra de las principales fortalezas de USD. Diez personas podrían trabajar en el mismo archivo, por lo que los cambios realizados por el artista número uno son inmediatamente visibles para el artista número dos, lo que les permite adaptar su trabajo en consecuencia. Ser capaz de colaborar con personas de forma remota es increíblemente poderoso.
El futuro de los flujos de trabajo 3D
Es seguro decir que USD es mucho más que un simple formato de archivo. Es una plataforma tecnológica integral y un ecosistema que en su misión realmente se alinea con Blender: la libertad de crear sin limitaciones.
USD todavía está en desarrollo. El sueño es real: un formato de archivo de software universal utilizable por cualquier software de la industria, editable en tiempo real por múltiples artistas.
Todos deberíamos estar agradecidos a Pixar por allanar el camino con este increíble desarrollo, y a empresas como Nvidia y Apple por aportar su parte.