Obtén información sobre cómo usar la API de Instant Placement o las 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 conceptos
Los nombres de ciertos conceptos y métodos pueden diferir entre AR Foundation y el SDK de ARCore para Unity. que se indican en la siguiente tabla para facilitar su consulta.
Base de RA | 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 supone que ya instalaste y configuraste Unity. Si no es así, consulta Comienza a usar las extensiones de ARCore para RA Foundation a fin de conocer los pasos de instalación y configuración.
Configurar una sesión nueva con ARRaycastManager
La Posición instantánea (rayos de rayos persistentes) está disponible de inmediato con el paquete Base de RA. Sigue estos pasos para configurar la escena.
AR Foundation 4.x
Agrega los objetos del juego predefinidos AR Session Origin y AR Session.
Agrega el componente AR Raycast Manager al objeto de juego AR Session Origin.
Cuando el prefab Raycast no sea nulo, ARRaycastManager
creará una instancia del prefab y sincronizará automáticamente su pose con la pose de ARRaycast
.
AR Foundation 5.x
Agrega los objetos del juego predefinidos XR Origin y AR Session.
Agrega el componente AR Raycast Manager al objeto de juego XR Origin.
Cuando el prefab Raycast no sea nulo, 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 3D precisa, el valor de ARRaycast.trackingState
será Tracking
.
De lo contrario, comenzará con Limited
y pasará a Tracking
una vez que ARCore tenga una pose 3D precisa. Una vez que el estado de seguimiento cambie a Tracking
, no se revertirá a Limited
.