Solución:
Actualización para iOS 12: En “ARKit 2” (también conocido como ARKit en iOS 12 o posterior) …
-
La detección de imágenes se extiende al seguimiento de imágenes, por lo que hasta cuatro imágenes no solo se detectan una vez, se actualizan “en vivo” en cada cuadro, incluso si se mueven en relación con el espacio mundial. Por lo tanto, puede adjuntar una imagen 2D reconocible a su juguete y hacer que el contenido de realidad aumentada virtual siga al juguete en la pantalla.
-
También existe la detección de objetos: en su proceso de desarrollo, puede usar una aplicación ARKit para escanear un objeto 3D del mundo real y producir un archivo de “objeto de referencia”. Luego, puede enviar ese archivo en su aplicación y usarlo para reconocer ese objeto en el entorno del usuario. Esto podría ajustarse a su caso de “coche de juguete” … pero tenga en cuenta que la función de reconocimiento de objetos 3D es la detección, no el seguimiento: ARKit no seguirá el coche de juguete mientras se mueve.
Consulte la charla WWDC18 sobre ARKit 2 para obtener más detalles.
Actualización para iOS 11.3: En “ARKit 1.5” (también conocido como ARKit en iOS 11.3 o posterior), hay una nueva función de detección de imágenes en ARKit. Si tiene una imagen conocida (como un póster o una tarjeta de juego o algo así), puede incluirla en su proyecto de Xcode y / o cargarla desde otro lugar como un ARReferenceImage
y ponerlo en la configuración de su sesión detectionImages
formación. Luego, cuando ARKit encuentra esas imágenes en el entorno del usuario, le brinda ARImageAnchor
objetos que le dicen dónde están.
Tenga en cuenta que esto no es como el “AR basado en marcadores” que ve en otros kits de herramientas: ARKit encuentra una imagen de referencia solo una vez, no le dice cómo se mueve con el tiempo. Por lo tanto, es bueno para “activar” experiencias de contenido de realidad aumentada (como esas promociones en las que apuntas tu teléfono a un póster de Star Wars en una tienda y un personaje sale de él), pero no para, por ejemplo, juegos de mesa de realidad aumentada en los que los personajes virtuales permanecen unidos. a las piezas del juego.
De lo contrario…
Es posible acceder a la imagen de la cámara en cada ARFrame capturado, por lo que si tiene otro software que pueda ayudar con tales tareas, puede usarlo junto con ARKit. Por ejemplo, el marco Vision (también nuevo en iOS 11) ofrece varios de los componentes básicos para tales tareas: puede detectar códigos de barras y encontrar sus cuatro esquinas, y después de identificar manualmente una región de interés en una imagen, rastrear su movimiento entre marcos .
Nota: esto es definitivamente un truco, pero agrega seguimiento de imágenes persistente a ARKit Unity. La misma idea también se puede aplicar a la biblioteca nativa.
Descarga ARKit 1.5 beta https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/branch/spring2018_update
En ARSessionNative.mm, agregue este bloque de código:
extern "C" void SessionRemoveAllAnchors(void* nativeSession) {
UnityARSession* session = (__bridge UnityARSession*)nativeSession;
for (ARAnchor* a in session->_session.currentFrame.anchors)
{
[session->_session removeAnchor:a];
return;
}
}
En UnityARSessionNativeInterface.cs, agregue este código en SessionRemoveUserAnchor:
private static extern void SessionRemoveAllAnchors (IntPtr nativeSession);
Y esto en RemoveUserAnchor:
public void RemoveAllAnchors() {
#if !UNITY_EDITOR
SessionRemoveAllAnchors(m_NativeARSession);
#endif
}
Luego llame a esto desde una Actualización o Coroutine:
UnityARSessionNativeInterface.GetARSessionNativeInterface().RemoveAllAnchors ();
Cuando se quita el ancla, la imagen se puede reconocer una vez más. No es muy suave, pero definitivamente funciona.
¡Espero que te haya resultado útil! Avísame si necesitas más asistencia.
ARKit 2.0
para iOS 12 no solo es compatibleCamera Tracking
característica pero también:
- Seguimiento de objetos 3D
- Seguimiento de la cara
- Seguimiento de imágenes
- Detección de imágenes
- Escaneo de objetos 3D
ARKit 3.0
para iOS 13 admite funciones aún más sofisticadas:
- Oclusión de personas (Composición RGBAZ en tiempo real)
- Seguimiento del cuerpo (también conocido como captura de movimiento)
- Seguimiento de múltiples caras (hasta 3 caras)
- Seguimiento simultáneo de la cámara frontal y trasera
- Sesiones colaborativas