← Todos os Posts

USDKit: OpenUSD nativo em Swift nas plataformas Apple

Na WWDC 2026, um engenheiro da Apple abriu uma cena 3D em Swift, notou que faltava um osciloscópio na bancada, puxou o asset como uma referência leve, posicionou-o no lugar, rotulou-o para tecnologias assistivas e exportou tudo sete vezes menor, em apenas algumas linhas de código.1 Essa demonstração é a tese do USDKit: a Apple agora distribui um framework de sistema que faz do OpenUSD uma API Swift de primeira classe, e não uma biblioteca C++ à qual você se vincula manualmente. Você carrega um stage, compõe assets, cria dados em prims e exporta um pacote comprimido, usando padrões que os desenvolvedores Swift já conhecem.

Este post percorre a história do USDKit a partir da sessão 285 da WWDC 2026, “Discover USDKit and what’s new in OpenUSD”. Tudo abaixo vem diretamente dessa sessão.

TL;DR

  • O USDKit traz suporte de primeira classe a USD para apps Swift, “com integração profunda para RealityKit e Spatial Preview já embutida”, e atende tanto os desenvolvedores USD existentes quanto os recém-chegados ao Swift onde quer que estejam.1
  • O ciclo central é abrir, modificar, exportar: crie um stage com um inicializador USDStage ou abra um com USDStage.open (ele lança erro, então você usa try), referencie assets via Composition, posicione-os com addTransformOperation e então escreva um exportPackage comprimido.1
  • Um limite honesto: o USDKit “não fornece todas as APIs específicas de schema”, então criar acessibilidade significa aplicar o schema AccessibilityAPI e depois criar os atributos de label e description pelo nome, usando os nomes definidos na especificação.1
  • Um novo tipo de primitive USD, Particle Fields, “é capaz de descrever Gaussian Splats, bem como outras representações”, trazendo os splats para a mesma cena que malhas e materiais pela primeira vez.1
  • A compressão de malha somada à compressão de textura AVIF deixa o asset médio sete vezes menor; você obtém isso pela API exportPackage, no Preview ou pela ferramenta de linha de comando usdcrush.1

O que mudou no OpenUSD este ano

Watch on Apple Developer ↗

Lee, da equipe de Spatial Standards da Apple, apresenta o USDKit aos 7:00, logo após as atualizações da base do OpenUSD.

O USD é a espinha dorsal das experiências espaciais que a Apple constrói, e o projeto de código aberto por trás dele, o OpenUSD, foi originalmente pioneirado pela Pixar.1 O USD não trabalha sozinho. Ele se integra ao MaterialX, originalmente da Lucasfilm para descrições de materiais, e, novidade deste ano, ao OpenVDB, originalmente da DreamWorks, que traz dados volumétricos para a equação.1 A Apple atualizou os três em suas plataformas este ano e, como membro da Academy Software Foundation, contribui diretamente para projetos como MaterialX e OpenVDB.1

O trabalho de padronização vai mais fundo do que o código. Como membro fundadora da Alliance for OpenUSD, a Apple “ajudou a lançar a primeira especificação formal para o núcleo do USD, com especificações de domínio para geometria, materiais e física já em andamento”.1 Esses grupos de trabalho são abertos, e o convite da sessão aos desenvolvedores é se envolver, caso queiram ter voz em como a indústria troca conteúdo 3D.

A notícia mais marcante no nível de primitive é Particle Fields. Os Gaussian Splats capturam uma cena “como milhões de partículas difusas e sobrepostas, cada uma codificando posição, cor e opacidade para reconstruir fielmente ambientes complexos do mundo real”.1 Trabalhando com parceiros da Alliance for OpenUSD, incluindo NVIDIA, Adobe e Pixar, a Apple introduziu Particle Fields como um novo tipo de primitive USD que “é capaz de descrever Gaussian Splats, bem como outras representações dessa área de pesquisa em rápida evolução”.1 O ganho prático: os splats agora vivem “na mesma cena que suas malhas, materiais e outros dados 3D tradicionais pela primeira vez”.1 O enquadramento é deliberadamente modesto. Particle Fields descreve splats e representações semelhantes; é um contêiner para uma área de pesquisa em evolução, não uma especificação acabada de renderizador de splats.

