USD Universal Scene Description de Pixar

USD Universal Scene Description de Pixar, últimamente suena mucho eso del USD, pero, ¿Qué es y para qué sirve este formato de Pixar?

Las canalizaciones capaces de producir películas gráficas por computadora y juegos normalmente generan, almacenan y transmiten grandes cantidades de datos 3D. A esos datos los llamamos descripción de escena.

Cada una de las muchas aplicaciones de cooperación en la canalización como el modelado, sombreado, animación, iluminación, FX y renderizado. Normalmente tiene su propia forma especial de descripción de escena adaptada a las necesidades específicas y flujos de trabajo de la aplicación. No siendo legible ni editable por ninguna otra aplicación.

Universal Scene Description (USD) es el primer software disponible públicamente que aborda la necesidad de intercambiar y aumentar de forma robusta y escalable en escenas 3D arbitrarias que pueden estar compuestas de muchos activos elementales.

USD Universal Scene Description de Pixar.
USD Universal Scene Description de Pixar.

Ensamblado de conjuntos virtuales

Pero a diferencia de otros paquetes de intercambio, USD también permite el ensamblado y la organización de cualquier número de activos de conjuntos virtuales. No solo eso, si no también transmitirlos de aplicación en aplicación y editarlos de forma no destructiva. Como se tratan las invalidaciones, con una única API coherente, en un único gráfico de escena.

USD proporciona un conjunto de herramientas enriquecido para leer, escribir, editar y previsualizar rápidamente la geometría 3D y el sombreado.

Además, debido a que el escenografía principal de USD y el motor de composición son agnósticos de 3D, USD se puede extender de una manera sostenible para codificar y componer datos en otros dominios.

Concretamente, USD es un proyecto de Open Source lanzado bajo una licencia Apache modificada.

¿Por qué trabajar con USD?

USD es el núcleo de la canalización de gráficos 3D de Pixar, utilizada en cada aplicación de creación y renderizado 3D, incluido el sistema de animación Presto patentado de Pixar.

Pixar está profundamente comprometido con la evolución y la mejora de los USD para abordar los siguientes problemas de producción en :

Proporcionar un lenguaje rico y común para definir, empaquetar, ensamblar y editar datos 3D, facilitando el uso de múltiples aplicaciones de creación de contenido digital.

USD proporciona un modelo de datos de bajo nivel que estipula, en un nivel de formato de archivo, cómo se codifican y organizan los datos. Además de un conjunto (extensible) de esquemas de alto nivel que proporcionan API y organización significativas para conceptos como una malla o una transformación.

USD Universal Scene Description de Pixar.
USD Universal Scene Description de Pixar.

Con tal base se puede crear geometría y cachés de sombreado

Pero USD va más allá proporcionando un conjunto que combina la composición. Posteriormente podemos utilizar para empaquetar, agregar, variar y reemplazar elementos y activos primitivos. Con un motor de evaluación de tiempo de ejecución de alto rendimiento, incorporado en un gráfico de escena compacto conocido como un escenario, para resolver la resultante de la descripción de escena compuesta y extraer (y crear) datos de él.

Permite que varios artistas colaboren en los mismos activos y escenas.

El arco de composición más básico de USD, el operador subLayers, facilita a múltiples artistas en diferentes departamentos. También dentro del mismo departamento, trabajar simultáneamente en el mismo activo o escena.

Esto permite que cada artista trabaje en su propio archivo (llamado capa), todos los cuales se combinarán y resolverán en un orden de fuerza claramente especificado en los propios archivos USD.

Esta capacidad no puede ajustar automáticamente los datos de sombreado de una capa compleja a una sencilla. Cuando el artista de modelado cambia la topología de geometría definida en una capa más débil. Pero permite a cada artista trabajar de forma independiente sin borrar o editar el trabajo de cualquier otro artista. Y ayuda a proporcionar un rastro de auditoría clara de los cambios que ayuda a abordar problemas como el problema de topología cambiante.

Maximice la iteración artística minimizando la latencia

Como en muchos medios, uno de los ingredientes más importantes para lograr arte digital de alta calidad es la capacidad de iterar rápidamente y a menudo en un diseño, un activo, una animación.

Uno de los impedimentos más destacados para la iteración en el arte 3D es la velocidad con la que un artista puede obtener retroalimentación visual suficientemente buena sobre los resultados de sus ediciones. Y la velocidad con la que puede migrar nuevos datos entre múltiples aplicaciones, o restaurar una sesión que se ha estrellado.

La velocidad es un objetivo principal y continuo del proyecto USD en Pixar. Continuamos explorando mejoras algorítmicas, mejores maneras de aprovechar los sistemas modernos multinúcleo y GPU, y técnicas de compresión para minimizar la latencia en el acceso a archivos en red.

Si sus necesidades son similares o son un subconjunto de lo anterior, entonces USD puede ser una opción atractiva.

