Table of Contents

Center mode von AR Session

Center mode ist ein Kernkonzept von Unity AR. Er bestimmt, welches Objekt die session während runtime als reference point, also als center object, für das gesamte AR tracking auswählt und welche Objekte in der session frei bewegt werden können. Im Folgenden lernen Sie die Grundkonzepte von center mode und seine Auswirkungen auf das Bewegungsverhalten von Objekten in der scene kennen.

Bevor Sie beginnen

  • Lernen Sie die Grundkonzepte, den Aufbau und den workflow von session über Einführung in AR Session kennen.
  • Lernen Sie über Camera die Rolle der camera in AR scenes kennen und wie session die Eigenschaften der camera steuert, um eine korrekte AR-Erfahrung sicherzustellen.
  • Lernen Sie die Grundkonzepte, den Aufbau und den lifecycle von XR Origin über XR Origin kennen.
  • Lernen Sie die Grundkonzepte, states und den lifecycle von target über Target kennen.

Center object und center mode

In einer session können gleichzeitig eine oder mehrere verschiedene AR-Funktionen ausgeführt werden. Diese AR-Funktionen können unterschiedliche Objekte tracken und gleichzeitig motion tracking verwenden, um position und orientation des Geräts selbst zu verfolgen.

Damit das Bewegungsverhalten der Objekte in der scene den Erwartungen entspricht, muss session einen reference point als Zentrum des gesamten AR tracking auswählen. Die Darstellung dieses reference point in der Unity scene ist das center object (CenterObject). Center mode (CenterMode) ist die Regel, die während der runtime von session bestimmt, welches Objekt dieses center object ist.

Das Zentrum einer session kann eines der folgenden Objekte sein:

  • Ein getracktes target
  • XR Origin
  • Camera

Center mode bestimmt, welches Objekt session als center object auswählt und ob dieses Objekt frei bewegt werden kann. Andere Objekte, darunter non-center camera, XR Origin und target, werden von session gesteuert und bewegen sich mit dem center object als reference point.

In Unity unterstützt eine session die folgenden vier Center-Modi:

Name Abbildung Beschreibung
FirstTarget

SpecificTarget
alt text Verwendet ein target als Zentrum, und dieses target kann sich frei bewegen. Dabei gilt:
  • FirstTarget verwendet das zuerst verfolgte target als Zentrum.
  • SpecificTarget verwendet das angegebene target als Zentrum.
camera, XR Origin und andere target-Objekte in der session werden alle von der session gesteuert und bewegen sich mit dem zentralen target als Bezugspunkt.
SessionOrigin alt text Verwendet XR Origin als Zentrum, und XR Origin kann sich frei bewegen.
camera und target in der session werden von der session gesteuert und bewegen sich mit dem zentralen XR Origin als Bezugspunkt.
Camera alt text Verwendet camera als Zentrum, und camera kann sich frei bewegen.
XR Origin und target in der session werden von der session gesteuert und bewegen sich mit der zentralen camera als Bezugspunkt.

In den Abbildungen gibt es drei Objekte: Die blaue Kugel steht für XR Origin, der blaue Kegel steht für camera, und das gelbe Bild steht für target. In verschiedenen Center-Modi wählt die session unterschiedliche Objekte als zentrales Objekt aus. Die Abbildungen zeigen das lokale Koordinatensystem des jeweiligen Objekts.

Tipp

Wenn Sie Erfahrung mit AR Foundation haben, fällt Ihnen möglicherweise auf, dass AR Foundation kein ähnliches Konzept besitzt. Tatsächlich entspricht das Verhalten von AR Foundation dem Center-Modus SessionOrigin.

In einer session wird die relative Bewegung zwischen target und camera von der aktuellen session gesteuert. Die relative Bewegung zwischen XR Origin und camera wird von der aktuellen session oder von einem Drittanbieter-Framework, zum Beispiel AR Foundation, gesteuert. Center-Modi stellen sicher, dass die session in verschiedenen Laufzeitumgebungen das Bewegungsverhalten von Objekten in der Szene korrekt steuern kann.