O modelo mental do USDKit

O USDKit traz suporte de primeira classe a USD para apps Swift com integração profunda para RealityKit e Spatial Preview embutida, e o objetivo de design corta para os dois lados: desenvolvedores que já conhecem USD acham os conceitos familiares, e desenvolvedores Swift novos no USD recebem padrões e paradigmas que já reconhecem.1

Alguns conceitos do USD ancoram a API. Uma Layer é um único arquivo de dados. As layers se combinam por meio de um recurso chamado Composition, e um Stage é “o resultado composto de uma ou mais layers”, sua janela para a cena completa.1 Tudo em uma cena é um USD Prim. Cada prim tem um Schema que define seu tipo, além de Attributes que “guardam os dados em si” e Metadata que “descreve informações sobre o próprio prim”.1 Essas quatro palavras, layer, stage, prim, schema, carregam o resto do fluxo de trabalho.

Abrir, modificar, exportar

A sessão percorre um ciclo concreto: carregar um stage, fazer modificações e exportar o resultado.1

Você pode criar um stage novo na memória com “um simples inicializador USDStage”.1 Para trabalhar com uma cena existente, abra-a passando uma URL de arquivo para USDStage.open. Como isso envolve acesso a arquivo, “ele pode lançar erro, então uso try”.1 Com a cena carregada, o engenheiro percorre a hierarquia do stage procurando o osciloscópio que falta, não encontra nada e define “um novo transform prim no caminho em que quero que ele exista”.1

A Composition é onde o design prova seu valor. Em vez de copiar os dados de um asset para dentro do stage, você “adiciona uma referência leve a ele”.1 O asset vive em seu próprio arquivo, ou layer, criado por outra pessoa, e você o puxa para dentro: “Cada um trabalha em sua própria parte da cena, e o USD junta tudo”, e quaisquer atualizações que o autor original fizer “também aparecem automaticamente no meu stage, porque estou apenas referenciando o arquivo dele”.1

Posicionar o asset referenciado usa addTransformOperation, que “cuida de criar os atributos corretos no prim e de atualizar a ordem do transform automaticamente”.1 Depois disso, o engenheiro define o valor de translação e o asset se move até a bancada. O padrão importa porque separa a intenção (mover este prim) da escrituração de quais atributos de transform existem e em que ordem.

Criar acessibilidade, e um limite honesto

A Apple “impulsionou a padronização de metadados de acessibilidade diretamente no USD”, estabelecendo como labels e descriptions assistivas são definidas em objetos 3D em toda a indústria, e construiu isso com flexibilidade para que possa evoluir.1 Como os metadados são nativos do USD, “você pode criá-los por meio de qualquer API USD”, e a Apple adicionou suporte direto no Blender e no Maya para facilitar a adoção.1

Aqui está a ressalva que vale enunciar com clareza. Para adicionar dados de acessibilidade, você primeiro aplica o schema AccessibilityAPI ao prim, o que adiciona o metadado que sinaliza a presença do schema. Então, nas palavras da sessão, “Como o USDKit não fornece todas as APIs específicas de schema, eu crio os atributos de label e description diretamente, tomando o cuidado de usar os nomes de atributo corretos conforme definidos na especificação”.1 Ou seja, o USDKit dá a você uma forma nativa em Swift de alcançar o USD, mas não envolve cada schema em uma API tipada. Para os schemas que ele não cobre, você cria os atributos pelo nome e é responsável por acertá-los em relação à spec. Trate o USDKit como uma porta de primeira classe para o USD, não como uma garantia de cobertura tipada completa para todo schema.

Compressão que vem na própria chamada de exportação

Cenas USD de produção de alta qualidade “podem crescer até muitos gigabytes de tamanho”, e a cena ALab da demonstração é um exemplo prático.1 Em colaboração com a Alliance for Open Media, a Apple adicionou “um codec de compressão de malha de última geração capaz de reduzir o tamanho das malhas em até 90%”.1 Combinado com a compressão de textura AVIF existente, “o asset médio agora é sete vezes menor, sem comprometer a qualidade visual”.1

