Table of Contents

Bewegungs-Tracking-Zentrum für AR in Unity - XR Origin

XR Origin ist das Kernkonzept des tracking motion in Unity. In modernen AR-Anwendungen wird tracking motion zunehmend zu einer unverzichtbaren Funktion. Damit kann die Anwendung die Position und Ausrichtung des Nutzers in der realen Welt erkennen, ohne andere Erkennungsobjekte zu benötigen, und so ein immersives AR-Erlebnis ermöglichen. Im Folgenden erfahren Sie das Grundkonzept von XR Origin, seine Bestandteile und seinen Lebenszyklus sowie die Situationen, in denen XR Origin verwendet werden sollte.

Vor dem Start

Was ist XR Origin

Beim Initialisieren von tracking motion wird ein Referenzpunkt als Origin des Trackings gewählt. Dieser Referenzpunkt ist normalerweise die Position des Geräts, wenn der Nutzer die Anwendung startet oder wenn der AR service des Systems startet. In der Unity scene wird dieser Punkt durch XR Origin repräsentiert. In den meisten Fällen ist die Startposition von XR Origin in der scene auch die standardmäßige Startposition der camera.

Dieses Video zeigt eine einfache AR scene, in der nur tracking motion läuft. Links ist die Hierarchy-Ansicht, in der Mitte die Scene-Ansicht und rechts die Game-Ansicht. Das Video wurde im Unity editor im Play-Modus mit simulation run-Daten aufgenommen. Der Inhalt der Game-Ansicht ist derselbe, den der Nutzer in der realen Welt auf dem Smartphone sieht.

Man sieht, dass in diesem Video XR Origin (die blaue Kugel) in der scene fest bleibt, während die camera, die den Nutzer repräsentiert (camera-Symbol), sich entsprechend der Bewegung des Nutzers in der realen Welt bewegt. Die weißen Kegel zeigen den bisherigen Weg der Position und Ausrichtung der camera, damit sich die Kamerabewegung besser nachvollziehen lässt. Diese weißen Kegel werden unter dem node von XR Origin erzeugt und sind auch die typische Objektstruktur in solchen scenes.

Im Unity tracking motion-System bewegt sich die camera normalerweise in Abhängigkeit von XR Origin. Auch wenn die camera nicht immer ein child node von XR Origin ist, berechnet AR Session die Position der camera auf Grundlage der Position von XR Origin, damit der Nutzer Inhalte sieht, die mit der realen Welt übereinstimmen.

Dieses Video zeigt dieselbe scene, aber diesmal wird XR Origin (die blaue Kugel) zur Laufzeit verschoben. Man sieht, dass sich die camera nach dem Verschieben von XR Origin ebenfalls mitbewegt, während sich der Inhalt der Game-Ansicht nicht ändert.

In realen AR scenes ist diese Bewegungsbeziehung wesentlich komplexer.

Verhalten von XR Origin in verschiedenen center mode

In Unity werden alle zentralen Referenzpunkte des AR Trackings als session center bezeichnet, und die Regel, die diesen Mittelpunkt während der session bestimmt, heißt center mode. In verschiedenen center mode verhält sich XR Origin unterschiedlich:

  • Im center mode SessionOrigin kann XR Origin beliebig verschoben werden.

    Der Modus SessionOrigin wird normalerweise in scenes verwendet, in denen nur tracking motion läuft. Wenn gleichzeitig andere Funktionen aktiv sind, wird dieser Modus normalerweise nicht verwendet.

    Bei der Nutzung eines headset kann es jedoch vorkommen, dass der Hersteller den Referenzpunkt des tracking motion in Unity nicht korrekt implementiert hat. Dann muss der Unity world center verwendet werden, um den Modus SessionOrigin zu erzwingen. In diesem Fall muss der root content den AR Funktionen folgen, was den Inhalteffekt beeinflussen kann, aber bis der Drittanbieter etwas ändert, gibt es keine andere Möglichkeit.

  • In anderen center mode, zum Beispiel FirstTarget, kann XR Origin nicht beliebig verschoben werden.

    Der Modus FirstTarget wird normalerweise in scenes ohne tracking motion oder in scenes verwendet, in denen andere AR Funktionen zusammen mit tracking motion laufen.

    In diesem Modus wird die Position von XR Origin durch die AR function bestimmt, daher darf XR Origin nicht beliebig verschoben werden.

Details zu center mode und zur Bewegung von Objekten in der scene finden Sie unter center mode.

Form und Aufbau von XR Origin

EasyAR kann zwei verschiedene Formen von XR Origin verwenden:

  • Von EasyAR bereitgestelltes XR Origin
  • Von Unity XR framework bereitgestelltes XR Origin

