Profundidade adiciona realismo

Guias específicos para plataformas

Como desenvolvedor de apps de RA, você quer misturar o virtual e 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ê estiver criando um app para que os usuários comprem móveis, é importante que eles tenham confiança de que a poltrona que estão prestes a comprar vai caber no espaço.

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 de profundidade 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 contém um porta-malas ao lado de uma porta. Renderizado sem obstrução, o Andy se sobrepõe de forma não realista à 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.

Transformar uma cena

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? É possível usar a medição de distância e adicionar efeitos de profundidade de campo, como desfocar o plano de fundo ou de 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 ao 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 medição da distância da cena em relação à câmera. Esse algoritmo captura várias imagens do dispositivo de diferentes ângulos e as compara para estimar a distância de cada pixel à medida que o usuário move o smartphone. Ele usa o aprendizado de máquina de forma seletiva para aumentar o processamento de profundidade, mesmo com um movimento mínimo do usuário. Ele também aproveita qualquer hardware adicional que o dispositivo de um 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. Ele 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 uma imagem da câmera de um corredor com uma bicicleta na parede e uma visualização da imagem de profundidade criada com base nas 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 do mundo real. As experiências que incentivam o usuário a mover mais o dispositivo vão gerar resultados cada vez melhores.

Adquirir 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 campo de visão intrínseco da 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?