Guías específicas de la plataforma
Android (Kotlin/Java)
NDK de Android (C)
Unity (AR Foundation)
Unreal Engine
Como desarrollador de apps de RA, tu objetivo es combinar lo virtual con lo real sin problemas para tus usuarios. Cuando un usuario coloca un objeto virtual en su escena, quiere que parezca que pertenece al mundo real. Si estás creando una app para que los usuarios compren muebles, quieres que tengan la seguridad de que el sillón que están a punto de comprar cabrá en su espacio.
La API de Depth ayuda a la cámara de un dispositivo a comprender el tamaño y la forma de los objetos reales en una escena. Crea imágenes de profundidad o mapas de profundidad, lo que agrega una capa de realismo a tus apps. Puedes usar la información que proporciona una imagen de profundidad para permitir experiencias del usuario envolventes y realistas.
Casos de uso para desarrollar con la API de Depth
La API de Depth puede impulsar la oclusión de objetos, mejorar la inmersión y las interacciones nuevas que potencian el realismo de las experiencias de RA. A continuación, se muestran algunas formas en que puedes usarlo en tus propios proyectos. Para ver ejemplos de Depth en acción, explora las escenas de muestra en el ARCore Depth Lab, que muestra diferentes formas de acceder a los datos de profundidad. Esta app de Unity es de código abierto en GitHub.
Cómo habilitar la oclusión
La oclusión, o la renderización precisa de un objeto virtual detrás de objetos del mundo real, es fundamental para una experiencia de RA envolvente. Considera un Andy virtual que un usuario podría querer colocar en una escena que contiene un baúl junto a una puerta. Como se renderiza sin oclusión, el Andy se superpondrá de manera poco realista con el borde del baúl. Si usas la profundidad de una escena y comprendes qué tan lejos está Andy virtual en relación con el entorno, como el tronco de madera, puedes renderizarlo con precisión con oclusión, lo que lo hará parecer mucho más realista en su entorno.
Transforma una escena
Muestra a tu usuario un nuevo mundo envolvente renderizando copos de nieve virtuales que se posan en los brazos y las almohadas de sus sofás, o proyectando su sala de estar en una niebla espesa. Puedes usar la profundidad para crear una escena en la que las luces virtuales interactúen, se oculten detrás de objetos reales y vuelvan a iluminarlos.
Distancia y profundidad de campo
¿Necesitas mostrar que algo está lejos? Con la API de Depth, puedes usar la medición de distancia y agregar efectos de profundidad de campo, como desenfocar el fondo o el primer plano de una escena.
Habilita las interacciones del usuario con objetos de RA
Permite que los usuarios “toquen” el mundo a través de tu app habilitando el contenido virtual para que interactúe con el mundo real a través de colisiones y física. Haz que objetos virtuales superen obstáculos del mundo real o haz que bolas de paintball virtuales golpeen y salpiquen sobre un árbol del mundo real. Cuando combinas la colisión basada en la profundidad con la física del juego, puedes hacer que una experiencia cobre vida.
Mejora las pruebas de hit
La profundidad se puede usar para mejorar los resultados de las pruebas de posicionamiento. Las pruebas de posicionamiento de planos solo funcionan en superficies planas con textura, mientras que las de profundidad son más detalladas y funcionan incluso en áreas no planas y con textura baja. Esto se debe a que las pruebas de detección de profundidad usan información de profundidad de la escena para determinar la profundidad y la orientación correctas de un punto.
En el siguiente ejemplo, los Andys verdes representan las pruebas de impacto de plano estándar y los Andys rojos representan las pruebas de impacto de profundidad.
Compatibilidad con dispositivos
La API de Depth solo es compatible con dispositivos que tengan la potencia de procesamiento para admitir la profundidad y se debe habilitar manualmente en ARCore, como se describe en Habilita la profundidad.
Algunos dispositivos también pueden proporcionar un sensor de profundidad de hardware, como un sensor de tiempo de vuelo (ToF). Consulta la página Dispositivos compatibles con ARCore para obtener una lista actualizada de los dispositivos que admiten la API de Depth y una lista de los dispositivos que tienen un sensor de profundidad de hardware compatible, como un sensor ToF.
Imágenes de profundidad
La API de Depth usa un algoritmo de profundidad a partir del movimiento para crear imágenes de profundidad, que proporcionan una vista en 3D del mundo. Cada píxel de una imagen de profundidad está asociado con una medición de la distancia de la escena a la cámara. Este algoritmo toma varias imágenes de dispositivos desde diferentes ángulos y las compara para estimar la distancia a cada píxel a medida que un usuario mueve su teléfono. Usa el aprendizaje automático de forma selectiva para aumentar el procesamiento de profundidad, incluso con movimiento mínimo del usuario. También aprovecha cualquier hardware adicional que pueda tener el dispositivo del usuario. Si el dispositivo tiene un sensor de profundidad dedicado, como ToF, el algoritmo combina automáticamente los datos de todas las fuentes disponibles. Esto mejora la imagen de profundidad existente y habilita la profundidad incluso cuando la cámara no está en movimiento. También proporciona una mejor profundidad en superficies con pocas características o sin ellas, como paredes blancas, o en escenas dinámicas con personas u objetos en movimiento.
En las siguientes imágenes, se muestra una imagen de la cámara de un pasillo con una bicicleta en la pared y una visualización de la imagen de profundidad que se crea a partir de las imágenes de la cámara. Las áreas en rojo están más cerca de la cámara, y las áreas en azul están más lejos.
Profundidad a partir del movimiento
Los datos de profundidad estarán disponibles cuando el usuario mueva su dispositivo. El algoritmo puede obtener estimaciones de profundidad sólidas y precisas de 0 a 65 metros de distancia. Los resultados más precisos se obtienen cuando el dispositivo está a medio metro o a unos cinco metros de la escena del mundo real. Las experiencias que alienten al usuario a mover más su dispositivo obtendrán mejores resultados.
Cómo adquirir imágenes de profundidad
Con la API de Depth, puedes recuperar imágenes de profundidad que coincidan con cada fotograma de la cámara. Una imagen de profundidad adquirida tiene la misma marca de tiempo y las mismas propiedades intrínsecas del campo de visión que la cámara. Los datos de profundidad válidos solo están disponibles después de que el usuario comienza a mover el dispositivo, ya que la profundidad se adquiere a partir del movimiento. Las superficies con pocas características o sin ellas, como las paredes blancas, se asociarán con una profundidad imprecisa.
¿Qué sigue?
- Consulta el ARCore Depth Lab, que muestra diferentes formas de acceder a los datos de profundidad.