Informationen zur Verwendung der Instant Placement API oder persistenter Raycasts in Ihren eigenen Apps
Voraussetzungen
Machen Sie sich mit den grundlegenden AR-Konzepten und der Konfiguration einer ARCore-Sitzung vertraut, bevor Sie fortfahren.
Konzeptnamen
Die Namen bestimmter Konzepte und Methoden können sich zwischen AR Foundation und dem ARCore SDK for Unity unterscheiden. Sie sind in der folgenden Tabelle aufgeführt.
AR Foundation | ARCore SDK for Unity |
Persistente Raycasts | Instant Placement |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Keine Äquivalenz) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Voraussetzungen
In diesem Handbuch wird davon ausgegangen, dass Sie Unity bereits installiert und konfiguriert haben. Falls nicht, finden Sie unter Erste Schritte mit ARCore-Erweiterungen für AR Foundation Informationen zu den Installations- und Einrichtungsschritten.
Neue Sitzung mit ARRaycastManager
konfigurieren
Die Funktion „Instant Placement“ (persistente Raycasts) ist im AR Foundation-Paket bereits enthalten. So richten Sie die Szene ein:
AR Foundation 4.x
Fügen Sie die vordefinierten Spielobjekte AR Session Origin und AR Session hinzu.
Füge die Komponente AR Raycast Manager zum Spielobjekt AR Session Origin hinzu.
Wenn „Raycast Prefab“ nicht null ist, wird das Prefab von ARRaycastManager
instanziiert und seine Pose automatisch mit der Pose von ARRaycast
synchronisiert.
AR Foundation 5.x
Fügen Sie die vordefinierten Spielobjekte XR Origin und AR Session hinzu.
Füge die Komponente AR Raycast Manager zum Spielobjekt XR Origin hinzu.
Wenn Raycast Prefab nicht null ist, instanziiert ARRaycastManager
die Präfab und synchronisiert ihre Position automatisch mit der Position von ARRaycast
.
Objekt platzieren
Führen Sie in einer neuen ARCore-Sitzung einen Treffertest mit ARRaycastManager.AddRaycast(Vector2, float)
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.
…
}
}
Tracking-Status von ARRaycast überwachen
Wenn ARCore eine korrekte 3D-Pose hat, ist der ARRaycast.trackingState
Tracking
.
Andernfalls beginnt es mit Limited
und wechselt zu Tracking
, sobald ARCore eine genaue 3D-Pose hat. Sobald der Tracking-Status Tracking
lautet, wird er nicht mehr auf Limited
zurückgesetzt.