NVIDIA publicó nanousd-labs, un proyecto experimental dentro de Omniverse Labs que propone una forma distinta de construir implementaciones de USD: en lugar de adaptar una gran base de código existente, usa agentes de IA para generar runtimes ligeros y conformes al estándar directamente desde la USD Core Specification. El proyecto nació en un hackathon interno de la compañía.

OpenUSD es un marco abierto y extensible que ofrece un lenguaje común de descripción de escenas para la IA física. Permite reunir datos de CAD, activos de simulación y telemetría del mundo real en una vista compartida y físicamente precisa. Hasta ahora, construir una implementación de USD solía exigir adaptar una base de código grande, incluso para equipos que solo necesitaban una huella de memoria específica, una interfaz binaria (ABI) distinta o características de rendimiento particulares.

¿Cómo construyen los agentes a partir de la especificación?

La metodología descansa en una sola idea: tratar la USD Core Specification como el contrato. La especificación, desarrollada por la Alliance for OpenUSD (AOUSD), es un estándar versionado y legible por máquina que define el comportamiento que un runtime conforme debe producir, no cómo se construye.

Bajo la dirección de un desarrollador, los agentes consumen la especificación sección por sección, generan el código que implementa cada comportamiento y lo ejecutan contra una suite de pruebas derivada del mismo estándar, iterando hasta que la salida cumple los requisitos. Como la implementación se genera contra la especificación, la conformidad queda incorporada a la metodología y no atada a una implementación puntual. La meta es que el runtime pueda regenerarse para distintas restricciones (memoria, rendimiento o lenguaje) sin perder conformidad.

El enfoque tiene límites claros. No significa generación totalmente automática ni cobertura completa de la especificación hoy. En la construcción de nanousd-labs, los agentes se encargaron del trabajo mecánico de especificación a código, incluido el parseo, la composición de escenas y la resolución de valores entre capas, mientras los ingenieros conservaron las decisiones de arquitectura y los compromisos de rendimiento.

Figura 1. Un entorno de bodega que representa un despliegue de IA física que exige runtimes USD ajustados a requisitos específicos de rendimiento, memoria y ABI
Figura 1. Un entorno de bodega que representa un despliegue de IA física que exige runtimes USD ajustados a requisitos específicos de rendimiento, memoria y ABI

¿Qué es nanousd?

nanousd es una implementación independiente del modelo de datos del runtime de USD, derivada directamente de la especificación y expuesta a través de una C ABI estable. Está escrita en C++ con una API en C pública que cualquier lenguaje puede invocar. Es una capa de datos, no un motor de render: parsea, compone, consulta y escribe, y se detiene justo donde empiezan los píxeles. Los stacks OpenUSD existentes siguen funcionando sin cambios.

La especificación define qué debe hacer un runtime y deja abiertas las decisiones de memoria, hilos, ABI y lenguaje. El código cliente compila contra una API en C fija y carga su implementación en tiempo de ejecución, de modo que el backend puede cambiarse (OpenUSD bajo una librería de Omniverse, o nanousd en su lugar) sin tocar el código que llama.

Figura 2. La USD Core Specification ofrece una base compartida para las herramientas OpenUSD existentes y las nuevas implementaciones generadas por agentes, incluidas nanousd, sus bindings de Python y visores
Figura 2. La USD Core Specification ofrece una base compartida para las herramientas OpenUSD existentes y las nuevas implementaciones generadas por agentes, incluidas nanousd, sus bindings de Python y visores

Dos maneras de empezar

Los desarrolladores que arman pipelines de IA física y necesitan un runtime USD liviano y a medida tienen dos puntos de entrada. El primero es clonar y compilar nanousd directamente, una implementación con API en C lista para apuntar a escenas USD existentes. La mayoría partirá por nanousd-python, el paquete construido sobre la API en C, que no requiere GPU y corre de forma headless en cualquier máquina:

Código
python -m pip install -e ./nanousd-python

Abrir una escena y recorrer sus prims (los elementos individuales que componen una escena USD) se ve así:

Código
import nanousd

stage = nanousd.Stage.open("scene.usda")

for prim in stage.traverse():
    print(prim.path, prim.type_name, prim.attribute_names())

El segundo punto de entrada apunta a equipos que quieren entender la metodología y aplicarla a su propio stack, dirigiendo agentes anclados en la USD Core Specification para generar y validar el código.