
-
Transfira projetos do SceneKit para o RealityKit
Saiba mais sobre a descontinuidade do SceneKit e descubra como fazer a transição de seus projetos 3D para o RealityKit, o mecanismo 3D avançado recomendado pela Apple. Vamos esclarecer o que a descontinuidade do SceneKit significa para seus projetos, comparar conceitos importantes dos dois mecanismos e mostrar como fazer a portabilidade de um jogo de exemplo do SceneKit para o RealityKit. Também exploraremos o potencial do RealityKit em todas as plataformas compatíveis para ajudar você a criar experiências 3D incríveis em seus apps e jogos.
Capítulos
- 0:00 - Começar
- 5:03 - Principais diferenças
- 8:59 - Conversão de assets
- 11:57 - Composição de cenas
- 15:21 - Animações
- 16:58 - Iluminação
- 18:37 - Áudio
- 21:19 - Efeitos visuais
Recursos
Vídeos relacionados
WWDC25
WWDC24
- Compose interactive 3D content in Reality Composer Pro
- Enhance your spatial computing app with RealityKit audio
WWDC23
-
Buscar neste vídeo...
Olá! Boas-vindas à sessão. Sou Max Cobb, software engineer aqui na Apple. Quero começar fazendo uma breve análise do passado. Se você trabalha com o SceneKit, pode reconhecer um excelente jogo de exemplo que a Apple compartilhou há muitos anos. Nesse projeto, um panda-vermelho, chamado Max, explora uma cenário vulcânico resolvendo enigmas e enfrentando inimigos para salvar seus amigos. O exemplo foi criado com um framework chamado SceneKit, que permitiu aos desenvolvedores criar apps 3D nativos sem precisar inflar seus pacotes com um mecanismo de jogo de terceiros. O SceneKit existe há muitos anos. Na verdade, desde o OS X Mountain Lion. Há 13 anos. Desde então, o ecossistema do desenvolvedor Apple mudou muito. Novos paradigmas de programação, novo hardware e novas plataformas. Ou seja, houve uma grande mudança na maneira como as pessoas criam e interagem com apps. O SceneKit foi projetado com uma arquitetura que fazia muito sentido na época. Mas, à medida que o ecossistema evoluiu, aumentou o desafio de manter o SceneKit atualizado sem inserir mudanças significativas nos apps 3D existentes. Por isso, este ano a Apple está oficialmente descontinuando o SceneKit em todas as plataformas.
Mas o que isso significa para os projetos existentes? Meu app ainda vai funcionar? Preciso reescrevê-lo? O que posso usar? Vamos analisar o que a descontinuidade significa para desenvolvedores SceneKit. Primeiro, você não precisa reescrever seus apps. Essa é uma descontinuidade suave, o que significa que os apps que usam o SceneKit continuarão a funcionar. Porém, se estiver planejando um novo app ou uma atualização importante, o SceneKit não é recomendado.
Segundo, o SceneKit está entrando no modo de manutenção. A Apple só corrigirá erros críticos, então não espere novos recursos ou otimizações no futuro. No momento, não há planos para a descontinuidade definitiva. A Apple avisará aos desenvolvedores com antecedência se isso mudar.
Mas se quiser usar uma tecnologia de ponta da Apple e a combinação de hardware e software líder do setor, a melhor opção é o RealityKit.
O RealityKit é um mecanismo 3D moderno, versátil e de alto nível. Ele é eficiente, acessível e oferece acesso aos padrões de mercado, permitindo criar renderizações belas e realistas com recursos avançados que podem fazer seu app realmente brilhar. É a tecnologia por trás muitos apps de terceiros e recursos do sistema, como a Visualização Rápida no Mac, para visualizar modelos 3D com o toque de um botão. As novas Etiquetas da App Store no iOS 26 são uma das grandes mudanças para tornar seus apps mais fáceis de encontrar. Elas têm ícones 3D estilizados que são renderizados com o RealityKit. Este um exemplo em que a App Store exibiu uma lista de jogos marcados por terem ótimos gráficos 3D. Outra novidade no iOS, o Swift Charts usa o RealityKit para oferecer uma terceira dimensão às visualizações de dados.
E o RealityKit não só é usado no visionOS: é a espinha dorsal dessa plataforma. Tudo no visionOS usa o RealityKit, incluindo os botões dos apps e as janelas que os contêm. O RealityKit faz o conteúdo do app parecer realmente presente no ambiente real.
O RealityKit integra a SwiftUI, o que é perfeito para desenvolvedores que usam essa estrutura. Ele é compatível com: visionOS, iOS, macOS, iPadOS e, este ano, o RealityKit está chegando a uma nova plataforma: o tvOS, trazendo outro destino para apps e conteúdos criados com o RealityKit. Esse framework também apresenta este ano vários recursos novos e avançados. Para saber mais, confira a sessão "Novidades no RealityKit" do meu colega Lawrence Wong. No sessão de hoje, vou explicar como o RealityKit funciona em comparação com o SceneKit, as diferenças, as novas possibilidades e como se basear no SceneKit para começar a usá-lo. Também quero deixar meu jogo mais moderno, pronto para novos recursos e plataformas que estou considerando. Durante a sessão, vou explicar como transferi esse jogo divertido do SceneKit para o RealityKit. O código de exemplo completo desse projeto está disponível para download e análise. Aqui está a programação. Começarei explicando as diferenças conceituais entre esses dois mecanismos de renderização e como interagir com eles. Em seguida, não existe jogo 3D sem recursos legais. Vou explorar formas de converter ativos do SceneKit no formato escolhido para RealityKit. Vou mostrar ferramentas úteis para compor cenas do RealityKit e começar a comparar os recursos do SceneKit e do RealityKit lado a lado, começando com animações. Vou criar um visual estiloso com luzes dinâmicas, adicionar imersão e personalidade com áudio personalizado e aplicar efeitos visuais, como o pós-processamento de partículas. Tudo de que preciso para transferir um jogo como o meu do SceneKit para o RealityKit. Vamos então começar. Em termos de conceitos, vou me concentrar em quatro áreas principais: arquitetura, sistemas de coordenadas, ativos e visualizações. Na arquitetura, o SceneKit se baseia em nós. Isso significa que cada objeto na cena é um nó, e esses nós têm comportamentos predefinidos na forma de propriedades.
Cada nó tem propriedades para recursos, incluindo geometria, animações, áudio, física e luzes.
Por exemplo, quando crio um nó vazio, ele não tem geometria nem propriedades especiais e está posicionado na origem do nó principal.
Para renderizar Max em meu jogo, posso atribuir o modelo à propriedade geometry de um nó. Quando Max caminha pela cena, o app está atribuindo um reprodutor de animação ao nó e executando-o.
Os passos que você ouve vêm de um reprodutor de áudio, também atribuído ao mesmo nó.
É assim que funciona uma arquitetura baseada em nós. Tudo gira em torno do nó e suas propriedades. Por outro lado, o RealityKit usa um padrão de design chamado Entity Component System, ou ECS. Isso significa que cada objeto na cena é uma entidade. Eu modifico seu comportamento anexando componentes a ela. Todo comportamento no RealityKit é um componente.
Desde sua transformação até comportamentos avançados como física, partículas e até portais. A lista aumenta à medida que o RealityKit evolui. Os novos componentes deste ano incluem componentes de apresentação de imagens e gestos. Essas são as diferenças de arquitetura que você deve ter em mente ao transferir apps do SceneKit para o RealityKit. A próxima é fácil. Ao começar a usar um novo mecanismo de renderização, é essencial entender o sistema de coordenadas.
Os sistemas de coordenadas são fáceis de adaptar entre o SceneKit e o RealityKit porque são iguais. Em ambos os sistemas, o eixo x aponta para a direita, o eixo y aponta para cima e z está na direção da câmera.
Para ativos, o SceneKit é flexível nos formatos de modelo aceitos, e o mecanismo os serializa em arquivos SCN. Isso é conveniente, mas não é um padrão unificado no mercado. A maioria dos formatos é proprietária com suporte a recursos variados, trazendo mais complexidade aos pipelines de ativos.
O RealityKit, por outro lado, é projetado em torno de um padrão aberto chamado Universal Scene Description, ou USD.
É um formato introduzido pela Pixar em 2012 com o objetivo de resolver algumas dificuldades no pipeline de criação de ativos, incluindo troca de dados e colaboração. Esse é o padrão preferencial da Apple em todas as plataformas. Vou precisar converter alguns arquivos SCN em USD para meu jogo, então vou explorar esses detalhes daqui a pouco. Antes disso, a última diferença básica que quero destacar são as visualizações. As visualizações são elementos fundamentais que representam uma parte da interface de um app. No caso do SceneKit e do RealityKit, é uma janela de visualização que renderiza conteúdo 3D.
Com o SceneKit, posso renderizar conteúdo por meio de uma SCNView, ou uma SceneView se estiver usando SwiftUI. Há também uma ARSCNView, que me permite renderizar objetos virtuais no mundo real com ARKit. Com o RealityKit, o caminho é simples: o conteúdo é renderizado por meio de uma RealityView, que foi projetada para oferecer todas as vantagens que temos com a SwiftUI. Posso renderizar cenas totalmente virtuais ou colocar objetos no mundo real apenas com esta visualização. O mesmo conteúdo é implantado e se adapta a todas as plataformas Apple compatíveis, e até executa renderização estereoscópica no visionOS automaticamente, sem mudanças no código. Portanto, estes são os principais conceitos que você deve ter em mente na transição para o RealityKit: arquitetura, sistemas de coordenadas, suporte a ativos e visualizações. Em seguida, todo grande jogo precisa ter bons ativos. Vamos verificar o que tenho atualmente no meu jogo. Dentro do catálogo de ativos de arte, tenho uma coleção de modelos 3D. Esses modelos estão no formato de arquivo SCN. Isso é ótimo para um projeto do SceneKit, mas preciso converter todos esses ativos em USD para usá-los no RealityKit. Vou mostrar algumas opções. Se você tem os modelos no formato original, essa seria a melhor escolha. É provável que sua ferramenta de criação de conteúdo digital, ou DCC, ofereça suporte a USD. Estou usando o Blender, então posso exportar o ativo diretamente para esse formato.
Se você não tiver os arquivos originais, há outras opções para converter seu ativo SCN existente diretamente em USD. Um método, e provavelmente o mais fácil, é diretamente no Xcode. Para isso, selecione um ativo. Vou escolher enemy1 desta vez. Depois, acesse File, Export.... Nas opções de exportação, escolha um pacote Universal Scene Description, que é um tipo de arquivo USD compactado.
Os resultados desse tipo de exportação podem variar conforme o ativo. Para a maioria dos modelos do meu jogo, funciona bem. Você também pode ter animações em arquivos SCN separados, que é um padrão comum no SceneKit. Por exemplo, no meu jogo do SceneKit, animações do personagem principal, como caminhar, pular e girar, ficam em arquivos separados sem geometria. Mas como exportar as animações para USD e aplicá-las novamente à geometria? Felizmente, a Apple atualizou uma CLI que vem com o Xcode 26 chamada ferramenta SCN para ajudar nesse processo. Vou mostrar como usá-la. Posso invocar a ferramenta SCN digitando xcrun scntool.
Isso exibe uma lista de opções disponíveis. Para converter, posso digitar xcrun scntool --convert, especificando o arquivo max.scn neste caso. E --format usdz como o tipo de saída. Isso converteria o arquivo SCN em USD da mesma forma que fiz anteriormente no Xcode. Para acrescentar a animação, uso --append-animation para cada arquivo de animação SCN que desejo exportar. Neste caso, max_spin.
E salvo na Mesa.
Vamos conferir o arquivo convertido.
Ótimo, minha geometria tem as informações de animação no formato USD. Fiz isso para todos os ativos e os organizei de uma forma que funciona bem no meu fluxo de trabalho preferido. Agora posso começar a montar o jogo. O que me leva ao próximo tópico: composição de cena. Com a versão em SceneKit, o editor do SceneKit em Xcode me ajudou a juntar as peças. O RealityKit também tem uma ferramenta para isso, chamada Reality Composer Pro. O Reality Composer Pro fica entre o Xcode e minha DCC preferida, como Blender ou Maya. Posso usá-lo para compor minha cena, adicionar componentes a entidades, criar e modificar shaders e preparar a cena para Xcode. Posso trazer todos os meus ativos USD recém-criados e começar a montar o jogo novamente. O Reality Composer Pro vem com o Xcode. Vou abri-lo agora.
Vou criar meu projeto com o nome PyroPanda.
O Reality Composer Pro fornece uma cena padrão sem conteúdo. Em seguida, posso arrastar todos os ativos recém-convertidos para o projeto.
Para adicionar os ativos à cena, posso clicar com o botão direito e selecionar Add to Scene.
Ou posso arrastar um ativo, como o Max, do navegador do projeto para a janela de visualização.
Depois disso, é fácil reposicionar as entidades. Posso usar esse Gizmo para colocar o Max no ponto inicial do jogo. Mais ou menos ali. O Reality Composer Pro é ótimo para compor minha cena de forma visual e me permite editar materiais, shaders, partículas, luzes e muito mais. Como eu disse, o Reality Composer Pro fica entre minha ferramenta de criação de conteúdo digital e o Xcode. Agora, preciso trazer o conteúdo para meu app. Essa é a próxima tarefa. O projeto Reality Composer Pro é um pacote Swift. Posso adicioná-lo como uma dependência local em Xcode. Vou acessar minhas dependências de pacote de projeto, clicar em Add Local...
e selecionar meu app como destino.
No arquivo Swift de visualização de conteúdo, preciso importar o RealityKit e o novo pacote, PyroPanda, na parte superior.
Em minha ContentView, adicionarei uma RealityView.
Em seguida, preciso carregar a cena como uma entidade, especificando que ela vem do pacote.
Finalmente, adiciono a nova entidade ao conteúdo do RealityView.
Também adicionarei um controle de câmera apenas para mostrar o resultado.
Mais cedo, trabalhei na criação da cena com o Reality Composer Pro. Aqui está o resultado da composição. Adicionei os modelos restantes, atribuí as texturas e criei os shaders dinâmicos para a lava, plantas e um dos inimigos, adicionando mais personalidade ao ambiente vulcânico. Você pode conferir o código de exemplo completo para ver como cada parte da cena foi criada. O Reality Composer Pro permite fazer muitas coisas. Para saber mais, recomendo conferir uma destas duas sessões de anos anteriores da WWDC. Isso está começando a criar forma. Agora farei o pequeno Max ganhar vida com alguma animação. Quando converti o Max antes, também acrescentei uma animação. Quando um arquivo USD tem animações, o RealityKit as expõe em um AnimationLibraryComponent. Isso facilita o acesso e a reprodução das animações em minhas entidades. Faço referência às animações diferentes de um único arquivo USD chamado "Max". No Reality Composer Pro, posso ver as referências no inspetor.
Posso disparar cada animação no meu projeto pelo nome especificado neste componente.
Na versão do SceneKit deste jogo, foi assim que reproduzi a animação de rotação. Primeiro, encontrei o Max_rootNode na minha cena e carreguei a spinAnimation separadamente. Depois, percorri a cena de animação até encontrar o reprodutor de animação SCN e salvei uma referência a ele. Em seguida, adicionei o animationPlayer ao Max, com a referência "spin", e reproduzi a animação no nó. No RealityKit, acessar a animação via AnimationLibraryComponent torna isso conveniente. Primeiro, encontro a entidade Max pelo nome, apenas "Max" neste caso. Depois, pego o AnimationLibraryComponent do conjunto de componentes de Max e seleciono o nome da animação desejada. Finalmente, reproduzo-a na entidade. À medida que Max navega pela cena, meu app completo reproduz diferentes animações que representam o movimento. Confira o código-fonte do app para ver como tudo isso se conecta. Algo que adiciona um elemento de realismo e humor a qualquer cena é a iluminação. Quando bem aplicada, a diferença pode ser noite e dia. A iluminação no meu app pode ser completamente alcançada com o Reality Composer Pro sem código adicional. Vamos ver a aparência. Para adicionar uma luz, toco no ícone de inserção aqui, na parte inferior da minha hierarquia de entidades, e seleciono uma luz direcional.
Esta é uma entidade vazia com apenas um componente de luz direcional. Para esse tipo de luz, apenas a orientação muda a forma como ela ilumina outras entidades na cena.
Vou posicioná-la aqui apenas para clareza visual, e girar em torno do eixo x.
A luz parece boa, mas está faltando alguma coisa. Não há sombras! Na lista de componentes, posso adicionar um componente de sombra de luz direcional marcando esta caixa.
Do ponto inicial, posso ver como o terreno e o Max estão lançando sombras sobre o resto da cena. Obter o mesmo com código é muito semelhante. Para o SceneKit, crio um SCNLight, defino o tipo como direcional e atribuo castShadow como true. Em seguida, crio um novo nó e atribuo a luz à propriedade light do nó.
Para o RealityKit, crio uma entidade com dois componentes: um de luz direcional e um de sombra de luz direcional. Uma luz direcional é uma das opções de luz disponíveis no RealityKit. Outras incluem luzes pontuais, holofotes e luzes baseadas em imagem, que usam texturas para iluminar a cena. Meu jogo está parecendo visualmente mais dinâmico agora, então adicionarei alguns elementos audíveis para aumentar um pouco o engajamento. Vamos verificar a faixa de áudio ambiente que está em loop constante na cena. Em meu projeto SceneKit, primeiro carrego o arquivo de áudio ambiente como fonte de áudio. Depois, posso modificar as propriedades dessa fonte para alterar a reprodução. Quero que ela faça um loop e não quero que seja posicional na cena nem espacial. Isso significa que o volume de reprodução de áudio não muda com base na distância da câmera principal ao nó de origem. Por fim, adiciono um reprodutor de áudio ao nó do terreno, iniciando a reprodução. No RealityKit, posso acessar arquivos de áudio quase da mesma forma que acesso animações: por meio de componentes. O componente desta vez é chamado AudioLibraryComponent. Posso configurar a reprodução de áudio totalmente no Reality Composer Pro, em vez de fazer tudo no tempo de execução do app. Vamos ver como fica a configuração. Já anexei um AudioLibraryComponent à entidade do terreno com uma referência ao arquivo de áudio ambiente. Como não quero que a reprodução pareça vir de uma fonte específica, posso adicionar um componente de áudio ambiente à mesma entidade. Esse recurso de áudio é bem longo, e o comportamento padrão do RealityKit será pré-carregar toda a faixa na memória em tempo de execução. Mas posso alterá-lo para transmitir o recurso de áudio à medida que é reproduzido.
Quando a faixa terminar, quero que a reprodução recomece do início, então vou marcar a caixa de seleção Loop.
Agora tudo está conectado, e o áudio está pronto para reprodução no RealityKit. Há duas maneiras de fazer isso. A primeira é por meio do AudioLibraryComponent.
Posso começar buscando o AudioLibraryComponent no conjunto de componentes do terreno, fazer referência ao audioResource ambiente pelo nome e reproduzi-lo na mesma entidade do terreno. O RealityKit vê os ajustes que adicionei com o Reality Composer Pro. Com isso, automaticamente faz o loop e transmite o áudio como uma faixa ambiente. Ou posso usar um truque de uma ação de entidade interna chamada PlayAudioAction.
Com essa abordagem, o PlayAudioAction examina o AudioLibraryComponent da entidade de destino e localiza o nome do arquivo de áudio.
Converto essa ação em uma animação e a reproduzo na mesma entidade de terreno.
As ações de entidade são realmente úteis para minimizar o código real no meu app.
Uso essa ação e algumas outras para vários eventos no meu jogo. Por exemplo, sempre que o personagem principal pula ou ataca.
Para a etapa final que abordarei nesta sessão, vamos verificar os efeitos visuais incluídos no jogo. Os efeitos visuais transformam uma cena 3D de algo preciso em uma experiência emotiva. Começando com partículas, tenho alguns efeitos de partículas muito legais que foram montados para o jogo original diretamente do editor SceneKit no Xcode. Essas partículas são salvas como arquivos de partículas SCN. Não há uma ferramenta para converter diretamente esses arquivos em algo compatível com RealityKit, mas posso criar efeitos com ajustes muito semelhantes usando o Reality Composer Pro. Vamos ao Reality Composer Pro e ver como são as partículas de edição. Prefiro manter minhas partículas como arquivos USD separados, então posso adicionar um novo arquivo clicando aqui no Reality Composer Pro. Vou nomeá-lo como volcano_smoke.
Posso adicionar um componente emissor de partículas à entidade raiz do arquivo.
Agora, ao pressionar o botão de reprodução acima dos componentes, as partículas padrão começam a aparecer.
Há alguns pré-ajustes que posso escolher, incluindo um dos meus favoritos: Impact.
Esse pré-ajuste tem uma boa textura para fumaça. É um ótimo ponto de partida para o efeito. Esses ajustes podem ser familiares para quem vem do SceneKit, com pequenas diferenças.
Comparei os ajustes no Reality Composer Pro com os das partículas do jogo original no SceneKit e consegui um efeito de fumaça de vulcão no RealityKit semelhante ao do SceneKit.
Terminei e vou arrastar isso para minha cena principal e ver como fica com todos os outros modelos.
Ótimo! Era exatamente o que eu queria. A etapa final é o pós-processamento. É nesse ponto que você faz os retoques finais, com uma última verificação da renderização antes que ela apareça no app.
No jogo original, a câmera tinha um forte efeito de realce, fazendo luzes brilhantes se espalharem pela cena. Isso adiciona um brilho suave e radiante que melhora a atmosfera sobrenatural do jogo.
Isso foi obtido modificando algumas propriedades na câmera ativa da cena. Embora seja prático, os desenvolvedores e, principalmente, os de jogos geralmente preferem ter um controle rígido sobre esses efeitos, para fins de desempenho e preferências artísticas.
Mas e o RealityKit?
Embora uma propriedade simples para criar esse efeito não esteja disponível no RealityKit, a partir deste ano, você poderá adicionar efeitos de pós-processamento ao RealityViews no iOS, iPadOS, macOS e tvOS. Isso requer configuração, mas não significa que você precisa escrever todos os shaders Metal do zero. A Apple tem shaders de desempenho Metal altamente otimizados que você pode usar para começar. Criarei um efeito de realce usando a API de pós-processamento, que posso adicionar ao jogo. Começando com a textura original do jogo, quero extrair os destaques e gravá-los em uma textura separada. Aplico um desfoque para suavizar as bordas e, por fim, componho essa textura desfocada sobre a original para criar o efeito de realce.
Para fazer isso no meu app, preciso definir um tipo, BloomPostProcess, que é compatível com PostProcessEffect.
Dentro do método postProcess, crio uma textura temporária do Metal para escrever alguns dados de realce. Em seguida, posso usar um shader de desempenho para extrair apenas as partes mais brilhantes da imagem, que vai ser a origem do realce. Desfoco essa área usando um desfoque gaussiano. Por fim, coloco essa imagem desfocada sobre a textura original. O código completo dessas etapas está disponível no download.
Para aplicar esse efeito ao RealityView, posso criar uma instância da nova classe BloomPostProcess e aplicá-la aos efeitos de renderização.
Isso adiciona um belo toque final ao meu jogo. O ambiente fica mais vibrante, criando uma experiência de jogo incrível. Meu app agora criou forma com o RealityKit. Ele é executado da mesma forma no iOS, iPadOS, macOS e tvOS. Com uma única base de código e uma cena do RealityKit, posso abrir o app em todas essas plataformas no mesmo instante. Vou mostrar a execução do jogo na plataforma mais recente do RealityKit, o tvOS, com suporte a controle.
Agora posso jogar o jogo RealityKit na Apple TV em casa.
No visionOS, posso fazer algo ainda mais especial. Ao colocar a cena em uma visualização de imersão progressiva, posso adicionar um portal que exibe o mundo PyroPanda em 3D bem na minha frente.
Esse tipo de experiência só é possível com o RealityKit e o visionOS.
Vamos verificar o que foi abordado hoje. O SceneKit foi descontinuado. Embora isso seja relevante, não significa que você precisa se preocupar com seus apps do SceneKit tão cedo. O melhor caminho a seguir é o RealityKit, que traz possibilidades únicas para seus apps e jogos. Abordei as principais diferenças em termos de conceitos e ferramentas disponíveis para desenvolvedores do RealityKit, além de como migrei um jogo do SceneKit para o RealityKit.
Não deixe de conferir estas sessões para facilitar sua jornada na criação de apps e jogos incríveis com o RealityKit, além de sessões de anos anteriores e a documentação do RealityKit. No download deste app de exemplo, há mais detalhes sobre áreas que não tive tempo de abordar hoje, como movimento de câmera, movimento do personagem e controles do jogo. A tecnologia está sempre evoluindo. A Apple quer que a descontinuidade do SceneKit seja a mais tranquila possível para os desenvolvedores. Mal podemos esperar para ver o que os desenvolvedores do SceneKit criarão com o RealityKit no futuro. Agradeço sua participação. Aproveite o restante da conferência.
-
-
16:33 - Animations in RealityKit
// RealityKit guard let max = scene.findEntity(named: "Max") else { return } guard let library = max.components[AnimationLibraryComponent.self], let spinAnimation = library.animations["spin"] else { return } max.playAnimation(spinAnimation)
-
18:18 - Directional Light Component in RealityKit
// RealityKit let lightEntity = Entity(components: DirectionalLightComponent(), DirectionalLightComponent.Shadow() )
-
24:37 - Create Bloom effect using RealityKit Post processing API
final class BloomPostProcess: PostProcessEffect { let bloomThreshold: Float = 0.5 let bloomBlurRadius: Float = 15.0 func postProcess(context: borrowing PostProcessEffectContext<any MTLCommandBuffer>) { // Create metal texture of the same format as 'context.sourceColorTexture'. var bloomTexture = ... // Write brightest parts of 'context.sourceColorTexture' to 'bloomTexture' // using 'MPSImageThresholdToZero'. // Blur 'bloomTexture' in-place using 'MPSImageGaussianBlur'. // Combine original 'context.sourceColorTexture' and 'bloomTexture' // using 'MPSImageAdd', and write to 'context.targetColorTexture'. } } // RealityKit content.renderingEffects.customPostProcessing = .effect( BloomPostProcess() )
-
-
- 0:00 - Começar
A Apple está oficialmente descontinuando o SceneKit em todas as plataformas. Os apps e jogos do SceneKit continuarão funcionando, mas receberão apenas correções de bugs críticos no futuro. Recomenda-se que os desenvolvedores usem o RealityKit, um mecanismo de 3D moderno e eficiente que potencializa o SwiftUI e é compatível com visionOS, iOS, macOS, iPadOS e, agora, tvOS.
- 5:03 - Principais diferenças
O SceneKit e o RealityKit são mecanismos de renderização em 3D da Apple. O SceneKit é baseado em nós, com propriedades para geometria, animações, áudio, física e luzes. O RealityKit usa o Entity Component System (ECS), em que as entidades são modificadas pela adição de componentes. Ambos os mecanismos usam o mesmo sistema de coordenadas destro. O SceneKit usa arquivos SCN proprietários, enquanto o RealityKit emprega o USD, um padrão de mercado aberto.
- 8:59 - Conversão de assets
Ao fazer a transição para o RealityKit, considere a arquitetura, os sistemas de coordenadas, o suporte a ativos e as visualizações. Os ativos, em especial os modelos 3D, precisam ser convertidos do formato SCN para USD. A melhor opção é exportar diretamente da ferramenta DCC original, como o Blender. Se os arquivos originais não estiverem disponíveis, o Xcode oferece uma função de exportação, mas os resultados possam variar. Para animações em arquivos SCN separados, a CLI da ferramenta SCN fornecida com o Xcode 26 pode ser usada para converter e acrescentar animações a arquivos USDZ.
- 11:57 - Composição de cenas
O Reality Composer Pro, uma ferramenta incluída no Xcode, facilita a composição de cenas para projetos do visionOS. Ele permite que os usuários importem ativos em USD, organizem entidades, editem materiais, shaders e luzes e preparem cenas para o Xcode.
- 15:21 - Animações
Veja como animar o personagem 3D Max, do SceneKit, no RealityKit. Depois de converter o Max para um arquivo USD com animações, o exemplo acessa essas animações por meio do AnimationLibraryComponent no Reality Composer Pro. Isso simplifica o processo em comparação com a versão anterior do SceneKit, onde as animações precisavam ser carregadas e gerenciadas separadamente. Agora, é fácil encontrar a entidade Max, selecionar a animação desejada pelo nome e reproduzi-la no app.
- 16:58 - Iluminação
A iluminação no Reality Composer Pro é uma ferramenta poderosa que pode melhorar o realismo e o clima em uma cena. Usando o app, é possível adicionar luzes direcionais, ajustar sua orientação e ativar sombras para criar profundidade e dimensão. O processo é semelhante no SceneKit e no RealityKit. O RealityKit oferece vários tipos de luz, incluindo luzes de ponto, holofote e baseadas em imagem.
- 18:37 - Áudio
O projeto SceneKit aumenta o engajamento do jogo ao adicionar áudio ambiente. Ele carrega um arquivo de áudio como fonte, configura-o para reproduzir em loop de forma não espacial e o anexa ao nó de terreno. No RealityKit, o processo é semelhante: anexe um AudioLibraryComponent à entidade do terreno e adicione um componente de áudio ambiente para desativar o áudio posicional. Para otimizar o uso da memória, defina o áudio para transmissão.
- 21:19 - Efeitos visuais
Esta última seção aborda como usar efeitos visuais no RealityKit à medida que você traz o projeto do SceneKit. O exemplo começa mostrando como criar efeitos de partículas no Reality Composer Pro, usando um arquivo USD chamado 'volcano_smoke'. O desenvolvedor compara os ajustes do Reality Composer Pro com os do SceneKit, permitindo que eles obtenham um efeito semelhante à fumaça de vulcão no RealityKit. O exemplo passa, então, para o pós-processamento, que adiciona os retoques finais à saída renderizada. Na versão original do jogo no SceneKit, um efeito de bloom foi usado para criar um brilho suave e radiante ao redor de luzes intensas. Embora o RealityKit não tenha uma propriedade simples para esse efeito, agora é possível adicionar efeitos de pós-processamento ao RealityViews usando a API de pós-processamento. O exemplo cria um efeito de bloom personalizado ao extrair realces, desfocá-los e compô-los de volta à textura original. Esse efeito melhora o ambiente do jogo, tornando-o mais vibrante. Demonstra-se, então, o jogo rodando-o em várias plataformas da Apple, incluindo iOS, iPadOS, macOS e tvOS, mostrando os recursos multiplataforma do RealityKit.