USD Universal Scene Description de Pixar.
USD Universal Scene Description de Pixar.

¿Qué puede hacer USD?

USD organiza los datos en espacios de nombres jerárquicos de Prims (abreviatura de primitivo). Además de los Prims secundarios, cada Prim puede contener atributos y relaciones, conocidos colectivamente como Propiedades.

Los atributos tienen valores con tipo que pueden variar con el tiempo. Las relaciones son punteros de varios destinos a otros objetos de una jerarquía y USD se encarga de reasignar los destinos automáticamente cuando hacer referencia hace que los espacios de nombres cambien.

Tanto Prims como properties también pueden tener metadatos (que no varían en el tiempo).

Prims y su contenido se organizan en una abstracción de archivos conocida como Capa.

Construido sobre esta descripción de escena genérica de bajo nivel, USD proporciona un conjunto de esquemas que establecen una codificación estándar y una API de cliente para conceptos comunes de 3D CG como:

La geometría

Los esquemas UsdGeom definen mallas , transformaciones, curvas, puntos, parches Nurbs y varios sólidos intrínsecos (OpenSubdiv- compatible).

También define: el concepto de primvares arbitrarios como atributos que pueden interpolar a través de una superficie geométrica, extensiones geométricas y cajas delimitadoras calculadas, visibilidad de la poda. Y un atributo denominado propósito que expresa una visibilidad condicional (no animable) útil para implementar funciones y guías de nivel de detalle.

Sombreado. Los esquemas UsdShade definen nodos de sombreador primitivos que se pueden conectar en redes y empaquetarse en materiales. Posteriormente se puede crear una interfaz pública de atributos que impulsarán los parámetros en las redes de sombreador independientes.

Aunque los esquemas UsdShade se utilizan en los complementos USD para transmitir el sombreado de RenderMan de Maya a Katana, tenga en cuenta que estos esquemas están en flujo hasta la versión de 1.0 USD.

Modelo y activo USD

Los operadores de composición de USD le permiten construir escenas arbitrariamente grandes y complejas. Como ayuda para procesar, analizar y descomponer tales escenas, USD formaliza los conceptos de modelo y activo.

La clasificación de Prim «modelo» permite dividir los escenografías en fragmentos lógicos y manejables para el recorrido, la administración de conjuntos de trabajo y la combinación/almacenamiento en caché de datos.

El concepto de activo aparece en USD en dos niveles: como un tipo de datos básico para referirse inequívocamente a un archivo externo. Archivo que identifica qué datos deben participar en la resolución de activos/rutas, y en el esquema AssetInfo. Así deposita un registro de los activos a los que se ha hecho referencia en una escena, que sobrevive incluso si la escena se aplana.

USD puede componer y anular

La siguiente es una descripción muy compacta de la semántica de composición de USD, con enlaces precisos a descripciones más detalladas. También puede leer una descripción más larga, más gráfica y pausada.

Puede apilar capas USD juntas utilizando el arco de composición de subCapas, y el motor de composición resolverá los datos contenidos en tales capas ordenadas (anidados) «Layer Stacks» de forma similar a cómo se componen las capas en Photoshop.

Cualquier Prim de una capa también puede contener uno o más arcos de composición de referencias que tienen como destino un Prim en otra capa, o la misma, y compone el árbol en el Prim de destino en el Prim de referencia, esta es la forma principal de ensamblar activos elementales en agregados y escenas completas.

El arco de carga útil proporciona una referencia diferida que se puede cargar selectivamente (o descargar) desde un escenario después abrir la etapa. El uso de las cargas útiles permite estructurar escenas que los clientes pueden administrar fácilmente como conjuntos de trabajo. Manteniendo en la memoria sólo las partes de la escena que necesitan para la tarea en cuestión.

VariantSets agrupa variantes de activos

VariantSets permite a un creador de activos agrupar diferentes variaciones de un activo en un solo paquete con un selector de variantes que los consumidores de activos descendentes pueden cambiar, de forma no destructiva, en capas más fuertes para cambiar la variación que desean. Cualquier Prim puede definir varios VariantSets, que pueden variar a lo largo de ejes dependientes o independientes.

Por último, hereda y especializa arcos de composición que establecen una relación persistente (a través de más lejos, arcos de composición aguas arriba) entre un Prim base y un Prim derivado. De modo que el Prim derivado recibe todas las invalidaciones aplicadas a la base Prim en cualquier parte de la composición.

La diferencia técnica entre hereda y especializada radica en los detalles de cuando las opiniones derivadas ganan sobre las opiniones de la base. Pero prácticamente la diferencia es que puede utilizar hereda para editar fácilmente todas las instancias de una clase particular de Prim o activo. Y puede utilizar la especialización para crear un derivado que siempre es un refinamiento especializado de base en todas las vistas de su escena.

