O Universal Scene Description (OpenUSD) oferece um ecossistema poderoso, aberto e extensível para descrever, compor, simular e colaborar em mundos 3D complexos. Desde o manuseio de conjuntos de dados massivos e a automação de workflows para gêmeos digitais até a renderização em tempo real para jogos e a simplificação das operações industriais em manufatura e energia, está transformando a forma como as indústrias trabalham com dados 3D.
Os recursos de script e a facilidade de uso do Python o tornam o parceiro perfeito para o OpenUSD, ajudando a automatizar tarefas e acelerar o desenvolvimento.
Vídeo 1. Por que você deve usar o OpenUSD
Nesta postagem do blog, exploraremos a sinergia entre Python e USD e forneceremos recursos para ajudá-lo a começar.
Por que o Python é essencial para o OpenUSD
O OpenUSD é implementado principalmente em C++, fornecendo uma estrutura eficiente e de alto desempenho para manipulação de cenas 3D. A API C++ é dividida em vários pacotes de chaves.
- Base: contém módulos fundamentais que são independentes de aplicativos.
- USD: inclui módulos para criação, leitura e composição de arquivos USD. Ele define interfaces de plug-in para estender e adaptar o USD.
- Imagem: Abriga o renderizador de hardware Hydra e outros serviços de imagem de baixo nível.
- USD Imaging: Conecta USD e Hydra, fornecendo adaptadores para leitura e visualização eficientes de dados. Inclui ferramentas como usdview para inspecionar arquivos USD.
No entanto, o USD fornece ligações Python para a maioria de suas bibliotecas, tornando-o acessível para prototipagem, script e automação rápidos sem a necessidade de experiência em C++.