Wenn zum Beispiel AR Foundation oder ein auf Unity XR basierendes Headset-SDK die relative Bewegung zwischen XR Origin und camera steuert, kann XR Origin nach dem Design des Unity XR-Frameworks von der session bewegt werden, camera jedoch nicht. In diesem Fall beschränkt die session den Center-Modus auf FirstTarget, SpecificTarget oder SessionOrigin. Damit ist das Zentrum für die session XR Origin oder ein bestimmtes target, während für das Unity XR-Framework das Zentrum weiterhin XR Origin ist, sodass das gesamte System einwandfrei funktionieren kann.

Warnung

In Unity AR kann jedes Objekt, das sich im Unity-Weltkoordinatensystem befindet und dessen transform nicht anhand der session-Komponente angepasst wurde, möglicherweise nicht korrekt angezeigt werden. Da die session Position und Ausrichtung anderer Objekte in der Szene anhand von Position und Ausrichtung des zentralen Objekts anpasst, können Objekte, die nicht von der session gesteuert werden, eine Position und Ausrichtung haben, die nicht mit den von der session berechneten Werten übereinstimmen. Dies kann zu unerwartetem Verhalten führen.

Wenn zum Beispiel ein Panda-Modell im Weltkoordinatensystem platziert wird, haben Position und Ausrichtung dieses Panda-Modells möglicherweise keine Entsprechung zu einem Objekt in der realen Welt. Es kann so aussehen, als würde es in der Luft schweben oder sich überallhin bewegen.

Die richtige Vorgehensweise besteht darin, anzuzeigende Inhalte immer unter einem bestimmten target-Knoten zu platzieren, oder unter dem Knoten XR Origin, wenn der Inhalt der Bewegung von XR Origin folgen muss. So werden Position und Ausrichtung des Inhalts anhand des Berechnungsergebnisses der session angepasst, wodurch sichergestellt wird, dass der Inhalt korrekt in die reale Welt eingeblendet wird.

Es ist möglich, Inhalt manuell an Position und Ausrichtung eines target oder von XR Origin auszurichten, dies muss jedoch zum richtigen Zeitpunkt geschehen. Siehe geeigneten Center-Modus auswählen.

Gültige Center-Modi

Nicht alle Center-Modi sind in jeder Situation gültig. Die session entscheidet anhand der aktuellen Laufzeitumgebung und der ausgewählten frame source, welche Center-Modi gültig sind, damit sie das Bewegungsverhalten von Objekten in der Szene korrekt steuern kann. Die Eigenschaft ARSession.AvailableCenterMode kann verwendet werden, um die Liste der gültigen Center-Modi der aktuellen session abzurufen.

Je nach endgültig ausgewählter frame source gibt es für die gültigen Center-Modi einer session die folgenden Fälle:

frame source camera gesteuert hat Bewegungsdaten hat Origin-Design gültige Center-Modi
  • CameraDeviceFrameSource
  • FramePlayer mit einer bei der Aufzeichnung verwendeten frame source ohne Bewegungsdaten
  • ExternalImageStreamFrameSource
Ja Nein -
  • FirstTarget
  • SpecificTarget
  • Camera
  • ARCoreFrameSource
  • AREngineFrameSource
  • ARKitFrameSource
  • InertialCameraDeviceFrameSource
  • MotionTrackerFrameSource
  • ThreeDofCameraDeviceFrameSource
  • FramePlayer mit einer bei der Aufzeichnung verwendeten frame source mit Bewegungsdaten
Ja Ja Ja
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
  • Camera (*)
* Nur gültig, wenn camera kein
Kindknoten von XR Origin ist
  • ARCoreARFoundationFrameSource
  • ARKitARFoundationFrameSource
  • VisionOSARKitFrameSource
  • XREALFrameSource
  • ExternalDeviceFrameSource wobei OriginType is XROrigin or Custom, and Origin frei gesteuert werden kann
    • PicoFrameSource
    • RokidFrameSource ohne UXR
