Entwicklerleitfaden für Instant Placements für AR Foundation

Hier erfahren Sie, wie Sie die Instant Placement API oder nichtflüchtige Raycasts in Ihren eigenen Anwendungen verwenden.

Voraussetzungen

Machen Sie sich mit den grundlegenden AR-Konzepten und zur Konfiguration einer ARCore-Sitzung vertraut, bevor Sie fortfahren.

Konzeptnamen

Die Namen bestimmter Konzepte und Methoden können sich zwischen AR Foundation und ARCore SDK for Unity unterscheiden. Diese sind zur besseren Übersicht in der Tabelle unten aufgeführt.

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

Voraussetzungen

In diesem Leitfaden wird davon ausgegangen, dass Sie Unity bereits installiert und konfiguriert haben. Falls nicht, findest du unter Erste Schritte mit ARCore Extensions for AR Foundation Informationen zur Installation und Einrichtung.

Neue Sitzung mit ARRaycastManager konfigurieren

Instant Placement (permanente Raycasts) ist mit dem AR Foundation-Paket standardmäßig verfügbar. Führen Sie zum Einrichten der Szene die folgenden Schritte aus.

AR Foundation 4.x

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

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

Wenn die Raycast-Vorabversion nicht null ist, instanziiert ARRaycastManager die Vorfab und synchronisiert ihre Pose automatisch mit der Pose von ARRaycast.

AR Foundation 5.x

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

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

Wenn die Raycast-Vorabversion nicht null ist, instanziiert ARRaycastManager die Vorfab und synchronisiert ihre Pose automatisch mit der Pose von ARRaycast.

Objekt platzieren

Führe in einer neuen ARCore-Sitzung mit ARRaycastManager.AddRaycast(Vector2, float) einen Treffertest durch.

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-Trackingstatus überwachen

Wenn ARCore eine präzise 3D-Pose hat, lautet der ARRaycast.trackingState Tracking. Andernfalls beginnt er mit Limited und wechselt zu Tracking, sobald ARCore eine genaue 3D-Pose hat. Wenn der Tracking-Status zu Tracking wechselt, wird er nicht auf Limited zurückgesetzt.