Guida per gli sviluppatori dei posizionamenti istantanei per la piattaforma AR

Scopri come utilizzare l'API Instant posizionamento o i raycast permanenti nelle tue app.

Prerequisiti

Prima di procedere, assicurati di conoscere i concetti fondamentali dell'AR e come configurare una sessione ARCore.

Nomi dei concetti

I nomi di determinati concetti e metodi possono variare tra AR Foundation e l'SDK ARCore per Unity. Questi sono elencati nella tabella seguente per riferimento futuro.

Elementi di base AR SDK ARCore per Unity
Raycast permanenti Posizionamento istantaneo
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Nessuna equivalenza) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Prerequisiti

Questa guida presuppone che tu abbia già installato e configurato Unity. In caso contrario, consulta la guida introduttiva alle Estensioni ARCore per AR Foundation per conoscere la procedura di installazione e configurazione.

Configura una nuova sessione con ARRaycastManager

Il posizionamento istantaneo (raycast persistenti) è disponibile immediatamente con il pacchetto AR Foundation. Segui questi passaggi per configurare la scena.

AR Foundation 4.x

  1. Aggiungi gli oggetti di gioco predefiniti AR Session Origin e AR Session.

  2. Aggiungi il componente AR Raycast Manager all'oggetto del gioco AR Session Origin.

Quando Raycast Prefab non è nullo, ARRaycastManager inizializzerà il prefab e sincronizzerà automaticamente la sua posa con la posa di ARRaycast.

AR Foundation 5.x

  1. Aggiungi gli oggetti di gioco predefiniti XR Origin e AR Session.

  2. Aggiungi il componente AR Raycast Manager all'oggetto di gioco XR Origin.

Quando Raycast Prefab non è nullo, ARRaycastManager inizializzerà il prefab e sincronizzerà automaticamente la sua posa con la posa di ARRaycast.

Posiziona un oggetto

In una nuova sessione ARCore, esegui un test di corrispondenza utilizzando 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.
        
    }
}

Monitora lo stato di monitoraggio di ARRaycast

Se ARCore ha una posa 3D precisa, il valore di ARRaycast.trackingState sarà Tracking. In caso contrario, inizierà con Limited e passerà a Tracking quando ARCore avrà una posa 3D accurata. Una volta che lo stato del monitoraggio diventa Tracking, non tornerà a Limited.