Uso de Python Para Automatizar Workflows 3D con OpenUSD

por Justine Lin

Universal Scene Description (OpenUSD) ofrece un ecosistema potente, abierto y extensible para describir, componer, simular y colaborar dentro de mundos 3D complejos. Desde el manejo de conjuntos de datos masivos y la automatización de workflows para gemelos digitales hasta la habilitación de la representación en tiempo real para juegos y la optimización de las operaciones industriales en manufactura y energía, está transformando la forma en que las industrias trabajan con datos 3D.

Las capacidades de secuencias de comandos y la facilidad de uso de Python lo convierten en el socio perfecto para OpenUSD, ya que ayuda a automatizar tareas y acelerar el desarrollo.

En esta publicación de blog, exploraremos la sinergia entre Python y USD y proporcionaremos recursos para ayudarlo a comenzar.

Por Qué Python Es Esencial Para OpenUSD

OpenUSD se implementa principalmente en C++, lo que proporciona un marco eficiente y de alto rendimiento para la manipulación de escenas 3D. La API de C++ se divide en varios paquetes de claves.

  • Base: Contiene módulos fundamentales que son independientes de la aplicación.
  • USD: incluye módulos para crear, leer y componer archivos USD. Define interfaces de complementos para extender y adaptar USD.
  • Imágenes: Alberga el renderizador de hardware Hydra y otros servicios de imágenes de bajo nivel.
  • USD Imaging: Conecta USD e Hydra, proporcionando adaptadores para una lectura y visualización de datos eficientes. Incluye herramientas como usdview para inspeccionar archivos USD.

Sin embargo, USD proporciona enlaces de Python para la mayoría de sus bibliotecas, lo que lo hace accesible para la creación rápida de prototipos, secuencias de comandos y automatización sin necesidad de experiencia en C++.

Base, Usd, Imaging, and UsdImaging Python bindings.
Figura 1. Los enlaces de Python para C++ facilitan la interacción entre Python y la biblioteca principal de C++ USD

Para optimizar los workflows de OpenUSD con Python, es importante comprender sus conceptos básicos. NVIDIA ofrece cursos gratuitos para que los desarrolladores mejoren sus habilidades de OpenUSD, que son esenciales para dominar la codificación de Python de USD y navegar por la API. Échales un vistazo en Learning OpenUSD: Foundations.

Fortalezas de Python: Creación Rápida de Prototipos, Integración de Herramientas y Manipulación de Escenas

Python se usa para la creación de prototipos porque es extremadamente flexible y no requiere compilación ni Makefiles. Permite al usuario concentrarse en sus tareas, como automatizar la creación de escenas, validar dinámicamente los activos y optimizar las escenas, sin atascarse en detalles de bajo nivel como la gestión de la memoria. Esto lo hace perfecto para los usuarios de OpenUSD que pueden no tener experiencia técnica pero que aún desean utilizar estas poderosas funciones.

Los siguientes son componentes de NVIDIA Omniverse, una plataforma de API, SDK y servicios que permiten a los desarrolladores integrar OpenUSD, tecnologías de renderizado NVIDIA RTX e IA física generativa en herramientas de software y workflows de simulación existentes.

  • SDK USD Exchange
    • El SDK USD Exchange acelera la adopción de OpenUSD al ayudar a los desarrolladores a diseñar, crear y probar sus propias soluciones de entrada y salida de USD. Proporciona funciones de conveniencia de nivel superior para crear etapas, establecer nombres para mostrar y más, para complementar los conceptos de USD de nivel inferior, lo que facilita la asignación de fuentes de datos nativas a OpenUSD y garantiza activos de USD consistentes y correctos en diversos ecosistemas 3D.
  • USD Asset Validator
    • El USD Asset Validator es una extensión de Omniverse que verifica la compatibilidad de los activos de OpenUSD mediante la validación basada en reglas. Puede validar diferentes componentes, como capas, etapas y primitivas individuales, proporcionando vectores de error detallados para ayudar a identificar y corregir problemas.
  • Scene Optimizer
    • El Scene Optimizer es un conjunto de herramientas que le permite reducir la memoria necesaria para desarrollar sus escenas y acelerar sus renderizados. Optimiza los materiales, la complejidad geométrica y aprovecha la creación de instancias, lo que permite una manipulación y representación más rápidas de la ventana gráfica.
  • OpenUSD Code Samples
    • Explora el repositorio de OpenUSD Code Samples en GitHub para obtener fragmentos de código útiles en Python, C++ y USD. Estos ejemplos cubren tareas y conceptos comunes centrados en la creación y manipulación de escenas, la administración de atributos y metadatos, y la administración de etapas y capas, lo que le ayuda a aprender y experimentar con OpenUSD.  Explora ejemplos completamente renderizados en la página de documentación de Code Samples de NVIDIA OpenUSD.