Nein Ja Ja
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
Nein Ja Ja
  • SessionOrigin
  • ExternalDeviceFrameSource, bei dem OriginType None ist
    • RokidFrameSource mit UXR
Nein Ja Nein
  • SessionOrigin

Außer bei Verwendung von FramePlayer werden gültige Center-Modi beim Zusammenstellen der session bestimmt. Bei Verwendung von FramePlayer werden gültige Center-Modi während der Laufzeit der session dynamisch für jede ausgegebene Frame-Daten anhand dessen bestimmt, ob die Daten Bewegungsinformationen enthalten.

Eigenschaften verschiedener center modes

Als Nächstes zeigen wir mit einer Reihe von Beispielvideos das Bewegungsverhalten von Objekten unter verschiedenen center modes.

Der Videoinhalt ist wie folgt:

In der realen Welt gibt es zwei verschiedene Arten von trackable objects:

  • Eines ist ein Weihnachtsbaum, der stillsteht. Er wird über die sparse spatial map-Funktion getrackt.
  • Das andere ist ein Blatt A4-Papier, auf dem vorher ein Bild gedruckt wurde. Es kann bewegt werden. Es wird über die image tracking-Funktion getrackt.

Bei der Videoaufnahme startet der observer, das Telefon, rechts hinter dem Weihnachtsbaum und bewegt sich um ihn herum. Das A4-Papier schwingt vor dem observer nach links und rechts.

Zur besseren Beobachtung haben wir verschiedenen Objekten in der scene einige markers hinzugefügt.

  • Weihnachtsbaum: Wenn er im tracking-Zustand ist, wird in dem von ihm eingenommenen Raum eine hellblaue Punktwolke überlagert. Diese markers verschwinden, wenn tracking verloren geht.
  • A4-Papier: Wenn es im tracking-Zustand ist, wird direkt darüber ein Panda überlagert. Die Game view zeigt zusätzlich ein Bild, das Inhalt und Größe des A4-Papiers vollständig entspricht. Diese markers verschwinden, wenn tracking verloren geht.
  • XR Origin: An seiner Position wird eine blaue Kugel platziert
  • Camera: An ihrer Position wird ein blauer Kegel platziert, dessen Hauptachse mit der Blickrichtung der camera übereinstimmt.

Diese Videos wurden mit simulierten Laufzeitdaten im Play mode des Unity editor aufgenommen. Links im Video ist die Scene view, rechts die Game view. Der Inhalt der Game view entspricht dem, was der Benutzer in der realen Welt auf dem Telefon sieht.

FirstTarget und SpecificTarget center modes

Die Center-Modi FirstTarget und SpecificTarget verwenden ein bestimmtes target als zentrales Objekt. In diesen beiden Modi werden außer dem zentralen target die camera, der XR Origin und andere target-Objekte in der session von der session gesteuert und bewegen sich mit dem zentralen target als Bezugspunkt.

Einige targets können sich in der realen Welt bewegen, zum Beispiel das A4-Papier im Video.

Im obigen Video ist das zentrale Objekt das A4-Papier, das durch image tracking verfolgt wird. Man sieht, dass das A4-Papier (Panda) ohne äußere Bedienung stillsteht, während sich camera (blauer Kegel), XR Origin (blaue Kugel) und Weihnachtsbaum (hellblaue Punktwolke) bewegen.

Einige targets sind in der realen Welt stationär, zum Beispiel der Weihnachtsbaum im Video.

Im obigen Video ist das zentrale Objekt der Weihnachtsbaum, der durch sparse spatial map verfolgt wird. Man sieht, dass der Weihnachtsbaum (hellblaue Punktwolke) ohne äußere Bedienung stillsteht, während sich camera (blauer Kegel) und A4-Papier (Panda) bewegen. XR Origin (blaue Kugel) bewegt sich ebenfalls nicht, aber das liegt daran, dass er relativ zum Weihnachtsbaum stationär ist.