O codec vive dentro do fluxo de trabalho, e não ao lado dele. O suporte à compressão está “embutido diretamente na API exportPackage”: você passa a URL de saída ao método exportPackage no stage e então habilita a compressão de textura e de malha pelas opções de exportação.1 Se você não está escrevendo código, “pode obter os mesmos resultados diretamente no Preview ou pela ferramenta de linha de comando usdcrush”.1 A Apple está trabalhando com a Pixar para levar essa compressão ao projeto OpenUSD, de modo que todo o ecossistema se beneficie.1

Onde o USDKit encontra o resto da plataforma

O framework alimenta experiências que vão bem além de um único app. O Preview no Mac agora faz edição 3D essencial, e o Preview e o Quick Look “dão a você uma escolha de renderizador”: o RealityKit “traz consistência entre Mac, iPhone, iPad e Vision Pro”, o Storm “permanece disponível para quem tem necessidades de pipelines de produção existentes”, e um Raytracer totalmente novo mira as cenas mais complexas com reflexos precisos, sombras exatas e iluminação fisicamente correta.1 Os três renderizadores suportam OpenPBR, “um upgrade significativo em relação ao USDPreviewSurface que traz materiais mais ricos e fisicamente mais precisos ao seu fluxo de trabalho”.1

O Preview se integra ao novo framework Spatial Preview no macOS 27, criando uma conexão direta entre o seu Mac e o Quick Look no Vision Pro, de modo que as edições aparecem ao vivo no seu espaço, com o SharePlay trazendo um time inteiro para a mesma cena.1 Na web, o Safari introduz a tag Model, embutindo um modelo USD que renderiza de forma interativa no macOS e no iOS e, no visionOS, “rompe a página e é apresentado, espacialmente, diretamente no espaço do usuário”.1

O USDKit é o caminho recomendado para desenvolvedores de apps nas plataformas Apple porque é fornecido pelo sistema e profundamente integrado, e o resto das experiências da sessão é construído sobre ele.1 Para necessidades avançadas ou multiplataforma que vão além do que o USDKit cobre, o SwiftUSD fornece bindings Swift de código aberto pelo Swift Package Manager, e bases de código C++ podem embutir o OpenUSD diretamente como um framework. Os três se apoiam na mesma base, então “seus arquivos USD se movem livremente entre todos eles”.1

Uma distinção que vale manter em mente: este é o caminho programático. Criar cenas manualmente em uma ferramenta visual é o papel do Reality Composer Pro (veja o modelo mental de RealityKit e Reality Composer Pro); o USDKit é a API que você usa quando quem faz o trabalho é o código, não uma tela.

Como começar

A sessão se condensa em um caminho curto que você pode seguir hoje:

  1. Abra um stage. Crie um na memória com o inicializador USDStage ou abra uma cena existente passando uma URL de arquivo para USDStage.open dentro de um try, porque o acesso a arquivo pode lançar erro.1
  2. Componha, não copie. Defina um transform prim no caminho que você quer e então adicione uma referência leve a uma layer externa, para que as atualizações do autor original fluam automaticamente para o seu stage.1
  3. Posicione com intenção. Chame addTransformOperation para criar os atributos e a ordem de transform corretos e então defina o valor de translação.1
  4. Crie acessibilidade com honestidade. Aplique o schema AccessibilityAPI e então crie os atributos de label e description pelos nomes que a especificação define, porque o USDKit não fornece toda API específica de schema.1
  5. Exporte pequeno. Chame exportPackage no stage com a compressão de textura e de malha habilitada, ou rode usdcrush se você não está escrevendo código.1

FAQ

O que é o USDKit?

O USDKit é um novo framework de sistema da Apple que traz suporte de primeira classe ao OpenUSD para apps Swift, com integração profunda para RealityKit e Spatial Preview embutida. Ele expõe conceitos USD (layers, stages, prims, schemas) por meio de padrões Swift, então você pode abrir um stage, compor assets, criar dados e exportar, sem se vincular manualmente a uma biblioteca C++. A Apple o recomenda como ponto de partida para desenvolvedores de apps em suas plataformas.1

