Guida per gli sviluppatori dei posizionamenti istantanei per la piattaforma AR

Scopri come utilizzare API di posizionamento istantaneo oppure raycast permanenti, nelle tue app.

Prerequisiti

Assicurati di comprendere i concetti fondamentali della realtà aumentata e su come configurare una sessione ARCore prima di procedere.

Nomi dei concetti

I nomi di alcuni concetti e metodi potrebbero variare tra AR Foundation e il SDK ARCore per Unity. Questi elenchi sono elencati nella tabella di seguito per una facile consultazione.

Elementi di base AR SDK ARCore per Unity
Raggicast 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, vedi consulta la pagina Getting started with ARCore Extensions for AR Foundation per i passaggi di installazione e configurazione.

Configura una nuova sessione con ARRaycastManager

Il posizionamento istantaneo (raycast permanenti) è già disponibile con l'AR Pacchetto base. 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 a Oggetto gioco AR Session Origin.

Quando Raycast Prefab non è null, ARRaycastManager creerà un'istanza del 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 a Oggetto gioco XR Origin.

Quando Raycast Prefab non è null, ARRaycastManager creerà un'istanza del prefab e sincronizzerà automaticamente la sua posa con la posa di ARRaycast.

Posiziona un oggetto

In una nuova sessione ARCore, esegui un hit test 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 passa a Tracking una volta che ARCore ha una posa 3D accurata. Quando lo stato di monitoraggio diventa Tracking, non verrà ripristinato Limited.