Guida per gli sviluppatori dei posizionamenti istantanei per la piattaforma AR

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

Prerequisiti

Assicurati di aver compreso i concetti fondamentali di AR e di configurare una sessione ARCore prima di procedere.

Nomi dei concetti

I nomi di alcuni concetti e metodi potrebbero differire tra AR Foundation e l'SDK ARCore per Unity. Questi sono elencati nella tabella seguente per una facile consultazione.

Elementi di base della realtà aumentata SDK ARCore per Unity
Raycast persistenti 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 la piattaforma AR per i passaggi di installazione e configurazione.

Configura una nuova sessione con ARRaycastManager

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

AR Foundation 4.x

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

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

Quando Raycast Prefab non è null, ARRaycastManager crea un'istanza del prefabbricato e sincronizza automaticamente la sua posa con quella di ARRaycast.

AR Foundation 5.x

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

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

Quando Raycast Prefab non è null, ARRaycastManager crea un'istanza del prefabbricato e sincronizza automaticamente la sua posa con quella di ARRaycast.

Posizionare un oggetto

In una nuova sessione ARCore, esegui un test degli hit 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.
        …
    }
}

Monitorare lo stato del monitoraggio ARRaycast

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