Namensstring
XR_ANDROID_unbounded_reference_space
Erweiterungstyp
Instanzerweiterung
Registrierte Durchwahlnummer
468
Revision
1
Erweiterungs- und Versionsabhängigkeiten
Datum der letzten Änderung
2024-09-12
IP-Status
Es sind keine Ansprüche aufgrund von Urheberrechten bekannt.
Mitwirkende
Spencer Quin, Google
Jared Finder, Google
Fengtao Fan, Google
Lachlan Ford, Google
Nihav Jain, Google
Levana Chen, Google
Übersicht
Mit dieser Erweiterung können Anwendungen einen UNBOUNDED_ANDROID
-Referenzbereich erstellen. Dieser Referenzraum ermöglicht es dem Betrachter, sich frei durch eine komplexe Umgebung zu bewegen, oft viele Meter von seinem Ausgangspunkt entfernt, und dabei immer die Stabilität des Koordinatensystems in der Nähe des Betrachters zu optimieren. Da das Gerät mehr von seiner Umgebung erfasst, um ein besseres Szenenverständnis zu erhalten, kann der Ursprung des Referenzraums abweichen und es sind große Anpassungen erforderlich, um das Geräte-Tracking aufrechtzuerhalten.
Um einen UNBOUNDED_ANDROID
-Referenzbereich zu erstellen, kann die Anwendung XrReferenceSpaceCreateInfo::referenceSpaceType auf XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
setzen und an xrCreateReferenceSpace übergeben.
XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized
// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
.type = XR_REFERENCE_SPACE_CREATE_INFO;
.next = nullptr;
.referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
.poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));
// After usage
CHK_XR(xrDestroySpace(referenceSpace));
Der UNBOUNDED_ANDROID
-Referenzraum legt den Ursprung der Position des Headsets fest, wenn das Geräte-Tracking beginnt. Es ist gewichtsorientiert, um Neigung und Rollung auszuschließen, wobei +X nach rechts, +Y nach oben und -Z nach vorne zeigt.
UNBOUNDED_ANDROID
-Bereiche sind nützlich, wenn eine Anwendung Inhalte in Weltmaßstab rendern muss, die über die Grenzen eines einzelnen STAGE
hinausgehen, z. B. ein ganzes Stockwerk oder mehrere Stockwerke eines Gebäudes.
Ein UNBOUNDED_ANDROID
-Raum bleibt in der Nähe des Betrachters stabil, da sich sein Ursprung im Laufe der Zeit anpasst. Es kann kleine und große Anpassungen vornehmen, um das Geräte-Tracking aufrechtzuerhalten.
- Die Laufzeit darf das Ereignis XrEventDataReferenceSpaceChangePending nicht als Reaktion auf geringfügige Anpassungen in die Warteschlange stellen.
- Die Laufzeit sollte das Ereignis XrEventDataReferenceSpaceChangePending als Reaktion auf große Anpassungen in die Warteschlange stellen. Beispiel: Die Pose im
UNBOUNDED_ANDROID
-Raum wird aufgrund eines Tracking-Verlusts zurückgesetzt und das Tracking wird auf einer getrennten Schätzung der Welt (einer „neuen Karte“) wiederhergestellt. - Das System aktualisiert ständig sein Weltbild und passt das Geräte-Tracking an. Wenn für eine Anwendung unabhängig von Tracking-Zurücksetzungen ein gespeicherter Standort erforderlich ist, kann in diesem Fall ein Anker verwendet werden.
Ereignis „Gruppenbereich geändert“
Für Parameter, die durch die Struktur XrEventDataReferenceSpaceChangePending definiert sind und bei Weltänderungen oder bei der Optimierung von Relokalisierungsereignissen zurückgegeben wurden:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
Beschreibungen von Mitgliedern
referenceSpaceType
istXR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
.changeTime
steht für dieXrTime
, an der die Relokalisierung abgeschlossen wurde.poseValid
istfalse
aufgrund der Schätzung für die Unterbrechung odertrue
nach der Reaktivierung.poseInPreviousSpace
ist ungültig, wennposeValid
=false
ist.
Wenn bei Ansichten, Controllern oder anderen Bereichen die Verfolgung im Vergleich zum Bereich UNBOUNDED_ANDROID
unterbrochen wird, können Anwendungen weiterhin abgeleitete oder zuletzt bekannte position
- und orientation
-Werte erhalten. Diese abgeleiteten Posen können beispielsweise auf Aktualisierungen des Nackenmodells, dem Trägheitsnavigationssystem oder der zuletzt bekannten Position basieren. Eine Anwendung kann davon ausgehen, dass XR_SPACE_LOCATION_POSITION_VALID_BIT
und XR_VIEW_STATE_POSITION_VALID_BIT
weiterhin festgelegt sind. XR_SPACE_LOCATION_POSITION_TRACKED_BIT
und XR_VIEW_STATE_POSITION_TRACKED_BIT
können jedoch von der Laufzeit gelöscht werden, um anzugeben, dass die Position auf diese Weise abgeleitet oder als letzte bekannte Position festgelegt wurde.
Wenn das Tracking wiederhergestellt wird, kann die Laufzeit den Ursprung beliebig neu ausrichten, z. B. so, dass er mit dem Betrachter übereinstimmt. Eine Anwendung kann den Wert poseValid
prüfen, der vom Ereignis XrEventDataReferenceSpaceChangePending zurückgegeben wird, um festzustellen, ob es einsatzbereit ist.
Neue Objekttypen
Neue Flaggentypen
Neue Enum-Konstanten
Die Aufzählung XrReferenceSpaceType wird um Folgendes erweitert:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Neue Enums
Neue Strukturen
Neue Funktionen
Probleme
Versionsverlauf
- Revision 1, 12.09.2024 (Levana Chen)
- Erste Beschreibung der Erweiterung