Przewodnik dla programistów dotyczący błyskawicznego miejsca docelowego dla AR Foundation

Dowiedz się, jak używać interfejsu Instant Placement API lub trwałych rzutów promieniowych w swoich aplikacjach.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.

nazwy koncepcji,

Nazwy niektórych koncepcji i metod mogą się różnić między AR Foundation a ARCore SDK for Unity. W tabeli poniżej znajdziesz listę tych funkcji.

AR Foundation Pakiet ARCore SDK dla Unity
Trwałe promieniowanie promieniowania Szybkie miejsce docelowe
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Brak odpowiednika) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Wymagania wstępne

W tym przewodniku zakładamy, że masz już zainstalowaną i skonfigurowaną platformę Unity. Jeśli nie, zapoznaj się z Pierwsze kroki z rozszerzeniami ARCore dla AR Foundation, aby dowiedzieć się, jak je zainstalować i skonfigurować.

Skonfiguruj nową sesję w aplikacji ARRaycastManager

Błyskawiczne miejsce docelowe (trwałe raycasty) jest dostępne od razu w pakiecie AR Foundation. Aby skonfigurować scenę, wykonaj te czynności.

AR Foundation 4.x

  1. Dodaj wstępnie zdefiniowane obiekty gry AR Session OriginAR Session.

  2. Dodaj komponent AR Raycast Manager do obiektu gry AR Session Origin.

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast.

AR Foundation 5.x

  1. Dodaj wstępnie zdefiniowane obiekty gry XR OriginAR Session.

  2. Dodaj komponent AR Raycast Manager do obiektu gry XR Origin.

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast.

Umieszczenie obiektu

W nowej sesji ARCore przeprowadź test działań za pomocą polecenia 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.
        
    }
}

Monitorowanie stanu śledzenia ARRaycast

Jeśli ARCore ma dokładną pozycję 3D, ARRaycast.trackingState będzie mieć wartość Tracking. W przeciwnym razie rozpocznie się od Limited, a po uzyskaniu przez ARCore dokładnej pozycji 3D przejdzie do Tracking. Gdy stan śledzenia zmieni się na Tracking, nie wróci on do stanu Limited.