USD es genérico y predecible

El aspecto más potente y unificador de la semántica de composición de USD es que todos los operadores anteriores se pueden aplicar a cualquier Prim, en cualquier combinación, y el motor de composición resolverá el gráfico resultante de una manera predecible.

La otra propiedad deseable que se cae de este tratamiento uniforme de los arcos de composición es que las capas más fuertes de una composición pueden invalidar la descripción de la escena en capas más débiles de forma uniforme, independientemente de si las capas más débiles fueron sub-capa, referenciadas, heredadas, etc. Una capa más fuerte puede anular lo siguiente con respecto a las capas más débiles:

  • Añadir nuevos Prims incluyendo subárboles enteros arraigados en el Prim añadido
  • Desactivar Prims, que es el método de USD para la eliminación no destructiva (y reversible) de Prim/subárbol
  • Reordenar Prims, ya que en algunos contextos, el orden de espacios de nombres puede ser significativo
  • Agregar o quitar variantes a un VariantSet existente
  • Agregar o quitar VariantSets completos o destinos para heredar o especializarse
  • Reemplazar el valor de los metadatos de esquema y de nivel de usuario en un Prim o propiedad
  • Añadir nuevas propiedades a un Prim
  • Reordenar propiedades en un Prim. Si no se ordena explícitamente, las propiedades se enumeran en orden de diccionario
  • Invalidar el valor de cualquier atributo (un valor de invalidación bloquea todas las timeSamples más débiles)
  • Bloquear el valor de un atributo, de modo que parezca que no tiene ningún valor creado
  • Agregar, quitar y reordenar destinos en una relación

Datos codificables en formato USD

Por último, USD proporciona un puñado de características de nivel de tabla de escenas que pueden expandir en gran medida los tipos y la escala de conjuntos de datos codificables en USD.

Los dos más prominentes son native Prim Instancing para la codificación y procesado de forma muy compacta un gran número de instancias de un activo o Prim. Al que se hace referencia cuando las copias no necesitan ser editadas profundamente. Y Clips de valor, que permiten timeSamples para un conjunto de Prims que se dispersarán en muchos archivos, y secuenciado y reprogramado de forma no destructiva.

USD/Hydra

Hydra es el marco de imágenes que se envía como parte de la distribución de USD. Conecta varios front-ends (que consumen datos de escena) y varios back-ends (que envían los datos de la escena a los renderizadores).

Su primer y principal «back-end» es un renderizador OpenGL moderno, que es altamente escalable, multi-pass y utiliza OpenSubdiv para la representación de malla. La distribución también se incluye con un simple trazador de ruta basado en Embree para servir de ejemplo para crear más backend.

El front-end USD de Hydra se utiliza en usdview y los plugins de terceros incluidos con la distribución USD, y está destinado a proporcionar una representación de geometría de «verdad de tierra» de cualquier escena compuesta de Prims conformes a los esquemas UsdGeom.

También proporciona una vista previa rápida y transmisión de animación para escenas de USD.

USD se puede ampliar y/o personalizar

A pesar de que USD se utilizará principalmente como una sub-consulta integrado, la amplitud del espacio de problemas que cubre exige que sea extensible a lo largo de una serie de ejes. USD viene con su propio mecanismo de descubrimiento de plugins, y los siguientes puntos de plugin:

Resolución de activos. En una escena muy referenciada, puede ser ventajoso tener un grado de separación entre las rutas de activos registradas en los archivos USD. Y la ruta de archivo resuelta desde la que se cargará el activo en última instancia.

La interfaz ArResolver se puede personalizar por instalación de USD, lo que permite, por ejemplo, que se resuelvan las convenciones de nomenclatura específicas del sitio y que se aplique el control de control de versiones dinámico.

USD se suministra con una implementación de resolución predeterminada que permite una resolución de activos de estilo «searchpath» simple.

Formatos de archivo. Se puede hacer que una capa USD se rellene con datos traducidos de cualquier tipo de formato de archivo compatible, mediante la implementación de un complemento SdfFileFormat para el formato.

Los propios formatos nativos ASCII y binarios de USD se implementan de esta manera, al igual que el soporte incluido para leer archivos Alembic a través del complemento Alembic USD.

Esquemas USD

USD incluye una herramienta para generar nuevos esquemas (clases de C++, enlaces Python y todos los reutilizables necesarios) a partir de una simple descripción USD ASCII del esquema.

Esto se puede usar para agregar nuevos tipos de esquema de USD Prim y API a su canalización o paquete, con el que podrá interactuar en los complementos de nivel de aplicación como si fueran esquemas de USD nativos.

Para los esquemas con tipo que son conceptualmente perceptibles de convertirse en imágenes, también puede enseñar a Hydra cómo crear imágenes de ellos.

Más información y comentarios en el foro, sigue leyendo…