Aprende a usar la API de Instant Placement o proyecciones de rayos persistentes en tus propias apps.
Requisitos previos
Asegúrate de comprender los conceptos fundamentales de RA y cómo configurar una sesión de ARCore antes de continuar.
Nombres de los conceptos
Los nombres de ciertos conceptos y métodos pueden diferir entre AR Foundation y SDK de ARCore para Unity. que se indican en la siguiente tabla para poder consultarlos fácilmente.
AR Foundation | SDK de ARCore para Unity |
Proyecciones de rayos persistentes | Posición instantánea |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Sin equivalencia) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Requisitos previos
En esta guía, se da por sentado que ya instalaste y configuraste Unity. Si no es así, consulta la guía Getting started with ARCore Extensions for AR Foundation para ver los pasos de instalación y configuración.
Configura una nueva sesión con ARRaycastManager
La ubicación instantánea (reproducciones de rayos persistentes) está disponible de inmediato con el RA Paquete de base. Sigue estos pasos para configurar la escena.
AR Foundation 4.x
Agrega los objetos de juego predefinidos AR Session Origin y AR Session
Agrega el componente AR Raycast Manager al AR Session Origin objeto de juego.
Cuando Raycast Prefab no es nula, ARRaycastManager
.
creará una instancia del prefab y sincronizará
automáticamente su pose con la de
ARRaycast
AR Foundation 5.x
Agrega los objetos de juego predefinidos XR Origin y AR Session
Agrega el componente AR Raycast Manager al XR Origin objeto de juego.
Cuando Raycast Prefab no es nula, ARRaycastManager
.
creará una instancia del prefab y sincronizará automáticamente su pose con la pose de
ARRaycast
Coloca un objeto
En una nueva sesión de ARCore, realiza una prueba de posicionamiento con
ARRaycastManager.AddRaycast(Vector2, float)
public ARRaycastManager RaycastManager; // set from the Editor Inspector.
void Update()
{
Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}
if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
{
return;
}
ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
if (raycast != null)
{
// You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
…
}
}
Cómo supervisar el estado de seguimiento de ARRaycast
Si ARCore tiene una pose en 3D precisa, el ARRaycast.trackingState
será Tracking
.
De lo contrario, comenzará con Limited
.
y haremos la transición a Tracking
una vez que ARCore tenga una postura en 3D precisa. Una vez que el estado de seguimiento sea Tracking
,
no se revertirá a
Limited