Stringa del nome
XR_ANDROID_unbounded_reference_space
Tipo di estensione
Estensione dell'istanza
Numero di estensione registrato
468
Revisione
1
Dipendenze di estensioni e versioni
Data ultima modifica
2024-09-12
Stato IP
Nessuna rivendicazione IP nota.
Collaboratori
Spencer Quin, Google
Jared Finder, Google
Fengtao Fan, Google
Lachlan Ford, Google
Nihav Jain, Google
Levana Chen, Google
Panoramica
Questa estensione consente alle applicazioni di creare uno UNBOUNDED_ANDROID
spazio di riferimento. Questo spazio di riferimento consente allo spettatore di muoversi liberamente in un ambiente complesso, spesso a molti metri da dove ha iniziato, ottimizzando sempre la stabilità del sistema di coordinate vicino allo spettatore. Man mano che il dispositivo rileva di più
nel suo ambiente per comprendere meglio la scena, l'origine dello
spazio di riferimento può variare con aggiustamenti enormi, se necessario, per mantenere
il monitoraggio del dispositivo.
Per creare uno spazio di riferimento UNBOUNDED_ANDROID
, l'applicazione può impostare
XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
e passare a
xrCreateReferenceSpace.
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));
Lo spazio di riferimento UNBOUNDED_ANDROID
stabilisce un'origine bloccata a livello mondiale della posizione dell'headset all'avvio del monitoraggio del dispositivo. È allineato alla gravità per escludere inclinazione e roll, con +X a destra, +Y in alto e -Z in avanti.
Lo spazio UNBOUNDED_ANDROID
è utile quando un'applicazione deve visualizzare contenuti a livello mondiale che vanno oltre i confini di un singolo STAGE
, ad esempio un intero piano o più piani di un edificio.
Uno spazio UNBOUNDED_ANDROID
mantiene la stabilità vicino allo spettatore regolando la sua origine nel tempo. Può apportare aggiustamenti lievi e significativi, se necessario, per mantenere il monitoraggio del dispositivo.
- Il runtime non deve mettere in coda l'evento XrEventDataReferenceSpaceChangePending in risposta a piccoli aggiustamenti.
- Il runtime deve mettere in coda
l'evento
XrEventDataReferenceSpaceChangePending in risposta a
aggiustamenti enormi. Ad esempio, la posa nello spazio
UNBOUNDED_ANDROID
viene reimpostata a causa di una perdita del rilevamento e il rilevamento viene ristabilito su una stima disconnessa del mondo ("nuova mappa"). - Il sistema aggiorna costantemente la propria comprensione del mondo e aggiusta il monitoraggio dei dispositivi. Se un'applicazione richiede una posizione permanente indipendentemente dai reset del monitoraggio, in questo caso puoi utilizzare un'ancora.
Evento di modifica dello spazio di riferimento
Per i parametri definiti dalla struttura XrEventDataReferenceSpaceChangePending che è stata restituita in caso di modifica del mondo o ottimizzazione degli eventi di rilocalizzazione:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
Descrizioni dei membri
referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
.changeTime
rappresenterà ilXrTime
al termine della relocalizzazione.poseValid
saràfalse
a causa della stima disconnessa otrue
dopo la ricollegamento.poseInPreviousSpace
non sarà valido quandoposeValid
èfalse
.
Quando le visualizzazioni, i controller o altri spazi registrano una perdita di monitoraggio rispetto allo spazioUNBOUNDED_ANDROID
, le applicazioni possono continuare a ricevere valori position
e orientation
dedotti o di ultima conoscenza. Queste pose dedotte possono, ad esempio, basarsi su aggiornamenti del modello del collo, navigazione stimata inerziale o su una
posizione nota per ultima. Un'applicazione può presumere che continuerà ad avere i valori XR_SPACE_LOCATION_POSITION_VALID_BIT
e XR_VIEW_STATE_POSITION_VALID_BIT
impostati, ma XR_SPACE_LOCATION_POSITION_TRACKED_BIT
e XR_VIEW_STATE_POSITION_TRACKED_BIT
potrebbero essere cancellati dal runtime per indicare che la posizione è dedotta o dell'ultima nota in questo modo.
Quando il monitoraggio viene recuperato, il runtime potrebbe recentrare l'origine in modo arbitrario, ad esempio spostandola in modo che corrisponda allo spettatore. Un'applicazione può controllare il valore poseValid
restituito dall'evento XrEventDataReferenceSpaceChangePending per determinare se è pronta per l'uso.
Nuovi tipi di oggetti
Nuovi tipi di indicatori
Nuove costanti enum
L'enumerazione XrReferenceSpaceType è estesa con:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Nuovi enum
Nuove strutture
Nuove funzioni
Problemi
Cronologia delle versioni
- Revisione 1, 12-09-2024 (Levana Chen)
- Descrizione iniziale dell'estensione