Profundidade adiciona realismo

Guias específicos para cada plataforma

Como desenvolvedor de apps de RA, você quer misturar o virtual com o real para seus usuários. Quando um usuário coloca um objeto virtual na cena, ele quer que ele pareça pertencer ao mundo real. Se você está criando um aplicativo para usuários comprarem móveis, quer que eles tenham certeza de que a poltrona que estão prestes a comprar se encaixará no espaço deles.

A API Depth ajuda a câmera de um dispositivo a entender o tamanho e a forma dos objetos reais em uma cena. Ele cria imagens ou mapas de profundidade, adicionando uma camada de realismo aos seus apps. Você pode usar as informações fornecidas por uma imagem de profundidade para possibilitar experiências do usuário imersivas e realistas.

Casos de uso para desenvolvimento com a API Depth

A API Depth pode oferecer oclusão de objetos, imersão aprimorada e interações inovadoras que aumentam o realismo das experiências de RA. Confira a seguir algumas maneiras de usar o recurso nos seus projetos. Para conferir exemplos de profundidade em ação, confira as cenas de exemplo no Laboratório de profundidade do ARCore, que demonstra diferentes maneiras de acessar dados de profundidade. Este app do Unity é de código aberto no Github.

Ativar a oclusão

A oclusão, ou renderização precisa de um objeto virtual atrás de objetos do mundo real, é fundamental para uma experiência imersiva de RA. Considere um Andy virtual que um usuário pode querer colocar em uma cena que tenha um tronco ao lado de uma porta. Renderizado sem oclusão, o Andy se sobrepõe de maneira irrealista à borda do tronco. Se você usar a profundidade de uma cena e entender a distância entre o Andy virtual e os elementos do cenário, como o baú de madeira, poderá renderizar o Andy com precisão e oclusão, fazendo com que ele pareça muito mais realista no ambiente.

Transforme um cenário

Mostre ao usuário um mundo novo e imersivo renderizando flocos de neve virtuais para se acomodar nos braços e almofadas dos sofás ou cobrindo a sala de estar com uma névoa. Você pode usar a profundidade para criar uma cena em que as luzes virtuais interagem, se escondem atrás e acendem objetos reais.

Distância e profundidade de campo

Precisa mostrar que algo está longe? Você pode usar a medição de distância e adicionar efeitos de profundidade de campo, como desfocar o plano de fundo ou o primeiro plano de uma cena com a API Depth.

Ativar interações do usuário com objetos de RA

Permita que os usuários "toquem" o mundo pelo app, permitindo que o conteúdo virtual interaja com o mundo real por meio de colisões e física. Faça objetos virtuais passarem por obstáculos do mundo real ou bolas de paintball virtuais atingirem e espirrar em uma árvore do mundo real. Ao combinar a colisão baseada em profundidade com a física do jogo, você pode dar vida a uma experiência.

Melhorar os testes de hit

A profundidade pode ser usada para melhorar os resultados do teste de hit. Os testes de colisão de plano funcionam apenas em superfícies planas com textura, enquanto os testes de colisão de profundidade são mais detalhados e funcionam mesmo em áreas não planas e com pouca textura. Isso ocorre porque os testes de acerto de profundidade usam informações de profundidade da cena para determinar a profundidade e a orientação corretas de um ponto.

No exemplo abaixo, os Andys verdes representam testes de acerto de plano padrão, e os vermelhos representam testes de acerto de profundidade.

Compatibilidade do dispositivo

A API Depth só é aceita em dispositivos com capacidade de processamento para oferecer suporte à profundidade e precisa ser ativada manualmente no ARCore, conforme descrito em Ativar a API Depth.

Alguns dispositivos também podem oferecer um sensor de hardware de profundidade, como um sensor de tempo de vôo (ToF, na sigla em inglês). Consulte a página Dispositivos com suporte do ARCore para ver uma lista atualizada de dispositivos compatíveis com a API Depth e uma lista de dispositivos que têm um sensor de profundidade de hardware compatível, como um sensor ToF.

Imagens de profundidade

A API Depth usa um algoritmo de profundidade por movimento para criar imagens de profundidade, que oferecem uma visualização em 3D do mundo. Cada pixel em uma imagem de profundidade está associado a uma medida da distância entre a cena e a câmera. Esse algoritmo captura várias imagens do dispositivo de ângulos diferentes e as compara para estimar a distância de cada pixel à medida que o usuário move o smartphone. Ele usa o machine learning de forma seletiva para aumentar o processamento em profundidade, mesmo com o mínimo de movimento do usuário. Ele também aproveita qualquer hardware adicional que o dispositivo do usuário possa ter. Se o dispositivo tiver um sensor de profundidade dedicado, como o ToF, o algoritmo vai mesclar automaticamente os dados de todas as fontes disponíveis. Isso melhora a imagem de profundidade atual e ativa a profundidade mesmo quando a câmera não está se movendo. Ela também oferece melhor profundidade em superfícies com poucos ou nenhum recurso, como paredes brancas, ou em cenas dinâmicas com pessoas ou objetos em movimento.

As imagens a seguir mostram a câmera de um corredor com uma bicicleta na parede e uma visualização da imagem de profundidade criada a partir das imagens da câmera. As áreas em vermelho estão mais próximas da câmera, e as áreas em azul estão mais distantes.

Profundidade de movimento

Os dados de profundidade ficam disponíveis quando o usuário move o dispositivo. O algoritmo pode gerar estimativas de profundidade robustas e precisas de 0 a 65 metros de distância. Os resultados mais precisos são obtidos quando o dispositivo está a meio metro a cerca de cinco metros de distância da cena real. As experiências que incentivam o usuário a mover mais o dispositivo vão gerar resultados cada vez melhores.

Obter imagens de profundidade

Com a API Depth, você pode extrair imagens de profundidade que correspondem a cada frame da câmera. Uma imagem de profundidade adquirida tem o mesmo carimbo de data/hora e intrínseco do campo de visão que a câmera. Os dados de profundidade válidos só ficam disponíveis depois que o usuário começa a mover o dispositivo, já que a profundidade é adquirida por meio do movimento. As superfícies com poucos ou nenhum recurso, como paredes brancas, serão associadas a uma profundidade imprecisa.

O que vem em seguida?