Usando Python Para Automatizar Workflows 3D com OpenUSD

por Justine Lin

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 games 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.

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 um framework eficiente e de alto desempenho para manipulação de cenas 3D. A API C++ é dividida em vários pacotes-chaves.

  • Base: contém módulos fundamentais que são independentes de aplicações.
  • 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++.

Base, Usd, Imaging, and UsdImaging Python bindings.
Figura 1. As associações do Python para C++ facilitam a interação entre o Python e a biblioteca principal do C++ USD

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 workflows de simulação existentes.

  • SDK USD Exchange
    • O SDK 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.
  • USD Asset Validator
    • 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.
  • Scene Optimizer
    • O Scene Optimizer é 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.
  • Exemplos de Código OpenUSD
    • 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 na página de documentação de Exemplos de Código do NVIDIA OpenUSD.

Para saber mais sobre como interagir com o Omniverse usando Python, confira este vídeo do YouTube de Shane Reetz.

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 USD Data Exchange contém importadores, exportadores e conversores que simplificam a integração de ativos existentes em workflows do USD.

Para saber mais, confira a postagem técnica do blog How to Use 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, um framework Python, usa o framework USD Compliance Checker para validar ativos, garantindo uma integração suave do workflow. Os principais casos de uso incluem:

  • Regras básicas: Verifique se o USD básico está correto.
  • Regras de geometria: valide a topologia de 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 workflows 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, Learn OpenUSD: Asset Structure Principles and Content Aggregation.  

Criar Ferramentas de Criação de Cena

O Python permite a criação de ferramentas personalizadas adaptadas a workflows específicos, simplificando a criação de conteúdo 3D. Essas ferramentas podem ser compartilhadas com a comunidade, aprimorando a colaboração.

Por exemplo, usando o esquema UsdGeomSphere, você pode definir um prim Sphere usando Python. O script à esquerda criará um arquivo chamado “simple_scene.usda”, mostrado à direita, com o seguinte conteúdo:

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 Kit Omniverse para começar a criar ferramentas de criação de cenas personalizadas com o OpenUSD. O SDK do Kit Omniverse inclui frameworks 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 nosso recursos do OpenUSD, assista às Sessões OpenUSD do NVIDIA GTC 2025 on demand e interaja com a comunidade no Fórum da Alliance for OpenUSD (AOUSD).

Pronto para se aprofundar?  Inscreva-se no curso gratuito e individualizado Learn OpenUSD, que abrange fundamentos e workflows 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.