Para obtener más información sobre cómo interactuar con Omniverse usando Python, mira este video de YouTube de Shane Reetz.

Casos de Uso Comunes de Python con OpenUSD

Además de las herramientas mencionadas anteriormente, profundizaremos en algunos casos de uso comúnmente utilizados con Python y OpenUSD.

Extracción y Transformación de Datos a USD

El primer paso para comenzar con USD es obtener sus datos en formato USD. El Catálogo de USD Data Exchange contiene importadores, exportadores y convertidores que simplifican la integración de activos existentes en workflows de USD.

Para obtener más información, consulte la publicación del blog técnico Cómo Usar OpenUSD y Learn OpenUSD: Developing Data Exchange Pipelines, donde obtendrá experiencia práctica en técnicas de extracción y transformación de datos.

Validación y Aplicación de Correcciones

Los scripts de validación automatizados detectan errores temprano, evitando problemas de pipeline. Python se puede usar para crear herramientas de supervisión para realizar un seguimiento del estado y el rendimiento del pipeline.

Omni Asset Validator, un framework de Python, utiliza el framework USD Compliance Checker para validar los activos, lo que garantiza una integración fluida del workflow. Los casos de uso clave incluyen:

  • Reglas básicas: Verifique la corrección básica del USD.
  • Reglas de geometría: valide la topología de malla, los esquemas de subdivisión y elimine los elementos no utilizados o de área cero.
  • Reglas de diseño: asegúrese de que los prims predeterminados correctos y valide los especificadores prim.
  • Rendimiento: Compruebe si hay capas que podrían beneficiarse del uso del formato USDC.

Automatización de la Creación de Escenas

Los scripts de Python pueden automatizar la creación de escenas, reduciendo el esfuerzo manual y asegurando la coherencia. Esto acelera los workflows y permite la creación de escenas más complejas. Los ejemplos de creación de luces, materiales y más están disponibles en la documentación de GitHub de ejemplos de USD Exchange.

Una estructura de activos bien definida  es crucial para administrar escenas 3D complejas. La modularidad es un principio clave que implica dividir los activos en componentes más pequeños y reutilizables y usar arcos de composición. La naturaleza orientada a objetos de Python lo hace ideal para desarrollar código modular y reutilizable, lo que ayuda en la gestión de activos complejos.

¿Está interesado en obtener experiencia directa en la estructuración de activos y mejorar la eficiencia de la canalización? Consulte el curso gratuito de DLI, Learn OpenUSD: Asset Structure Principles and Content Aggregation.  

Crear Herramientas de Creación de Escenas

Python permite la creación de herramientas personalizadas adaptadas a workflows específicos, lo que simplifica la creación de contenido 3D. Estas herramientas se pueden compartir con la comunidad, mejorando la colaboración.

Por ejemplo, si se utiliza el método UsdGeomSphere, puede definir un prim de Sphere usando Python. El script de la izquierda creará un archivo llamado «simple_scene.usda», que se muestra a la derecha, con el siguiente contenido:

Un excelente punto de partida para crear scripts y herramientas personalizados es el curso Learn OpenUSD sobre cómo crear y personalizar una extensión de omniverse, donde descubrirás los conceptos básicos de la creación de extensiones nativas de OpenUSD en Omniverse con Python.

Los desarrolladores pueden usar el SDK kit Omniverse para comenzar a crear herramientas de creación de escenas personalizadas con OpenUSD. El SDK Kit Omniverse incluye frameworks de usuario y USD, así como integraciones de SDK para PhysX, Cloud XR, Audio2Face y otras bibliotecas que también pueden resultarte útiles en el camino.

Primeros Pasos con OpenUSD

Para experimentar con OpenUSD en Python, puede instalar rápidamente las bibliotecas necesarias ejecutando pip install usd-core. Para una experiencia de desarrollo más fluida, agregue soporte de autocompletado a su IDE con pip install types-usd.

Para obtener más recursos sobre OpenUSD, explore nuestro recursos de OpenUSD, vea la sesiones de OpenUSD de NVIDIA GTC 2025 bajo demanda, e interactúe con la comunidad en el Alliance for OpenUSD (AOUSD) forum.

¿Listo para sumergirse?  Inscríbase en el curso gratuito Learn OpenUSD a su propio ritmo, que cubre los fundamentos y los workflows prácticos.

Para mantenerse al día con todo lo relacionado con OpenUSD, consulte cómo el lanzamiento de OpenUSD v25.05 permite una interoperabilidad de materiales más amplia a través de las iniciativas OpenPBR y Color Interop Forum.