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

Découvrez comment utiliser le API Instant Placement ou diffusions raycast persistantes, dans vos propres applications.

Prérequis

Assurez-vous de bien maîtriser les concepts fondamentaux de la RA. et comment configurer une session ARCore avant de continuer.

Noms des concepts

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

Éléments de base de la RA 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

Prérequis

Dans ce guide, nous partons du principe 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 connaître les étapes d'installation et de configuration.

Configurer une nouvelle session avec ARRaycastManager

Instant Placement (raycasts persistants) est prêt à l'emploi avec la 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 Objet de jeu AR Session Origin.

Lorsque Raycast Prefab n'est pas nul, ARRaycastManager va instancier Prefab et synchroniser automatiquement son état avec l'objet pos 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 Objet de jeu XR Origin.

Lorsque Raycast Prefab n'est pas nul, ARRaycastManager va instancier Prefab et synchroniser automatiquement son état avec l'objet pos ARRaycast

Placer un objet

Dans une nouvelle session ARCore, effectuez un test de positionnement en utilisant 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 de suivi ARRaycast

Si ARCore a une position précise en 3D, ARRaycast.trackingState sera Tracking. Sinon, il commencera par Limited et passer à Tracking une fois qu'ARCore aura trouvé une bonne posture 3D. Une fois que l'état du suivi devient Tracking, il ne rétablira pas Limited