View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Tópicos
  • Todos os vídeos
  • Sobre

Voltar para WWDC25

  • Sobre
  • Resumo
  • Transcrição
  • Otimize seus ambientes personalizados para visionOS

    Descubra como usar ferramentas procedurais para criar belos ambientes imersivos em seu app ou jogo para visionOS. Vamos compartilhar as informações fundamentais para a criação de um ambiente de alta qualidade e, em seguida, vamos explorar o processo de otimização. Saiba como usar uma série de fluxos de trabalho fornecidos pela Apple para o Houdini que permitem reduzir a quantidade de polígonos da cena, limpar a geometria, organizar mapas UV e criar assets em USD para importar no Reality Composer Pro ou no mecanismo de jogo de sua preferência.

    Capítulos

    • 0:00 - Introdução
    • 3:51 - Preparar para o Vision Pro
    • 7:35 - Otimizar a geometria
    • 17:22 - Projeção UV
    • 24:20 - Criar texturas
    • 25:38 - Configuração em USD
    • 28:35 - Conclusão

    Recursos

    • Construct an immersive environment for visionOS
    • Download immersive environment optimization toolkit for Houdini
    • Enabling video reflections in an immersive environment
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    WWDC24

    • Create custom environments for your immersive apps in visionOS
    • Enhance the immersion of media viewing in custom environments
    • Optimize your 3D assets for spatial computing

    WWDC23

    • Explore the USD ecosystem
  • Buscar neste vídeo...

    Olá! Esta é a sessão "Otimizar ambientes para o visionOS". Meu nome é Alex. Sou Technical Artist na Apple. Neste vídeo, vamos aprender a criar ambientes imersivos para que suas histórias pareçam reais no Apple Vision Pro. Nessa plataforma, você trabalha com resolução muito alta, taxa de quadros rápida e interações perfeitas em tempo real. Isso dá a você uma oportunidade única de criar ambientes que oferecem uma verdadeira sensação de presença. Quando você acerta, as pessoas se sentem transportadas. Para isso, o objetivo é um nível cinematográfico de efeitos visuais, ajudando a contar histórias como nunca antes. Infelizmente, a renderização em tempo real de alta fidelidade é cara. Recursos como sombras suaves, iluminação global e sombreamento complexo têm um alto custo. Então, como preencher essa lacuna? Bem, não é apenas uma única técnica. É preciso uma estratégia flexível, que funcione dentro dos limites técnicos, mas que melhore a qualidade visual o máximo possível. Vamos dar uma olhada no fluxo de trabalho de otimização que podemos usar para fazer isso acontecer. Ele começa com uma imagem pré-renderizada, capturando iluminação cinematográfica, riqueza de detalhes e materiais de alta qualidade. Em seguida, a geometria e as texturas são otimizadas com base na experiência real do espectador. Depois, essa imagem pré-renderizada é transferida para o ambiente otimizado, dando a aparência de uma renderização de alta qualidade. Por fim, tudo é montado em um editor em tempo real, como Reality Composer ou Unity. O resultado são efeitos visuais imersivos. Neste vídeo, vou mostrar duas partes deste fluxo de trabalho: otimizar seus ativos para ajudar você a criar ambientes impressionantes para usar nos seus apps para Vision Pro. Você poderia fazer muito disso manualmente, mas leva um tempo, certamente mais do que temos neste vídeo. Em vez disso, mostrarei como usar ferramentas de procedimento para criar um fluxo de trabalho que possa automatizar a maior parte desse processo. Há muitas formas de otimizar o conteúdo 3D, mas uma abordagem sólida é usar o Houdini, um app eficiente criado com base em fluxos de trabalho baseados em nós. Seu sistema de script visual permite criar receitas processuais para automatizar e calcular tarefas complexas. Com o Houdini, você também pode usar ferramentas personalizadas chamadas Houdini Digital Assets ou HDAs. Elas combinam scripts visuais com código subjacente e apresentam controles essenciais como parâmetros editáveis por uma interface personalizada. Desenvolvemos um conjunto versátil de 14 ferramentas eficientes que você pode baixar para ajudar a otimizar sua visão artística, oferecendo controles precisos em cada etapa do processo. Esse fluxo de trabalho não cobre todos os casos de uso, mas oferece uma base sólida para enfrentar os desafios únicos da criação de conteúdo imersivo.

    Neste vídeo, usarei o ambiente da Lua como um estudo de caso. Mostrarei passo a passo de como preparar esse conteúdo para ter desempenho em tempo real no Vision Pro. Para aqueles que são novos na criação de ativos para o Vision Pro, vou começar com uma visão geral rápida de uma perspectiva gráfica e o que você precisa saber ao criar conteúdo imersivo. Em seguida, passarei pelo processo de otimização, começando por como usar o Limite Imersivo para otimizar a geometria além dos métodos tradicionais. Depois, como esses mesmos princípios podem ser aplicados às texturas por layout UV e técnicas de baking de texturas. Com tudo otimizado, vou preparar esse ambiente para o USD, pronto para trazê-lo para um mecanismo em tempo real. Vamos começar. Como meu colega Scott mencionou em seu vídeo da WWDC24, "Otimizar seus ativos 3D para computação espacial", criar conteúdo no Vision Pro é diferente. Quando se cria conteúdo para esse dispositivo, é crucial entender como as pessoas vão usá-lo, pois isso pode moldar suas escolhas durante o processo de desenvolvimento.

    Isso é importante quando você considera a quantidade de renderização do Vision Pro para cenas totalmente imersivas. Em imersão mista, apenas parte da exibição é renderizada no vídeo de passthrough. Em imersão total, cada pixel é renderizado, o que torna o desempenho mais desafiador. Quando alguém está totalmente imerso, está em um espaço fixo e transponível. É possível mover fisicamente alguns metros em qualquer direção antes que a experiência desapareça e seja substituída pela realidade. Esse é o Limite Imersivo do Vision Pro. Isso ajuda a manter as pessoas seguras em seus arredores e é uma oportunidade de maximizar seu orçamento gráfico.

    Quando entender para onde alguém pode se mover e olhar, você não precisará renderizar tudo com qualidade total, apenas as partes que importam. Nem mais, nem menos. Essa é a chave para a otimização do ambiente, pois ambientes de alta fidelidade muitas vezes podem ser muito detalhados, repletos de polígonos. Nosso conteúdo pré-renderizado da Lua tem mais de 100 milhões. Isso não vai funcionar tão bem, mas é a oportunidade perfeita para ver até onde essas ferramentas Houdini podem nos levar. Vamos começar abrindo o pacote de ferramentas, configurando a cena e usando uma ferramenta do fluxo de trabalho de otimização.

    Depois de baixar a amostra do Houdini, abra a pasta do projeto. Ela contém tudo o que é necessário para o acompanhamento. Na raiz está o arquivo Houdini principal, optimize.hip. Ele contém a configuração completa que exploraremos. Logo ao lado está a pasta do HDA, que contém todas as ferramentas personalizadas usadas neste fluxo de trabalho. Esses HDAs já estão referenciados no arquivo principal, mas também podem ser reutilizados em qualquer projeto do Houdini. Agora vamos acessar o Houdini, no qual tenho essa cena carregada. Aqui tudo é organizado em três partes principais, cada uma contendo sua própria rede e nós. A primeira é a rede de origem. Este é o layout de resolução completo, usando geometria densa e de alta fidelidade. No arquivo de amostra, é uma configuração de procedimento simples. Mas, nesta demonstração, vou usar o ambiente da lua como exemplo. O próximo é otimizado, no qual a cena é reconstruída para desempenho em tempo real usando as técnicas discutidas neste vídeo.

    Por fim, tudo é montado no USD, do qual pode ser exportado para um editor de tempo de execução, como o Reality Composer ou o Unity. Agora vamos ver o primeiro HDA personalizado, um utilitário que será útil para cada etapa deste fluxo de trabalho. Este é o HDA Boundary Camera, criado para visualizar como o conteúdo imersivo será usado.

    Essa ferramenta fornece um referencial para definir as bordas do Limite Imersivo. Ela tem várias configurações de câmera, facilitando a visualização do seu conteúdo de pontos de vista reais.

    Há parâmetros ajustáveis disponíveis para transformar a câmera facilmente,

    permitindo que você acompanhe a cena enquanto otimiza o conteúdo.

    Com o projeto configurado, vamos nos aprofundar no primeiro conjunto de ferramentas para otimizar a geometria. Como já mencionado, esta cena tem uma enorme quantidade de polígonos, centenas de rochas e quilômetros de terreno em todas as direções. Então, como reduzir a complexidade de algo tão grande? Você pode usar um sistema de nível de detalhe para simplificar ativos individuais. Para alguns tipos de conteúdo, essa é a solução certa. Mas vamos além dos métodos usuais para aproveitar todo o potencial do Limite Imersivo. Utilizarei três técnicas para simplificar, reduzindo a quantidade total de polígonos, começando com a redução adaptativa de polígonos. Em vez de reduzir os ativos um a um, vamos otimizar para cada triângulo e basear a redução apenas dos pontos de vista possíveis. Aqui, o tamanho do triângulo é visualizado. O vermelho indica alta densidade, enquanto o azul indica áreas maiores e mais simples. Nessa configuração, os triângulos são preservados para reter a complexidade apenas onde necessário. A densidade aumenta organicamente para cima e para baixo. Os detalhes desaparecem gradualmente, não todos de uma vez. Isso garante que detalhes importantes permaneçam nítidos, evitando artefatos facetados de baixa polivalência que podem quebrar rapidamente a imersão. Esse é o conceito. Agora vamos ver como criá-lo. É aqui que entram as ferramentas personalizadas, criadas para calcular e automatizar o processo. Usando parâmetros orientados por atributos, você pode orientar o que é preservado e o que é reduzido, graças à lógica processual. Ele foi criado com base na ferramenta PolyReduce nativa do Houdini, configurada para lidar com vários pontos de vista. Nesta visualização, a esfera verde marca uma posição potencial usada para medir a importância da silhueta. O HDA é conduzido por um conjunto de pontos de amostra distribuídos ao longo do Limite Imersivo. Isso garante que a geometria se sustente de todos os ângulos que o espectador possa testar.

    Vamos ver como isso se encaixa no pipeline. Depois de importar o ativo de origem de alta polivalência, divida o conteúdo. Assim fica mais fácil lidar com cada tipo de modo independente. Vamos acessar o Houdini e ver um exemplo para configurar um desses HDAs. No arquivo de amostra, todas as rochas são reduzidas em uma única passagem, usando apenas um HDA Adaptive Reduce. Mas esta é uma operação pesada, porque a quantidade de triângulos somente nas rochas de origem é de mais de 22 milhões. Para iterar rapidamente, isolei uma pequena seção das rochas para demonstrar mais facilmente como apenas um desses HDAs está configurada. Começando com essas rochas, vou soltar uma nova instância do HDA Adaptive Reduce e conectá-la.

    Em seguida, vou mudar para a câmera imersiva, então estou trabalhando da perspectiva dentro do Limite Imersivo.

    Se eu ativar e cozinhar o HDA, um mapa de calor será sobreposto. Isso dá um feedback imediato sobre onde a densidade está em toda a superfície após a redução. A contagem total de triângulos é controlada por esse parâmetro na parte superior.

    E você pode ajustar isso para obter o resultado desejado. Como dito antes, muitas dessas ferramentas dependem de pontos de amostra para avaliar a geometria de vários ângulos. Existe um HDA dedicado para isso chamado Amostras de Limite, que gera pontos dentro do Limite Imersivo.

    Vou criar este novo HDA e atribuí-lo ao HDA Adaptive Reduce.

    Depois que eu atribuir esses pontos, a ferramenta vai reduzir com base nessas posições. Mais triângulos agora são mantidos ao longo das bordas da silhueta, com a quantidade total de triângulos inalterada. Isso é impulsionado pelo parâmetro da silhueta.

    Ajustando esse valor, posso gastar mais ou menos triângulos nesses recursos. Agora as rochas mais distantes. Vou ajustar a ponderação da distância para reter menos geometria, mas ainda reter o suficiente para a silhueta.

    Essa é a configuração básica de muitas dessas ferramentas. Crie um HDA, atribua pontos de amostra e ajuste seus parâmetros para calibrar os resultados.

    Usando esta ferramenta uma vez para o terreno e novamente para todas as rochas, a geometria é otimizada para tudo dentro do primeiro quilômetro. No terreno, ela é reduzida de forma mais agressiva com base na distância, reduzindo gradualmente a densidade de triângulos em direção ao horizonte, enquanto as rochas são simplificadas para reter a maior parte da silhueta, reduzindo todo o resto. Isso otimiza o primeiro quilômetro. Mas e o restante da vista? Nos objetos distantes, utilize uma técnica muito usada no desenvolvimento de jogos. Vamos utilizar outdoors. Há um limite natural para a profundidade em paralaxe que pode ser percebido a longo alcance. Portanto, você não precisa de geometria 3D completa para objetos distantes. No Limite Imersivo, os sinais de profundidade começam a se achatar de 1 a 3 quilômetros. Assim, você pode reduzir essas áreas a uma imagem plana sem muita perda perceptível de profundidade. Essa técnica renderiza objetos 3D complexos em uma geometria plana, orientada para o Limite Imersivo. Nos ambientes grandes, ele pode ser configurado como uma faixa panorâmica que faz a transição perfeita com o resto da cena. Na Lua, escolhi 1 quilômetro para poder salvar ainda mais triângulos, o que me permite inserir ainda mais detalhes nos ativos próximos.

    As técnicas de outdoor geralmente utilizam transparência para manter a geometria simples, mas essa ferramenta cria a silhueta usando a geometria real. Isso significa que a borda corresponde à fonte original, vértice por vértice, sem necessidade de materiais transparentes. Isso pode ser usado em todos os tipos de objeto, desde rochas de superfícies duras até folhagens orgânicas. E funciona lançando cada vértice em direção a uma posição fixa. Então, esses raios colidem com uma forma simples, como uma esfera ou um cilindro, posicionados a uma distância predefinida. À primeira vista, a geometria é uma bagunça. Depois que os pontos são triangulados de novo, você obtém uma silhueta limpa e simplificada que ainda se mantém da perspectiva do espectador. O Vista Billboard HDA lida com toda essa configuração de modo processual. Ele é inserido logo após o trem ser importado do layout de origem.

    Com essa ferramenta, a geometria além de 1 quilômetro cai de vários milhões de polígonos para apenas alguns milhares. Essa malha simplificada é combinada com otimizações anteriores, proporcionando uma visão totalmente otimizada do ambiente.

    Vamos conferir as economias até agora. Com a redução adaptativa da malha e convertendo a geometria distante em outdoors, a contagem de triângulos já caiu para apenas 350.000. Essa é uma queda enorme em relação ao layout original de 100 milhões de polígonos. O ambiente é otimizado para que tudo o que é visível seja muito mais eficiente. O próximo passo é otimizar para o que não está visível usando o descarte de oclusão. Ele elimina a geometria que está completamente oculta, economizando recursos ao não renderizar ou texturizar algo que o espectador nunca verá. Alguns descartes acontecem em tempo de execução, o que pode remover malhas inteiras quando elas não estão visíveis. Mas vamos tornar isso ainda mais fácil de renderizar e remover cada triângulo ocultado diretamente da geometria. A próxima HDA remove triângulos por transmissão de raios com milhões de pontos em todas as direções, testando quais polígonos são visíveis. Se um raio atingir qualquer parte de um triângulo, ele será marcado para ser mantido, mas todo o resto é removido, visualizado aqui em vermelho. Este conjunto de ferramentas inclui dois tipos de descarte: remoção de face oposta e descarte de oclusão. Ambos são executados em conjunto após a redução do polígono.

    Primeiro, remova as faces opostas. Ele usa uma comparação para identificar polígonos voltados para longe do Limite Imersivo. É rápido, confiável e uma ótima primeira passagem. Polígonos descartados aparecem em wireframe, e a economia de triângulos aparece baixo de cada HDA. No caso da Lua, pouco menos de 60 mil são removidos.

    Agora a segunda ferramenta, descarte de oclusão. Ele funde raios de cada posição da amostra para testar a visibilidade. A precisão depende de quantos pontos de amostra você usa e quantos raios são lançados de cada um. Neste exemplo, 110.000 triângulos foram descartados. Isso se soma ao que já foi salvo por descarte de faces opostas. Juntas, essas ferramentas formam uma combinação poderosa. Cerca de 50% dos triângulos restantes são removidos nesta passagem, visualizados aqui em azul, mostrando as bordas atualizadas da geometria. E, do ponto de vista real, é como se nada tivesse acontecido. Vamos conferir os números finais.

    A contagem de triângulos agora é de apenas 180 mil. Em um ambiente com esse nível de complexidade, é um resultado fantástico. Confira uma comparação lado a lado, usando um mapa de profundidade para visualização. Mesmas silhuetas, quase idênticas, mas agora em execução em apenas uma fração da geometria original.

    A verdadeira utilidade de criar seu fluxo de trabalho dessa maneira não está apenas nos números. Está na capacidade de ajustar cada passo do processo. Aumente para obter mais qualidade, diminua para obter mais desempenho. Com uma cadeia de ferramentas processuais, você tem o controle total do processo. Agora que a geometria está otimizada, é hora de fazer o mesmo para o layout UV e as texturas. Pode não parecer à primeira vista, mas mesmo uma paisagem estéril como esta é repleta de detalhes únicos. Dezenas de GB de mapas PBR de alta fidelidade renderizados com iluminação rastreada no passado que abrange todas as superfícies. Portanto, cada pixel de cada ângulo é único. Todos esses dados são um sério desafio.

    Como todo esse detalhe pode ser preservado na geometria otimizada? Começa com os UVs, o sistema de coordenadas 2D que controla o mapeamento de texturas na geometria, e usa o Limite Imersivo para repensar a organização dos dados. Vamos começar bem na borda do Limite Imersivo, isolando apenas os primeiros 5 metros. Os ativos neste espaço podem ser vistos de quase qualquer ângulo. Portanto, a densidade texel precisa ficar consistente em todas as superfícies. É o que mostra este padrão de grade: mapeamento UV baseado em área para que cada superfície se mantenha sob inspeção minuciosa. Agora, fora do limite, as coisas ficam interessantes. Como os ativos são vistos de ângulos e distâncias limitados, o mapeamento comum desperdiça texels em áreas distantes do espectador. Portanto, a estratégia precisa mudar. Em vez de UVs baseados em área, o mapeamento baseado em projeção assume o controle, alinhando as texturas à área da tela dentro do Limite Imersivo.

    Este é o mapeamento de espaço de tela, em que a densidade texel é dimensionada naturalmente com base em como o espectador a vê. Superfícies distantes recebem menos texels, enquanto áreas mais próximas e mais visíveis recebem mais resolução. Para utilizar o mapeamento de espaço de tela, esta próxima ferramenta usa uma técnica chamada projeção esférica. Pense nisso como envolver uma esfera ao redor do espectador e, em seguida, projetar o ambiente nessa superfície. Para que isso funcione para texturas, tanto os UVs quanto as imagens pré-renderizadas precisam falar a mesma língua. Assim, ao renderizar o ambiente de origem, a mesma projeção esférica é usada para a câmera. Isso significa que a imagem se alinha perfeitamente com o layout UV. Vamos tentar aplicar essa configuração à geometria otimizada.

    Primeiras impressões, parece ótimo. Com o wireframe ativado, a geometria e a imagem renderizada estão perfeitamente alinhadas. Mas o que acontecerá se você se levantar e olhar um pouco ao redor?

    Ah, algo não parece certo.

    Na verdade, partes inteiras da paisagem estão faltando na textura. As superfícies estão agarrando o que quer que esteja à sua frente, espalhando pequenas rochas por grandes rochas e grandes rochas por montanhas.

    Em uma experiência imersiva como essa, são necessárias mais informações para cobrir a cena de todos os ângulos. Mas são vários desafios. Primeiro, a sobreposição do UV, visualizada aqui em vermelho. Em ângulos de visão, as superfícies se comprimem no espaço UV, fazendo com que os triângulos se dobrem uns sobre os outros e se empilhem sobre a geometria atrás dele. Portanto, mesmo que uma renderização tenha essas superfícies, os dados não têm onde ser armazenados. O próximo problema é o escalonamento de texel. Ele só é preciso a partir da posição de projeção real. Assim que você se move, a densidade texel começa a quebrar.

    E terceiro, a renderização em si. Uma única captura panorâmica não consegue ver tudo. Algumas superfícies ou carecem de detalhes ou são perdidas completamente. Para resolver isso, projete UVs de vários ângulos, ajuste a posição ideal para cada superfície, dimensione a densidade de texel e corrija UVs sobrepostos ao longo do caminho. É muita coisa. Mas quando você vai por partes, pode espalhar o problema em várias etapas mais fáceis de gerenciar. Você não precisa reduzir a complexidade, só precisa do sistema certo para assumir o controle dela.

    Primeiro, vamos separar a geometria dentro do Limite Imersivo e nos concentrar no restante do ambiente.

    Essa técnica acontece em duas passagens. Primeiro, dividindo a malha em seções menores para que a geometria não fique limitada a uma única projeção UV. É como pré-definir suas ilhas UV, definindo os limites antes que qualquer UV seja realmente criado. Em seguida, cada seção obtém sua própria projeção UV de uma posição personalizada que maximiza a visibilidade. Na Lua, vamos nos concentrar nas rochas novamente, pois elas são as mais desafiadoras. Isso porque nem todos os lados são visíveis de um único ponto de vista. Para ajudar com isso há o HDA Mesh Partition. Ele tenta dividir minimamente a malha no menor número possível de ilhas para que cada uma possa ser vista claramente de pelo menos uma posição. Por exemplo, nesta rocha principal, os rostos são divididos para projetar UVs de ambos os lados, garantindo a resolução necessária. O HDA Multi-Partition se encaixa nesse fluxo de trabalho diretamente após a otimização da geometria. Após as partições, todos eles podem ser processados juntos usando o HDA Multi-Projection.

    Essa ferramenta percorre cada partição criada pelo HDA anterior, projetando UVs do ponto em que aquela parte aparece maior no espaço da tela.

    Ela traça uma linha de volta à origem de cada projeção, mostrando exatamente o ponto no qual os UVs foram criados. Pode parecer um pouco caótico no início, mas quando começa a funcionar, o trabalho pesado já está feito. Vamos ver os resultados.

    Todas as ilhas UV são empilhadas umas sobre as outras, porque cada uma foi alinhada ao centro de sua projeção. Agora eles só precisam ser dispostos e embalados em um atlas UV final.

    Essa é a configuração completa. Com uma passagem cada para as rochas e o terreno, primeiro a malha foi dividida no processo. Depois, novos UVs são projetados em cada seção. O resultado é uma escala texel mais precisa, com sobreposição e distorção mínimas. Com essa configuração, todo o ambiente cabe em apenas duas texturas: uma para o Limite Imersivo dimensionado por área de superfície e outra para tudo além dele. Graças ao dimensionamento do espaço da tela, ambos podem ter tamanhos de textura semelhantes. É uma compressão enorme. Quilômetros de terreno condensados na mesma pegada dos primeiros metros.

    Com a otimização concluída, o ambiente da Lua está pronto para criar imagens pré-renderizadas. Renderização e baking são tópicos detalhados, então aqui o foco será em apenas alguns conceitos de que você precisará para fazer o baking. No Houdini, a criação pode ser feita usando renderizações esféricas. Veja como funciona. Uma projeção esférica temporária mapeia a renderização na geometria. Essa projeção é então incorporada ao layout UV final. Mas lembre-se de que isso captura apenas um ponto de vista. Para preencher os dados ausentes, uma opção é usar um método de projeção que não dependa de visualização.

    Se você já trabalhou em jogos, já deve ter feito isso, criando detalhes de alta polivalência em uma malha de baixa polivalência. É a mesma ideia aqui, projetando diretamente da superfície da geometria de origem no atlas UV otimizado. Isso garante cobertura total em todas as superfícies.

    Ao compor essas técnicas juntas e aplicá-las como um material não iluminado na geometria otimizada, você terá um ambiente totalmente texturizado. De dezenas de gigabytes de texturas de alta resolução, agora até ambientes enormes podem ser compactados em menos de algumas centenas de megabytes, preservando os efeitos visuais de alta qualidade. Está tudo pronto para ser exportado para o Vision Pro. A última etapa é configurar o USD. Mas um USD bem projetado não apenas mantém as coisas arrumadas. Ele permite uma otimização final que pode melhorar ainda mais o desempenho. Após a otimização, o ambiente passa a existir como uma malha única. Se você exportar desse modo, todos os triângulos serão enviados para a GPU em tempo de execução, mesmo que as seções estejam fora da sua visualização. Para reduzir esse custo, ele precisa ser configurado para o descarte de tronco ideal. A hierarquia USD pode ser usada para particionar a cena, permitindo que o renderizador elimine a geometria com base na caixa delimitadora de cada entidade, melhorando o desempenho removendo objetos não visíveis no campo de visão da câmera.

    Veja como isso funciona. O wireframe azul destaca as entidades que são descarregadas da GPU, à medida que o espectador olha ao redor e se move pela cena. Esse fluxo de trabalho usa dois tipos de particionamento, dependendo de a geometria estar dentro ou fora do Limite Imersivo. Temos um HDA personalizado feito para cada um, ambos gerando atributos para definir cada nova partição, lançando as bases para o layout USD. Dentro do limite, a geometria é dividida usando o Boundary Partition, ideal para remover a geometria densa sob os pés. Para tudo fora do limite, o HDA Frustum Partition assume o controle, dividindo a malha em blocos progressivamente maiores, otimizados para que cada um tenha tamanho e espaço de tela relativamente semelhantes. Todas as otimizações até agora foram no nível da superfície, modificando uma tabela de dados de pontos e primitivas, em vez de objetos verdadeiros. Mas o USD requer uma estrutura hierárquica, organizada em transformações, primitivas de malha e subconjuntos de geometria. Antes da exportação, a geometria precisa ser limpa e estruturada em algo que o USD possa interpretar. Nessa configuração, apenas alguns atributos precisam ser levados adiante. Um atributo name torna-se o nome primitivo na hierarquia USD, e as atribuições de grupo definem os subconjuntos usados no descarte de tronco. Os dois HDAs de partição já criaram esses grupos, então eles só precisam ser passados para o USD. Com esses atributos definidos, o restante é simples. Importe a geometria para o Solaris e ative os grupos de subconjuntos e declare seus nomes de grupo personalizados. Suas partições agora são subconjuntos de geometria, prontos para o descarte de tronco em tempo real. O ambiente da Lua começou com geometria densa, texturas maciças e sombreamento complexo. E agora essa otimização está completa. O que começou como renderização cinematográfica agora está pronto tempo real, com um conjunto de ferramentas processuais para conteúdo imersivo. Vamos encerrar analisando o impacto real, como essas otimizações permitem criar uma ampla gama de experiências imersivas.

    Na Lua, a cena começou com mais de 100 milhões de triângulos. Esse número foi reduzido para menos de 200.000, com menos de 100.000 visíveis na tela a qualquer momento, graças ao descarte de tronco. É possível aumentar ainda mais esse número, especialmente para uma cena estática. Mas há outros custos a serem considerados, como sombreamento complexo, personagens animados e elementos interativos. Portanto, manter as contagens de triângulos baixas ajuda a reservar o orçamento para conteúdos mais importantes. Do lado da textura, as projeções esféricas causaram um grande impacto. Elas reduziram todo o ambiente para menos de 250 megabytes de memória de textura. Esse número varia nos seus projetos, mas pode permanecer relativamente consistente, já que a maioria das superfícies é dimensionada para o espaço da tela. Como bônus, você pode usar quantas texturas exclusivas na entrada de origem forem necessárias, já que tudo é resumido ao mesmo atlas de textura no final.

    No lado do objeto, a contagem total de entidades é mantida abaixo de 200 ativos e, em qualquer quadro, normalmente há menos de 100 chamadas de desenho. Isso é possível porque todos os ativos são mesclados e agrupados em partições de malha consistentes, independentemente de quantos objetos únicos você vê inicialmente. As ferramentas usadas neste vídeo foram criadas para serem o mais robustas possível, para reutilizá-las em diversas possibilidades.

    Se você está criando uma experiência de portal, use um conjunto muito semelhante de ferramentas com parâmetros ajustados. Aqui, modificar o HDA de descarte de oclusão removerá triângulos não vistos nas extensões de um portal. Em alguns ambientes, vários limites imersivos podem ser o objetivo. Em vez de recriar a cena para cada posição, você pode usar vários conjuntos de pontos de amostra para otimizar cada experiência imersiva. Com um pequeno ajuste, as ferramentas funcionam igual, dimensionando triângulos e projetando UVs com densidade mínima de texel necessária, permitindo compartilhar uma malha e um conjunto de texturas de ambos os pontos de vista. Cada ambiente em que você trabalha é diferente. Não existe um fluxo de trabalho único. Mas, se você montar uma coleção de ferramentas, poderá escolher a melhor abordagem para cada projeto. Por exemplo, ambientes rochosos como a Lua ou Joshua Tree, cenas atmosféricas como Mount Hood ou Haleakala, ou mesmo interiores de superfície dura como uma sala de conferências ou um teatro. Experiências como essas podem ser criadas com as técnicas discutidas aqui e muito mais. Algumas cenas exigem maior complexidade de sombreador, com a geometria seja reduzida para manter o desempenho em tempo real. Outras, como uma sala de conferência, são modeladas à mão para eficiência desde o início. Então, otimizações pesadas seriam exageradas. Para se aprofundar na configuração técnica, você pode começar com o projeto de amostra incluído. Ele contém o mesmo fluxo de trabalho e ferramentas deste vídeo, e é livre para usar e modificar. O arquivo LEIA-ME contém os detalhes de cada ferramenta, além de alguns HDAs extras de que não falei. Para obter mais orientações sobre otimização específicas da plataforma, consulte "Otimizar seus ativos de 3D para computação espacial". A principal lição é que conteúdo de alta fidelidade não precisa ser caro. No início, os desenvolvedores não conseguiam renderizar todos os detalhes. Eles tiveram que desenvolver técnicas criativas para fazer mais com menos. Esses mesmos princípios podem potencializar seu fluxo de trabalho hoje. Trata-se de otimizar com intenção em conjunto com o processo criativo. Com ótimas ferramentas, você pode ultrapassar os limites do que é possível, criando ambientes que proporcionam uma imersão mais profunda e um forte senso de presença. Obrigado.

    • 0:00 - Introdução
    • Descubra como você pode usar ferramentas de procedimentos para criar belos ambientes imersivos para seu app ou jogo para visionOS. Vamos・€・compartilhar as informações fundamentais para a criação de um ambiente de alta qualidade e, em seguida, vamos explorar o processo de otimização. Saiba como usar uma série de fluxos de trabalho fornecidos pela Apple para a Houdini para reduzir a quantidade・€・de polígonos na cena, limpar a geometria, embalar mapas UV e criar ativos em USD para importar para o Reality Composer Pro ou para o mecanismo de jogo de sua preferência.

    • 3:51 - Preparar para o Vision Pro
    • A criação de conteúdo para Apple Vision Pro requer uma abordagem única devido aos recursos de computação espacial. Você precisa considerar as demandas de renderização do dispositivo ・・ especialmente em imersão total, onde cada pixel é renderizado. Quando alguém está em um ambiente totalmente imersivo, ele aparece dentro de ツum limite imersivo de 3 m de espaço transponível. Esse limite permite otimizar o orçamento gráfico renderizando apenas as partes do ambiente que as pessoas podem ver e mover dentro dessa área.

    • 7:35 - Otimizar a geometria
    • Saiba como utilizar o limite imersivo e aplicar técnicas em Houdini para diminuir o número de polígonos na cena sem diminuir a qualidade da aparência do ambiente.

    • 17:22 - Projeção UV
    • Descubra como você pode otimizar o mapeamento de texturas e a organização de dados para empacotar com eficiência as texturas do ambiente e reduzir ainda mais os custos de renderização.

    • 24:20 - Criar texturas
    • Saiba como usar renderizações esféricas e um método de projeção diretamente da geometria da fonte para o atlas UV otimizado para capturar a cobertura de toda a superfície.

    • 25:38 - Configuração em USD
    • Descubra como exportar o ambiente otimizado para USD para importação no Reality Composer Pro ou no mecanismo de sua preferência.

    • 28:35 - Conclusão
    • Saiba como você pode usar essas mesmas técnicas para criar diversos ambientes, incluindo experiências de portal ou ambientes com vários limites imersivos.

Developer Footer

  • Vídeos
  • WWDC25
  • Otimize seus ambientes personalizados para visionOS
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines