Guide du développeur sur l'emplacement instantané pour AR Foundation

Découvrez comment utiliser l'API Instant Placement ou les raycasts persistants dans vos propres applications.

Conditions préalables

Assurez-vous de bien comprendre les concepts fondamentaux de la RA et de configurer une session ARCore avant de continuer.

Noms de concepts

Les noms de certains concepts et méthodes peuvent différer entre AR Foundation et le SDK ARCore pour Unity. Vous les trouverez dans le tableau ci-dessous.

AR Foundation SDK ARCore pour Unity
Raycasts persistants Emplacement instantané
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Aucune équivalence) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Conditions préalables

Ce guide suppose que vous avez déjà installé et configuré Unity. Si ce n'est pas le cas, consultez la page Getting started with ARCore Extensions for AR Foundation pour obtenir les étapes d'installation et de configuration.

Configurer une nouvelle session avec ARRaycastManager

L'emplacement instantané (diffusions de rayons persistantes) est prêt à l'emploi avec le package RA Foundation. Suivez ces étapes pour configurer votre scène.

AR Foundation 4.x

  1. Ajoutez les objets de jeu prédéfinis AR Session Origin et AR Session.

  2. Ajoutez le composant AR Raycast Manager dans l'objet de jeu AR Session Origin.

Lorsque Raycast Prefab n'est pas nul, ARRaycastManager instancie le Prefab et synchronise automatiquement sa pose avec la position de ARRaycast.

AR Foundation 5.x

  1. Ajoutez les objets de jeu prédéfinis XR Origin et AR Session.

  2. Ajoutez le composant AR Raycast Manager dans l'objet de jeu XR Origin.

Lorsque Raycast Prefab n'est pas nul, ARRaycastManager instancie le Prefab et synchronise automatiquement sa pose avec la position de ARRaycast.

Placer un objet

Dans une nouvelle session ARCore, effectuez un test de positionnement à l'aide de 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.
        …
    }
}

Surveiller l'état du suivi ARRaycast

Si ARCore présente une pose en 3D précise, le ARRaycast.trackingState sera Tracking. Sinon, il commencera par Limited et passera à Tracking une fois qu'ARCore aura trouvé une position 3D précise. Une fois que l'état du suivi devient Tracking, Limited ne sera pas rétabli.