XR Origin (EasyAR)

Die typische Struktur von XR Origin sieht wie folgt aus:

alt text

Das root node von XR Origin ist ein leeres GameObject und kann einen oder mehrere XR Origin Child child node besitzen. XR Origin Child enthält eine XROriginChildController-Komponente, die die Steuerlogik von XR Origin vertritt.

Während der Laufzeit werden, falls die XR-Origin-Struktur in der scene nicht korrekt ist, XR Origin und ein XR Origin Child automatisch erstellt. Zur Laufzeit wird XR Origin Child auf dieselbe Position und Ausrichtung wie XR Origin beschränkt.

Von der session erzeugte Objekte, etwa die point cloud des sparse spatial mapping oder das mesh des dense spatial mapping, werden unter dem node XR Origin Child erstellt.

Dieses Video zeigt den Effekt von dense spatial mapping zusammen mit tracking motion in derselben scene. Man sieht, dass das erzeugte mesh unter dem node XR Origin Child erstellt wird.

Hinweis: Zur besseren Verständlichkeit ist im Video die depth map-Erzeugung deaktiviert, daher unterscheidet sich der Inhalt der Scene-Ansicht im Video von der tatsächlichen Laufzeit. Der sichtbare Effekt in der Game-Ansicht ist derselbe wie bei deaktivierter mesh-Transparenz.

[Optional] XR Origin (Unity XR)

Falls nötig, können Sie die von Unity XR framework bereitgestellte XR Origin-Komponente verwenden.

Bei Verwendung von XR Origin aus Unity XR framework sieht die typische Struktur so aus:

alt text

In einer headset-scene sieht die typische Struktur so aus:

alt text

Das root node von XR Origin ist ein von Unity XR framework erstelltes und verwaltetes GameObject und kann einen oder mehrere XR Origin Child child node besitzen. XR Origin Child enthält eine XROriginChildController-Komponente, die die Steuerlogik von XR Origin vertritt.

Während der Laufzeit wird XR Origin Child automatisch erstellt, wenn die XR-Origin-Struktur in der scene nicht korrekt ist. Zur Laufzeit wird XR Origin Child auf dieselbe Position und Ausrichtung wie XR Origin beschränkt.

XR Origin aus Unity XR framework unterstützt vor allem zwei Situationen:

  • Sie verwenden bereits AR Foundation im project und möchten es zusammen mit EasyAR betreiben oder je nach Geräteunterstützung zwischen beiden wechseln.
  • Das von Ihnen verwendete headset-SDK nutzt die von Unity XR framework bereitgestellte XR Origin-Komponente.
Anmerkung

Wenn das Unity-XR-Kernpaket com.unity.xr.core-utils noch nicht in das project importiert wurde und sich die camera in der scene in derselben Hierarchie wie das von Unity XR framework bereitgestellte XR Origin befindet (Camera und ein übergeordneter node mit dem Namen Camera Offset), nimmt die session an, dass diese Struktur von Unity XR framework erstellt wurde, und verwendet sie. Dies geschieht, um maximale scene-Kompatibilität zu gewährleisten: Eine mit AR Foundation erstellte scene läuft weiter, selbst wenn AR Foundation nicht im project importiert ist, während die übrigen AR Funktionen normal bleiben. Abgesehen von Funktionen, die nur AR Foundation liefern kann, beeinträchtigt dies nicht einmal die gesamte AR-Funktionalität oder Gerätekompatibilität.

Die meisten EasyAR-Beispielscenes verwenden diese Methode, damit sie auch ohne AR Foundation laufen und gleichzeitig die Zusammenarbeit mit AR Foundation zeigen können, wenn AR Foundation vorhanden ist.

In der AR-Foundation-Definition ist XR Origin das Zentrum des räumlichen Trackings in der XR scene. Es ist jedoch zu beachten, dass im AR-Foundation-Konzept tracking motion als Pflichtfunktion gilt und das in der XR scene beschriebene Tracking tracking motion ist.

Im EasyAR-System ist tracking motion eine optionale Funktion, daher ist auch XR Origin optional. XR Origin wird nur erstellt und verwendet, wenn tracking motion aktiviert ist.

Lebenszyklus von XR Origin

Der Lebenszyklus von XR Origin hängt von der session ab. Wenn die session startet, wird XR Origin ausgewählt oder erstellt, falls die XR-Origin-Struktur in der scene nicht korrekt ist. Wenn die session stoppt, bleibt XR Origin an Ort und Stelle, bis es von der nächsten session verwendet oder manuell gelöscht wird.

Nächste Schritte

Erstellen

Runtime steuern

Verwandte Themen