Novidades do ARKit 2.0

Duas semanas se passaram desde o final da conferência da WWDC. As sessões foram assistidas, a documentação foi relida, os projetos de demonstração foram concluídos, o que significa que você pode preencher todas as informações coletadas em um artigo.



Na primeira versão do ARKit, foi possível rastrear o movimento do telefone no espaço, determinar a quantidade e o calor da luz ao redor e também obter informações sobre planos horizontais. O ARKit 1.5, lançado com o iOS 11.3, melhorou a qualidade da imagem, adicionou a definição de planos verticais, o reconhecimento de imagens estáticas em 2D e o foco automático. Vamos ver o que foi adicionado na versão 2.0.


Salvando e restaurando uma placa AR


Nos foi dada a oportunidade de salvar o mapa do ambiente junto com os objetos espaçados da realidade aumentada. Tendo um cartão, você pode inicializar usando uma sessão de recuperação garantida, após a qual os objetos colocados anteriormente aparecerão nos lugares certos. O cartão salvo também pode ser transferido para o servidor e usado em outros dispositivos.


Ele é implementado da seguinte maneira: ARSession tem o método getCurrentWorldMapWithCompletionHandler , que retorna ARWorldMap . As informações sobre os pontos de controle são armazenadas dentro deste objeto, com a ajuda do qual o ARKit pode restaurar a coordenada zero da cena, bem como uma matriz ARAnchors à qual os objetos podem ser anexados. ARWorldMap pode ser salvo ou enviado para algum lugar. Para restaurar um mapa, você precisa transferi-lo para o campo initialWorldMap do ARSessionConfiguration antes de iniciar a sessão. Após o início, o status da sessão mudará para .limited com o motivo .relocalizing . Assim que o ARKit coletar pontos suficientes para restauração, a coordenada zero será definida na posição correta e o status da sessão mudará para o estado .normal .


Para um melhor desempenho, a Apple recomenda o seguinte:


  • Digitalize a cena de diferentes ângulos. A matriz de pontos será maior e mais precisa;
  • o ambiente deve ser estático e bem texturizado;
  • Uma matriz de pontos deve ser bastante densa.

Você não precisa monitorar esses parâmetros, já que agora o ARFrame possui um campo worldMappingStatus . Mas você precisa considerá-los ao projetar o aplicativo.


Realidade Aumentada para Multijogadores


O mecanismo de economia de mapa do ambiente permitiu sincronizar o sistema de coordenadas entre vários dispositivos. Conhecendo a posição de cada um dos dispositivos em relação ao mapa do ambiente, você pode criar cenários para vários usuários.


Na apresentação, o jogo SwiftShot foi mostrado, no qual você precisa atirar do estilingue no estilingue de um oponente.



O jogo está escrito em Swift + SceneKit. As ações do usuário são sincronizadas usando a estrutura MultipeerConnectivity . As fontes do aplicativo podem ser baixadas aqui .


Reflexão ambiental


Adicionando um objeto metálico de realidade virtual à cena, eu gostaria de ver nele um reflexo dos objetos do mundo real. Para fazer isso, o ARWorldTrackingConfiguration um campo environmentTexturing . Se você usar o SceneKit como mecanismo e definir o campo environmentTexturing como .automatic , obterá o seguinte resultado:



Recebendo a imagem da câmera, o ARKit cria um mapa cúbico com a textura do ambiente. As informações que não caíram no quadro são geradas usando algoritmos de aprendizado de máquina.


Rastrear imagens em movimento 2D


No ARKit 1.5, o rastreamento apenas de imagens estáticas apareceu. Na segunda versão, a restrição é removida e agora você pode obter as coordenadas das imagens em movimento. Funcionalidade semelhante costumava ser fornecida pelo Vuforia SDK. Na apresentação, como exemplo de uso, eles mostraram a substituição de fotos em um vídeo em uma moldura:



Para um melhor rastreamento, você precisa usar imagens contrastantes e bem texturizadas, com recursos distintos. O Xcode irá avisá-lo se esse requisito não for seguido.


Para rastrear imagens, você precisa usar ARImageTrackingConfiguration . A matriz trackingImages é passada para a configuração e maximumNumberOfTrackedImages . As coordenadas da imagem serão retornadas como ARImageAnchor .


Rastreando objetos 3D estáticos


Também foi adicionado suporte ao reconhecimento de objetos 3D estáticos. Antes do reconhecimento, o objeto deve ser verificado. Você pode fazer isso usando um aplicativo da Apple . O objeto a ser digitalizado deve ser sólido, fosco e bem texturizado.


Para rastrear objetos, crie um ARReferenceObject a partir de um diretório de arquivo ou recurso e adicione-o ao ARWorldTrackingConfiguration.detectionObjects . Informações sobre os objetos que você receberá no ARFrame .


Como exemplo, a apresentação mostrou a exibição de informações sobre a estatueta no museu em realidade aumentada.


Rastreamento de rosto


Nas versões anteriores, era possível obter as coordenadas e a rotação da face, a malha poligonal da face e uma série de misturas (51 emoções com progresso de zero a uma). Na segunda versão, veremos três inovações:


definição de luz direcional.


O ARKit 2 usa uma imagem de rosto como fonte de informação de luz. Com ele, você pode determinar a intensidade, temperatura e direção da luz. Isso tornará as máscaras mais realistas;


rastreamento de idioma.


Uma línguaOut foi adicionada aos tongueOut , que mostra o [0,1] grau de "altura" da língua. De mim mesmo, posso acrescentar que quase todos os meus amigos tentaram mostrar o idioma, a quem eu brincava com animoji;


rastreamento ocular.


O ARFaceAnchor possui três novos campos: leftEyeTransform , rightEyeTransform e lookAtPoint . Já existem demos na Internet com exemplos de uso:



Melhorias gerais na nova versão:


  • a inicialização e a definição de planos se aceleraram;
  • o rastreamento do telefone no espaço e a determinação de aviões se tornaram mais precisos;
  • a precisão de determinar os limites dos planos com a expansão do avião melhorou;
  • Suporte de proporção de aspecto 4: 3 adicionado (agora esse formato será selecionado por padrão).

Todas as melhorias, exceto a transição para uma proporção de 4: 3, serão aplicadas aos seus aplicativos automaticamente. Para o último, você precisa recriar o aplicativo com o novo SDK.




Se a informação foi útil para você, me apoie com a seta para cima. E eu estou pronto para responder perguntas nos comentários.

Source: https://habr.com/ru/post/pt415277/


All Articles