In diesen beiden Modi kann sich das zentrale target, das als Bezugspunkt dient, frei bewegen. Dann bewegen sich camera, XR Origin und andere target-Objekte in der session mit, und ihr transform kann nicht extern gesteuert werden.

Im obigen Video ist das zentrale Objekt das A4-Papier, das durch image tracking verfolgt wird. Man sieht, dass sich camera (blauer Kegel), XR Origin (blaue Kugel) und Weihnachtsbaum (hellblaue Punktwolke) mitbewegen, weil wir das A4-Papier (Panda) manuell bewegt haben. Zu beachten ist, dass sich der im Game-View angezeigte Inhalt dabei nicht ändert, weil sich Position und Ausrichtung der camera relativ zum A4-Papier und zu anderen Objekten nicht ändern.

Der Unterschied zwischen FirstTarget- und SpecificTarget-Modus besteht darin, dass sich während runtime das zentrale target ändern kann, aber die Auswahlmethode für das Zentrum bei einer Änderung unterschiedlich ist. Um dies zu erklären, müssen wir den Prozess von erfolgreichem tracking und tracking-Verlust berücksichtigen.

Wenn sich das zentrale Objekt in einer session ändert, spiegelt ARSession.CenterObject immer das aktuelle zentrale Objekt wider, aber ARSession.CenterMode ändert sich nicht.

Center-Änderungen im FirstTarget center mode

Im Center-Modus FirstTarget verwendet die session immer das zuerst verfolgte target als Zentrum. Wenn das tracking dieses target verloren geht, wählt die session das Zentrum neu aus. Wenn die session ein anderes target verfolgt oder neu verfolgt, wird dieses andere target als neues zentrales Objekt ausgewählt.

Eine Neuauswahl des Zentrums tritt in folgenden Fällen auf:

  • Im aktuellen Frame befindet sich kein target im tracking-Zustand
    Wenn der Modus SessionOrigin zu diesem Zeitpunkt gültig ist, fällt die session auf den Modus SessionOrigin zurück und wählt XR Origin als zentrales Objekt. Andernfalls fällt die session auf den Modus Camera zurück und wählt camera als zentrales Objekt.

  • Im aktuellen Frame befindet sich ein target im tracking-Zustand, und im vorherigen Frame befand sich kein target im tracking-Zustand
    Zu diesem Zeitpunkt wählt die session eines der verfolgten target-Objekte als zentrales Objekt aus.

  • Im aktuellen Frame befindet sich ein target im tracking-Zustand, und das zentrale target des vorherigen Frames hat im aktuellen Frame das tracking verloren
    Zu diesem Zeitpunkt wählt die session eines der verfolgten target-Objekte als neues zentrales Objekt aus.

Im obigen Video ist das anfängliche zentrale Objekt das A4-Papier, das durch image tracking verfolgt wird. Man sieht, dass die session das zentrale Objekt neu auswählt, wenn das tracking des A4-Papiers (Panda) verloren geht. Zu diesem Zeitpunkt wird der Weihnachtsbaum (hellblaue Punktwolke) zum neuen zentralen Objekt. Am Ende des Videos wird das A4-Papier wieder verfolgt, wird aber nicht zum zentralen Objekt, weil der Weihnachtsbaum bereits das zentrale Objekt ist.

Zentrumsänderungen im Center-Modus SpecificTarget

Im Center-Modus SpecificTarget verwendet die session immer das angegebene target als Zentrum. Wenn das tracking dieses target verloren geht, wählt die session das Zentrum neu aus, aber sie wählt kein anderes target als neues zentrales Objekt. Wenn die session dieses angegebene target erneut verfolgt, wird es weiterhin als zentrales Objekt ausgewählt.

