Entwicklerleitfaden für Instant Placements für AR Foundation

Hier erfahren Sie, wie Sie die Instant Placement API oder persistente Raycasts in Ihren eigenen Apps.

Vorbereitung

Machen Sie sich mit den grundlegenden AR-Konzepten vertraut. und Konfigurieren einer ARCore-Sitzung beschrieben, bevor du fortfährst.

Konzeptnamen

Die Namen bestimmter Konzepte und Methoden können zwischen AR Foundation und dem ARCore SDK für Unity Diese sind in der Tabelle unten aufgeführt.

Grundlagen von AR ARCore SDK für Unity
Dauerhafte Raycasts Sofortiges Placement
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Keine Äquivalenz) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Vorbereitung

In diesem Handbuch wird davon ausgegangen, dass Sie Unity bereits installiert und konfiguriert haben. Falls nicht, lesen Sie Erste Schritte mit ARCore Extensions for AR Foundation .

Neue Sitzung mit ARRaycastManager konfigurieren

Die sofortige Platzierung (persistente Raycasts) ist bei AR sofort verfügbar. Foundation-Paket. Führen Sie die folgenden Schritte aus, um die Szene einzurichten.

AR Foundation 4.x

  1. Füge die vordefinierten Spielobjekte AR Session Origin und AR Session.

  2. Fügen Sie die Komponente AR Raycast Manager zur AR Session Origin Spielobjekt.

Wenn Raycast Prefab nicht null ist, ARRaycastManager instanziiert die Prefab und synchronisiert ihre Pose automatisch mit der Pose der ARRaycast

AR Foundation 5.x

  1. Füge die vordefinierten Spielobjekte XR Origin und AR Session.

  2. Fügen Sie die Komponente AR Raycast Manager zur XR Origin Spielobjekt.

Wenn Raycast Prefab nicht null ist, ARRaycastManager instanziiert die Prefab und synchronisiert ihre Pose automatisch mit der Pose der ARRaycast

Objekt platzieren

Führe in einer neuen ARCore-Sitzung einen Treffertest mit 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.
        …
    }
}

ARRaycast-Tracking-Status überwachen

Wenn ARCore eine korrekte 3D-Pose hat, ist der ARRaycast.trackingState Tracking. Andernfalls beginnt sie mit Limited. und wechseln zu Tracking, sobald ARCore eine genaue 3D-Pose hat. Sobald der Tracking-Status Tracking lautet, wird nicht wieder auf Limited