Universal Scene Description (OpenUSD) ofrece un ecosistema potente, abierto y extensible para describir, componer, simular y colaborar en mundos 3D complejos. Desde el manejo de conjuntos de datos masivos y la automatización de workflows para gemelos digitales hasta la representación en tiempo real de juegos y la optimización de las operaciones industriales en fabricación 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.
Video 1. Por qué debería usar OpenUSD
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++, proporcionando un marco eficiente y de alto rendimiento para manipular 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 plug-in para ampliar y adaptar USD.
- Imagen: Alberga el renderizador de hardware Hydra y otros servicios de imágenes de bajo nivel.
- Imágenes de USD: 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 la necesidad de experiencia en C++.

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 Aprendiendo OpenUSD: Fundamentos.
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 activos dinámicamente y optimizar escenas, sin atascarse en detalles de bajo nivel como la administració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 los 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 y workflows de software de simulación existentes.
El SDK de 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 alto nivel para crear etapas, definir 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 es una extensión de Omniverse que verifica la compatibilidad de los activos de OpenUSD mediante la realización de una 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 solucionar problemas.
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.
Explore elrepositorio OpenUSD Code Samples en GitHubpara 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 lo ayuda a aprender y experimentar con OpenUSD. Explore ejemplos completamente renderizados en la página de documentación de ejemplos de código 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.
Video 2. Omniverse, Python, and You
Casos de Uso Comunes de Python con OpenUSD
Además de las herramientas mencionadas anteriormente, profundicemos en algunos casos de uso comunes con Python y OpenUSD.
Extracción y Transformación de Datos en USD
El primer paso para comenzar con USD es poner sus datos en formato USD. El catálogo de intercambio de datos de USD 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 aprender OpenUSD: Desarrollo de canalizaciones de intercambio de datos, 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 canalización. Python se puede usar para crear herramientas de monitoreo para rastrear el estado y el rendimiento de la canalización.
Omni Asset Validator, un marco de Python, utiliza el marco 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 que el USD base sea correcto.
- 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: Comprueba si hay capas que puedan beneficiarse del uso del formato USDC.
Automatización de la Construcció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. Hay ejemplos de creación de luces, materiales y mucho más 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 fundamental que implica dividir los activos en componentes más pequeños y reutilizables y utilizar arcos componibles. 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 adquirir experiencia directa en la estructuración de activos y mejorar la eficiencia de las tuberías? Consulte el curso gratuito de DLI, Aprenda OpenUSD: Principios de estructura de activos y agregación de contenido.
Crear Herramientas de Creación de Escenas
Python permite la creación de herramientas personalizadas adaptadas a workflows específicos, simplificando 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 una esfera prim usando Python. El Script 1 creará un archivo llamado «simple_scene.usda», que se muestra en Script 2, con el siguiente contenido:
from pxr import Usd, UsdGeom, Sdf# Create a new stagestage = Usd.Stage.CreateNew("simple_scene.usda")# Define a new Xform prim (transformable object)xform_prim = UsdGeom.Xform.Define(stage, "/MyXform")# Set the translation of the Xformxform_prim.AddTranslateOp().Set( (1, 2, 3) )# Define a new Sphere prim under the Xformsphere_prim = UsdGeom.Sphere.Define(stage, "/MyXform/MySphere")# Set the radius of the spheresphere_prim.GetRadiusAttr().Set(5.0)# Save the stage to a filestage.Save() |
Script 1
#usda 1.0( defaultPrim = "MyXform" upAxis = Z)def Xform "MyXform"{ double3 xformOp:translate = (1, 2, 3) uniform token[] xformOpOrder = ["xformOp:translate"] def Sphere "MySphere" { double radius = 5 }}Un excelente punto de partida para crear scripts y herramientas personalizados es el curso Aprende 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 del kit Omniverse para comenzar a crear herramientas personalizadas de creación de escenas con OpenUSD. El SDK del kit Omniverse incluye marcos y una interfaz de usuario de USD, así como integraciones de SDK para PhysX, Cloud XR, Audio2Face y otras bibliotecas que también pueden resultarte útiles en el camino.
Introducción a OpenUSD
Para probar 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 autocompletar a su IDE con pip install types-usd.
Para obtener más recursos sobre OpenUSD, explore nuestros recursos de OpenUSD, vea las sesiones de OpenUSD de NVIDIA GTC 2025 a pedido e interactúe con la comunidad en el Foro de Alliance for OpenUSD (AOUSD).
¿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 actualizado con todo lo relacionado con OpenUSD, consulte cómo la versión OpenUSD v25.05 permite una interoperabilidad de materiales más amplia a través de las iniciativas OpenPBR y Color Interop Forum.