Eine Neuauswahl des Zentrums tritt in folgenden Fällen auf:

  • Das angegebene target wird im aktuellen Frame nicht verfolgt
    Wenn der Modus SessionOrigin zu diesem Zeitpunkt gültig ist, fällt die session auf den Modus SessionOrigin zurück und wählt XR Origin als zentrales Objekt. Andernfalls fällt die session auf den Modus Camera zurück und wählt camera als zentrales Objekt.

  • Das angegebene target befindet sich im aktuellen Frame im tracking-Zustand, und das angegebene target wurde im vorherigen Frame nicht verfolgt
    Zu diesem Zeitpunkt wählt die session das angegebene target als zentrales Objekt aus.

Im obigen Video ist das zentrale Objekt als das A4-Papier angegeben, das durch image tracking verfolgt wird. Man sieht, dass die session kein anderes target als neues zentrales Objekt auswählt, wenn das tracking des A4-Papiers (Panda) verloren geht. Zu diesem Zeitpunkt wird der Weihnachtsbaum (hellblaue Punktwolke) nicht zum zentralen Objekt. Am Ende des Videos wird das A4-Papier wieder verfolgt und ist wieder das zentrale Objekt.

Center-Modus SessionOrigin

Der Center-Modus SessionOrigin verwendet XR Origin als zentrales Objekt. In diesem Modus werden camera und target in der session von der session gesteuert und bewegen sich mit dem zentralen XR Origin als Bezugspunkt.

Im obigen Video ist das zentrale Objekt XR Origin. Man sieht, dass XR Origin (blaue Kugel) ohne äußere Bedienung stillsteht, während sich camera (blauer Kegel) und A4-Papier (Panda) bewegen. Der Weihnachtsbaum (hellblaue Punktwolke) bewegt sich ebenfalls nicht, aber das liegt daran, dass er relativ zu XR Origin stationär ist.

In diesem Modus kann sich der zentrale XR Origin, der als Bezugspunkt dient, frei bewegen. Dann bewegen sich camera und target in der session mit, und ihr transform kann nicht extern gesteuert werden.

Im obigen Video ist das zentrale Objekt XR Origin. Man sieht, dass sich camera (blauer Kegel), Weihnachtsbaum (hellblaue Punktwolke) und A4-Papier (Panda) mitbewegen, weil wir XR Origin (blaue Kugel) manuell bewegt haben. Zu beachten ist, dass sich der im Game-View angezeigte Inhalt dabei nicht ändert, weil sich Position und Ausrichtung der camera relativ zu XR Origin und zu anderen Objekten nicht ändern.

Im Modus SessionOrigin muss XR Origin gültig sein, daher ändert sich das zentrale Objekt in diesem Modus nicht.

Center-Modus Camera

Der Center-Modus camera verwendet camera als zentrales Objekt. In diesem Modus werden XR Origin und target in der session von der session gesteuert und bewegen sich mit der zentralen camera als Bezugspunkt.

Im obigen Video ist das zentrale Objekt die camera. Man sieht, dass die camera (blauer Kegel) ohne äußere Bedienung stillsteht, während sich XR Origin (blaue Kugel), Weihnachtsbaum (hellblaue Punktwolke) und A4-Papier (Panda) bewegen.

In diesem Modus kann sich die zentrale camera, die als Bezugspunkt dient, frei bewegen. Dann bewegen sich XR Origin und target in der session mit, und ihr transform kann nicht extern gesteuert werden.

Im obigen Video ist das zentrale Objekt die camera. Man sieht, dass sich XR Origin (blaue Kugel), Weihnachtsbaum (hellblaue Punktwolke) und A4-Papier (Panda) mitbewegen, weil wir die camera (blauer Kegel) manuell bewegt haben. Zu beachten ist, dass sich der im Game-View angezeigte Inhalt dabei nicht ändert, weil sich Position und Ausrichtung der camera relativ zu XR Origin und zu anderen Objekten nicht ändern.

Im Modus Camera muss camera gültig sein, daher ändert sich das zentrale Objekt in diesem Modus nicht.

Nächste Schritte

Verwandte Themen