Chaîne de nom
XR_ANDROID_unbounded_reference_space
Type d'extension
Extension d'instance
Numéro d'extension enregistré
468
Révision
1
Dépendances d'extension et de version
Date de dernière modification
2024-09-12
État de l'adresse IP
Aucune revendication d'adresse IP connue.
Contributeurs
Spencer Quin, Google
Jared Finder, Google
Fengtao Fan, Google
Lachlan Ford, Google
Nihav Jain, Google
Levana Chen, Google
Présentation
Cette extension permet aux applications de créer un espace de référence UNBOUNDED_ANDROID
. Cet espace de référence permet au spectateur de se déplacer librement dans un environnement complexe, souvent à plusieurs mètres de son point de départ, tout en optimisant toujours la stabilité du système de coordonnées à proximité du spectateur. À mesure que l'appareil détecte davantage son environnement pour mieux comprendre la scène, l'origine de l'espace de référence peut dériver avec des ajustements énormes si nécessaire pour maintenir le suivi de l'appareil.
Pour créer un espace de référence UNBOUNDED_ANDROID
, l'application peut définir XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
et transmettre à 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));
L'espace de référence UNBOUNDED_ANDROID
établit une origine mondiale de la position du casque lorsque le suivi de l'appareil commence. Il est aligné sur la gravité pour exclure le tangage et le roulis, avec +X à droite, +Y vers le haut et -Z vers l'avant.
L'espace UNBOUNDED_ANDROID
est utile lorsqu'une application doit afficher un contenu à l'échelle mondiale qui s'étend au-delà des limites d'un seul STAGE
, par exemple un étage entier ou plusieurs étages d'un bâtiment.
Un espace UNBOUNDED_ANDROID
maintient la stabilité à proximité du spectateur en ajustant son origine au fil du temps. Il peut effectuer des ajustements légers et importants si nécessaire pour maintenir le suivi des appareils.
- L'environnement d'exécution ne doit pas mettre en file d'attente l'événement XrEventDataReferenceSpaceChangePending en réponse à des ajustements mineurs.
- L'environnement d'exécution doit mettre en file d'attente l'événement XrEventDataReferenceSpaceChangePending en réponse à des ajustements importants. Par exemple, la pose dans l'espace
UNBOUNDED_ANDROID
est réinitialisée en raison d'une perte de suivi, et le suivi est rétabli sur une estimation dissociée du monde (une "nouvelle carte"). - Le système actualise en permanence sa compréhension du monde et ajuste le suivi des appareils. Si une application nécessite une position persistante, quelle que soit la réinitialisation du suivi, une ancre peut être utilisée dans ce cas.
Événement de modification de l'espace de référence
Pour les paramètres définis par la structure XrEventDataReferenceSpaceChangePending renvoyée lors de la modification du monde ou de l'optimisation des événements de relocalisation:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
Descriptions des membres
referenceSpaceType
-XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
.changeTime
représente leXrTime
à partir duquel la relocalisation est terminée.poseValid
serafalse
en raison de l'estimation de la déconnexion outrue
après la reconnexion.poseInPreviousSpace
n'est pas valide lorsqueposeValid
estfalse
.
Lorsque des vues, des contrôleurs ou d'autres espaces enregistrent une perte de suivi par rapport à l'espace UNBOUNDED_ANDROID
, les applications peuvent continuer à recevoir des valeurs position
et orientation
inférées ou connues pour la dernière fois. Ces poses inférées peuvent, par exemple, être basées sur les mises à jour du modèle de cou, la navigation inertielle ou la dernière position connue. Une application peut supposer que XR_SPACE_LOCATION_POSITION_VALID_BIT
et XR_VIEW_STATE_POSITION_VALID_BIT
continueront d'être définis, mais XR_SPACE_LOCATION_POSITION_TRACKED_BIT
et XR_VIEW_STATE_POSITION_TRACKED_BIT
peuvent être effacés par l'environnement d'exécution pour indiquer que la position est inférée ou connue pour la dernière fois de cette manière.
Lorsque le suivi est rétabli, l'environnement d'exécution peut recentrer l'origine de manière arbitraire, par exemple en la déplaçant pour qu'elle coïncide avec le lecteur. Une application peut vérifier la valeur poseValid
renvoyée par l'événement XrEventDataReferenceSpaceChangePending pour déterminer si elle est prête à l'emploi.
Nouveaux types d'objets
Nouveaux types d'indicateurs
Nouvelles constantes d'énumération
L'énumération XrReferenceSpaceType est étendue avec:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Nouvelles énumérations
Nouvelles structures
Nouvelles fonctions
Problèmes
Historique des versions
- Révision 1, 12/09/2024 (Levana Chen)
- Description initiale de l'extension