Profundidade adiciona realismo

Guias específicos da plataforma

Como desenvolvedor de apps de RA, você quer mesclar o virtual com o real para seus usuários. Quando um usuário coloca um objeto virtual em uma cena, ele quer que pareça que pertence ao mundo real. Se você estiver criando um app para que os usuários comprem móveis, eles precisam ter certeza 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. Ela 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 ativar experiências do usuário imersivas e realistas.

Casos de uso para desenvolvimento com a API Depth

A API Depth pode ativar a oclusão de objetos, melhorar a imersão e criar interações inovadoras que aprimoram o realismo das experiências de RA. Confira algumas maneiras de usá-la nos seus projetos. Para exemplos de profundidade em ação, explore as cenas de amostra no ARCore Depth Lab, que demonstra diferentes maneiras de acessar dados de profundidade. Esse app Unity é de código aberto no GitHub (link em inglês).

Ativar 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 de RA imersiva. Considere um Andy virtual que um usuário pode querer colocar em uma cena contendo um tronco ao lado de uma porta. Renderizado sem oclusão, o Andy vai se sobrepor de forma irreal à borda do tronco. Se você usar a profundidade de uma cena e entender a distância do Andy virtual em relação a arredores como o tronco de madeira, poderá renderizar o Andy com precisão com oclusão, tornando-o muito mais realista no ambiente.

Transformar uma cena

Mostre ao usuário um mundo novo e imersivo renderizando flocos de neve virtuais para se acomodarem nos braços e travesseiros dos sofás ou lançando a sala de estar em uma névoa. Você pode usar a profundidade para criar uma cena em que luzes virtuais interagem, se escondem 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 um plano de fundo ou 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 seu app ativando o conteúdo virtual para interagir com o mundo real por meio de colisões e física. Faça com que objetos virtuais passem por obstáculos do mundo real ou que bolas de tinta virtuais atinjam e respinguem em uma árvore 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 detecção

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

No exemplo a seguir, os Andys verdes representam testes de detecção de plano padrão, e os Andys vermelhos representam testes de detecção de profundidade.

Compatibilidade do dispositivo

A API Depth só é compatível com dispositivos que têm a capacidade de processamento para oferecer suporte à profundidade, e ela precisa ser ativada manualmente no ARCore, conforme descrito em Ativar profundidade.

Alguns dispositivos também podem fornecer um sensor de profundidade de hardware, como um sensor de tempo de voo (ToF). Consulte a página de dispositivos compatíveis com o ARCore para conferir uma lista atualizada de dispositivos que oferecem suporte à 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 de movimento para criar imagens de profundidade, que oferecem uma visualização 3D do mundo. Cada pixel em uma imagem de profundidade está associado a uma medição da distância da cena da câmera. Esse algoritmo usa várias imagens de dispositivos de ângulos diferentes e as compara para estimar a distância de cada pixel à medida que um usuário move o smartphone. Ele usa seletivamente o aprendizado de máquina para aumentar o processamento de profundidade, mesmo com o movimento mínimo de um 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 ToF, o algoritmo 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 de 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 do movimento

Os dados de profundidade ficam disponíveis quando o usuário move o dispositivo. O algoritmo pode receber 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 o dispositivo mais vão gerar resultados cada vez melhores.

Adquirir imagens de profundidade

Com a API Depth, é possível extrair imagens de profundidade que correspondam a cada frame da câmera. Uma imagem de profundidade adquirida tem o mesmo carimbo de data/hora e intrínsecos de campo de visão da câmera. Os dados de profundidade válidos só estão disponíveis depois que o usuário começa a mover o dispositivo, já que a profundidade é adquirida pelo movimento. Superfícies com poucos ou nenhum recurso, como paredes brancas, serão associadas a profundidade imprecisa.

Próximas etapas

  • Confira o ARCore Depth Lab, que demonstra diferentes maneiras de acessar dados de profundidade.