Como carrego e modifico uma cena USD com o USDKit?

Abra uma cena passando uma URL de arquivo para USDStage.open dentro de um try (o acesso a arquivo pode lançar erro), ou crie um stage novo com um inicializador USDStage. Para adicionar um asset externo, defina um transform prim e adicione uma referência leve à layer dele em vez de copiar seus dados. Posicione-o chamando addTransformOperation, que configura os atributos e a ordem de transform corretos, e então defina o valor de translação.1

O USDKit cobre todo schema USD?

Não. A sessão afirma com clareza que o USDKit “não fornece todas as APIs específicas de schema”. Para acessibilidade, por exemplo, você aplica o schema AccessibilityAPI e então cria os atributos de label e description diretamente, usando os nomes de atributo exatos definidos na especificação. O USDKit é uma porta Swift de primeira classe para o USD, não um wrapper tipado em torno de cada schema.1

O que são Particle Fields e Gaussian Splats no OpenUSD?

Particle Fields é um novo tipo de primitive USD que a Apple introduziu com parceiros da Alliance for OpenUSD, incluindo NVIDIA, Adobe e Pixar. Ele “é capaz de descrever Gaussian Splats, bem como outras representações” dessa área de pesquisa. Os Gaussian Splats capturam uma cena como milhões de partículas sobrepostas que codificam posição, cor e opacidade. O Particle Fields permite que os splats vivam na mesma cena que malhas e materiais pela primeira vez.1

Quão pequeno o USDKit consegue deixar um asset USD?

Um codec de compressão de malha construído com a Alliance for Open Media pode reduzir o tamanho das malhas em até 90%, e, combinado com a compressão de textura AVIF, o asset médio fica cerca de sete vezes menor sem comprometer a qualidade visual. Habilite a compressão de textura e de malha pela API exportPackage, no Preview ou com a ferramenta de linha de comando usdcrush.1


O USDKit é a contraparte programática da história de criação visual no modelo mental de RealityKit e Reality Composer Pro, e alimenta as mesmas cenas que movem as novidades do visionOS 27 e o modelo mental espacial mais amplo do RealityKit. No lado da web, os mesmos assets USD renderizam por meio do elemento HTML nativo <model> que o Safari introduziu este ano. O hub completo da série é a Série Apple Ecosystem.

Referências


  1. Apple, sessão 285 da WWDC 2026, Discover USDKit and what’s new in OpenUSD. Fonte para as atualizações da base do OpenUSD (MaterialX, OpenVDB, a primeira especificação formal do núcleo do USD e a participação na Alliance for OpenUSD), o tipo de primitive Particle Fields que descreve Gaussian Splats e representações semelhantes, o framework USDKit e sua integração com RealityKit e Spatial Preview, os conceitos de layer/stage/prim/schema, o ciclo abrir-modificar-exportar (inicializador USDStage, USDStage.open com try, referências de Composition, addTransformOperation, exportPackage), o fluxo de acessibilidade (schema AccessibilityAPI, criação dos atributos de label e description pelo nome, e a afirmação de que o USDKit “não fornece todas as APIs específicas de schema”), a compressão de malha e de textura AVIF (redução de malha de até 90%, asset médio sete vezes menor, via exportPackage, Preview ou usdcrush), as escolhas de renderizador do Preview (RealityKit, Storm, Raytracer) e o OpenPBR em vez do USDPreviewSurface, o framework Spatial Preview no macOS 27, a tag Model do Safari, e as alternativas SwiftUSD e framework C++. 

Artigos relacionados

O que o time de Swift da Apple disse no Lab da WWDC26

O Swift Group Lab da Apple na WWDC26 saiu sem legendas. Nós o transcrevemos localmente. Respostas francas dos engenheiro…

13 min de leitura

RealityKit e Reality Composer Pro 3 em 2026

A WWDC26 amadureceu o pipeline espacial da Apple: o RealityKit ganhou iluminação e simulação de tecido, além de um Reali…

15 min de leitura

The Robots Are Taking Exams in My Search Console

First-party GSC data: 91% of 3.8M impressions fail a human-query filter. Exam questions, pasted errors, and agent sweeps…

10 min de leitura