Para otimizar os workflows do OpenUSD com o Python, é importante entender seus conceitos básicos. A NVIDIA oferece cursos gratuitos para desenvolvedores melhorarem suas habilidades em OpenUSD, que são essenciais para dominar a codificação USD Python e navegar na API. Confira-os em Learning OpenUSD: Foundations.
Pontos fortes do Python: Prototipagem Rápida, Integração de Ferramentas e Manipulação de Cenas
O Python é usado para prototipagem porque é extremamente flexível e não requer compilação ou Makefiles. Ele permite que o usuário se concentre em suas tarefas, como automatizar a criação de cenas, validar ativos dinamicamente e otimizar cenas, sem ficar atolado em detalhes de baixo nível, como gerenciamento de memória. Isso o torna perfeito para usuários do OpenUSD que podem não ter formação técnica, mas ainda desejam usar esses recursos poderosos.
Veja a seguir os componentes do NVIDIA Omniverse, uma plataforma de APIs, SDKs e serviços que permitem aos desenvolvedores integrar OpenUSD, tecnologias de renderização NVIDIA RTX e IA física generativa em ferramentas de software e fluxos de trabalho de simulação existentes.
O SDK do USD Exchange acelera a adoção do OpenUSD ajudando os desenvolvedores a projetar, criar e testar suas próprias soluções de entrada e saída do USD. Ele fornece funções de conveniência de nível superior para criar estágios, definir nomes de exibição e muito mais, para complementar os conceitos de USD de nível inferior, facilitando o mapeamento de fontes de dados nativas para o OpenUSD e garantindo ativos USD consistentes e corretos em diversos ecossistemas 3D.
O USD Asset Validator é uma extensão do Omniverse que verifica a compatibilidade dos ativos OpenUSD realizando a validação baseada em regras. Ele pode validar diferentes componentes, como camadas, estágios e primitivos individuais, fornecendo vetores de erro detalhados para ajudar a identificar e corrigir problemas.
O Otimizador de cena é um conjunto de ferramentas que permite reduzir a memória necessária para desenvolver suas cenas e acelerar suas renderizações. Ele otimiza materiais, complexidade geométrica e aproveita a instanciação, permitindo manipulação e renderização mais rápidas da janela de visualização.
Explore o Repositório de exemplos de código OpenUSD no GitHub para obter trechos de código úteis em Python, C++ e USD. Esses exemplos abrangem tarefas e conceitos comuns focados na criação e manipulação de cenas, gerenciamento de atributos e metadados e gerenciamento de estágios e camadas, ajudando você a aprender e experimentar o OpenUSD. Explore exemplos totalmente renderizados no NVIDIA OpenUSD Documentação de exemplos de código página.
Para saber mais sobre como interagir com o Omniverse usando Python, confira este vídeo do YouTube de Shane Reetz.
Vídeo 2. Omniverse, Python e você
Casos de Uso Comuns para Python com OpenUSD
Além das ferramentas mencionadas acima, vamos nos aprofundar em alguns casos de uso comumente usados com Python e OpenUSD.
Extraindo e Transformando Dados em USD
O primeiro passo para começar a usar o USD é colocar seus dados no formato USD. O Catálogo de troca de dados do USD contém importadores, exportadores e conversores que simplificam a integração de ativos existentes em fluxos de trabalho do USD.
Para saber mais, confira a postagem técnica do blog Como usar o OpenUSD e o Learn OpenUSD: Developing Data Exchange Pipelines, onde você ganhará experiência prática em técnicas de extração e transformação de dados.
Validando e Aplicando Correções
Os scripts de validação automatizados detectam erros antecipadamente, evitando problemas de pipeline. O Python pode ser usado para criar ferramentas de monitoramento para rastrear o status e o desempenho do pipeline.
O Omni Asset Validator, uma estrutura Python, usa a estrutura USD Compliance Checker para validar ativos, garantindo uma integração suave do fluxo de trabalho. Os principais casos de uso incluem:
- Regras básicas: Verifique se o USD básico está correto.
- Regras de geometria: valide a topologia da malha, esquemas de subdivisão e remova elementos não utilizados ou de área zero.
- Regras de layout: garanta os prims padrão corretos e valide os especificadores de prim.
- Desempenho: Verifique se há camadas que podem se beneficiar do uso do formato USDC.
Automatizando a Construção de Cenas
Os scripts Python podem automatizar a construção de cenas, reduzindo o esforço manual e garantindo a consistência. Isso acelera os fluxos de trabalho e permite a criação de cenas mais complexas. Exemplos de criação de luzes, materiais e muito mais estão disponíveis na documentação do GitHub de exemplos do USD Exchange.
Uma estrutura de ativos bem definida é crucial para gerenciar cenas 3D complexas. A modularidade é um princípio fundamental que envolve a divisão de ativos em componentes menores e reutilizáveis e o uso de arcos de composição. A natureza orientada a objetos do Python o torna ideal para o desenvolvimento de código modular e reutilizável, auxiliando no gerenciamento de ativos complexos.
Interessado em obter experiência direta na estruturação de ativos e melhorar a eficiência do pipeline? Confira o curso gratuito do DLI, Aprenda OpenUSD: Princípios de Estrutura de Ativos e Agregação de Conteúdo.
Criar Ferramentas de Criação de Cena
O Python permite a criação de ferramentas personalizadas adaptadas a fluxos de trabalho específicos, simplificando a criação de conteúdo 3D. Essas ferramentas podem ser compartilhadas com a comunidade, aprimorando a colaboração.
Por exemplo, usar o método UsdGeomSphere esquema, você pode definir um prim Sphere usando Python. O script 1 criará um arquivo chamado “simple_scene.usda”, mostrado no script 2, com o seguinte conteúdo:
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 }} |
Script 2
Um ótimo ponto de partida para criar scripts e ferramentas personalizados é o curso Learn OpenUSD sobre como criar e personalizar uma extensão do omniverse, onde você descobrirá os fundamentos da criação de extensões nativas do OpenUSD no Omniverse com Python.
Os desenvolvedores podem usar o SDK do Omniverse Kit para começar a criar ferramentas de criação de cenas personalizadas com o OpenUSD. O SDK do Omniverse Kit inclui estruturas USD e UI, bem como integrações SDK para PhysX, Cloud XR, Audio2Face e outras bibliotecas que você também pode achar úteis ao longo do caminho.
Introdução ao OpenUSD
Para experimentar o OpenUSD em Python, você pode instalar rapidamente as bibliotecas necessárias executando pip install usd-core. Para uma experiência de desenvolvimento mais suave, adicione suporte de preenchimento automático ao seu IDE com pip install types-usd.
Para obter mais recursos sobre o OpenUSD, explore nossos Recursos do OpenUSD, assista as Sessões OpenUSD do NVIDIA GTC 2025 sob demanda e interaja com a comunidade no Fórum da Alliance for OpenUSD (AOUSD).
Pronto para mergulhar? Inscreva-se no curso gratuito e individualizado Learn OpenUSD, que abrange fundamentos e fluxos de trabalho práticos.
Para se manter atualizado com todas as coisas do OpenUSD, confira como o Lançamento do OpenUSD v25.05 permite uma interoperabilidade de material mais ampla por meio de iniciativas OpenPBR e Color Interop Forum.
