Stringa del nome
XR_ANDROID_trackables
Tipo di estensione
Estensione dell'istanza
Numero di estensione registrato
456
Revisione
1
Dipendenze di estensioni e versioni
Data ultima modifica
2024-09-30
Stato IP
Nessuna rivendicazione IP nota.
Collaboratori
Spencer Quin, Google
Nihav Jain, Google
John Pursey, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Panoramica
Questa estensione consente all'applicazione di accedere ai dispositivi rilevabili dall'ambiente fisico e di creare ancore collegate a un dispositivo rilevabile.
Questa estensione definisce gli elementi tracciabili aerei. Altre estensioni possono aggiungere altri tipi di parametri tracciabili. Ad esempio, XR_ANDROID_trackables_object aggiunge oggetti tracciabili e XR_ANDROID_depth_texture aggiunge buffer di profondità che consentono il raycasting a punti arbitrari nell'ambiente.
Un rilevabile è un elemento che viene rilevato nell'ambiente fisico (vedi XrTrackableTypeANDROID):
- un piano (ad es. parete, pavimento, soffitto, tavolo)
- un oggetto (ad es. tastiera, mouse, laptop)
Creare un tracker monitorabile
Un XrTrackableTrackerANDROID è un handle che rappresenta le risorse necessarie per rilevare e aggiornare i rilevabili di un determinato XrTrackableTypeANDROID nell'ambiente.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
La funzione xrCreateTrackableTrackerANDROID è definita come:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
Descrizioni dei parametri
sessionè la XrSession che crea il tracker.createInfoè un puntatore a una struttura XrTrackableTrackerCreateInfoANDROID contenente i parametri da utilizzare per creare il tracker.trackableTrackerè un puntatore a un handle in cui viene restituito il XrTrackableTrackerANDROID creato.
L'applicazione può utilizzare la funzione xrCreateTrackableTrackerANDROID per creare un tracker rilevabile.
XR_ERROR_FEATURE_UNSUPPORTEDviene restituito se il sistema non supporta gli elementi tracciabili del tipo specificato.XR_ERROR_PERMISSION_INSUFFICIENTviene restituito se le autorizzazioni richieste non sono state concesse all'app chiamante.
L'applicazione può utilizzare l'handle del tracker restituito nelle chiamate API successive. L'handle XrTrackableTrackerANDROID deve essere eventualmente liberato utilizzando la funzione xrDestroyTrackableTrackerANDROID.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di chiamare xrCreateTrackableTrackerANDROID sessiondeve essere un handle XrSession validocreateInfodeve essere un puntatore a una struttura XrTrackableTrackerCreateInfoANDROID validatrackableTrackerdeve essere un puntatore a un handle XrTrackableTrackerANDROID
Codici di ritorno
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_FEATURE_UNSUPPORTED
La struttura XrTrackableTrackerCreateInfoANDROID è definita come segue:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
Descrizioni dei membri
typeè il XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Queste strutture non sono definite in OpenXR di base o in questa estensione.trackableTypeè il valore XrTrackableTypeANDROID che verrà monitorato dal tracker.
La struttura XrTrackableTrackerCreateInfoANDROID fornisce opzioni di creazione per XrTrackableTrackerANDROID quando viene passata a xrCreateTrackableTrackerANDROID.
Le estensioni possono definire strutture che possono essere collegate a next per consentire una configurazione aggiuntiva per i tracker monitorabili.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di utilizzare XrTrackableTrackerCreateInfoANDROID typedeve essereXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROIDnextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture. Vedi anche: XrTrackableObjectConfigurationANDROIDtrackableTypedeve essere un valore XrTrackableTypeANDROID valido
L'enum XrTrackableTypeANDROID è definito come:
typedef enum XrTrackableTypeANDROID {
XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;
La funzione xrDestroyTrackableTrackerANDROID è definita come:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
Descrizioni dei parametri
trackableTrackerè un handle XrTrackableTrackerANDROID precedentemente creato da xrCreateTrackableTrackerANDROID.
La funzione xrDestroyTrackableTrackerANDROID distrugge il tracker tracciabile.
Se non esiste un altro XrTrackableTrackerANDROID valido creato con lo stesso XrTrackableTypeANDROID, il sistema potrebbe disattivare i servizi di monitoraggio richiesti per quel tipo di rilevamento per risparmiare risorse di sistema.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di chiamare xrDestroyTrackableTrackerANDROID trackableTrackerdeve essere un handle XrTrackableTrackerANDROID valido
Coerenza di thread
- L'accesso a
trackableTrackere a eventuali handle secondari deve essere sincronizzato esternamente
Codici di ritorno
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
Mostra tutti i dispositivi rilevabili
L'atomo XrTrackableANDROID è definito come:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID viene utilizzato per rappresentare un singolo rilevabile
ed è valido solo nel ciclo di vita del suo associato
XrTrackableTrackerANDROID.
La funzione xrGetAllTrackablesANDROID è definita come:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
Descrizioni dei parametri
trackableTrackerè l'XrTrackableTrackerANDROID su cui eseguire la query.trackableCapacityInputè la capacità dell'arraytrackableso 0 per indicare una richiesta di recupero della capacità richiesta.trackableCountOutputè un puntatore al conteggio ditrackablesscritto o un puntatore alla capacità richiesta nel caso in cuitrackablessia insufficiente.trackablesè un puntatore a un array diXrTrackableANDROID. Può essereNULLsetrackableCapacityInputè 0.Per una descrizione dettagliata del recupero della dimensione
trackablesrichiesta, consulta la sezione Parametri di dimensione del buffer.
xrGetAllTrackablesANDROID compila un array di
XrTrackableANDROID che rappresenta i rilevabili trovati nell'ambiente. Il valore XrTrackableTypeANDROID del valore trackables restituito deve corrispondere al valore XrTrackableTypeANDROID del valore trackableTracker.
Ottenere un aereo tracciabile
La funzione xrGetTrackablePlaneANDROID è definita come:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
Descrizioni dei parametri
trackableTrackerè l'XrTrackableTrackerANDROID su cui eseguire la query.getInfoè XrTrackableGetInfoANDROID con le informazioni utilizzate per ottenere il piano tracciabile.planeOutputè un puntatore alla struttura XrTrackablePlaneANDROID in cui viene restituito il piano tracciabile.
La funzione xrGetTrackablePlaneANDROID restituisce dettagli sul piano tracciabile, ad esempio la geometria, l'orientamento e lo stato del monitoraggio.
Le informazioni sul piano vengono risolte e sono relative allo spazio di base al momento della chiamata a xrGetTrackablePlaneANDROID utilizzando XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di chiamare xrGetTrackablePlaneANDROID trackableTrackerdeve essere un handle XrTrackableTrackerANDROID validogetInfodeve essere un puntatore a una struttura XrTrackableGetInfoANDROID validaplaneOutputdeve essere un puntatore a una struttura XrTrackablePlaneANDROID
Codici di ritorno
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_TIME_INVALID
La struttura XrTrackableGetInfoANDROID è definita come:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
Descrizioni dei membri
typeè il XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Queste strutture non sono definite in OpenXR di base o in questa estensione.trackableè il pianoXrTrackableANDROIDsu cui eseguire la query.baseSpacela posa dell'aereo sarà relativa a questo XrSpace intime.timeè ilXrTimein cui valutare le coordinate rispetto albaseSpace.
La struttura XrTrackableGetInfoANDROID fornisce opzioni di query quando viene passata a xrGetTrackablePlaneANDROID. trackable
deve corrispondere a trackableTracker utilizzato in
xrGetTrackablePlaneANDROID.
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID verrà restituito se il
tipo monitorabile di trackable non è XR_TRACKABLE_TYPE_PLANE_ANDROID.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di utilizzare XrTrackableGetInfoANDROID typedeve essereXR_TYPE_TRACKABLE_GET_INFO_ANDROIDnextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutturebaseSpacedeve essere un handle XrSpace valido
La struttura XrTrackablePlaneANDROID è definita come:
typedef struct XrTrackablePlaneANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent2Df extents;
XrPlaneTypeANDROID planeType;
XrPlaneLabelANDROID planeLabel;
XrTrackableANDROID subsumedByPlane;
XrTime lastUpdatedTime;
uint32_t vertexCapacityInput;
uint32_t* vertexCountOutput;
XrVector2f* vertices;
} XrTrackablePlaneANDROID;
Descrizioni dei membri
typeè il XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Queste strutture non sono definite in OpenXR di base o in questa estensione.trackingStateè lo stato XrTrackingStateANDROID dell'aereo.centerPoseè un XrPosef che definisce la posizione e l'orientamento del piano all'interno del sistema di riferimento del corrispondente XrTrackableGetInfoANDROID::baseSpace. Un orientamento dell'identità qui rappresenta assi di coordinate con +Y parallelo alla normale del piano.extentsè la dimensione XrExtent2Df del piano.planeTypeè il valore XrPlaneTypeANDROID determinato dal runtime per questo piano.planeLabelè il valore XrPlaneLabelANDROID determinato dal runtime per questo piano.subsumedByPlaneè ilXrTrackableANDROIDdel piano che lo include (XR_NULL_TRACKABLE_ANDROIDse non esiste).lastUpdatedTimeè ilXrTimedell'ultimo aggiornamento del piano.vertexCapacityInputè la capacità dell'arrayverticeso 0 per indicare una richiesta di recupero della capacità richiesta.vertexCountOutputè un puntatore al conteggio diverticesscritto o un puntatore alla capacità richiesta nel caso in cuiverticesnon sia sufficiente.verticesè un puntatore a un array di XrVector2f. Può essereNULLsevertexCapacityInputè 0. I vertici sono in ordine antiorario. Il poligono può essere concavo e non deve autointersecarsi.- Per una descrizione dettagliata del recupero della dimensione
verticesrichiesta, consulta la sezione Parametri di dimensione del buffer.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di utilizzare XrTrackablePlaneANDROID typedeve essereXR_TYPE_TRACKABLE_PLANE_ANDROIDnextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutturetrackingStatedeve essere un valore XrTrackingStateANDROID validoplaneTypedeve essere un valore XrPlaneTypeANDROID validoplaneLabeldeve essere un valore XrPlaneLabelANDROID validovertexCountOutputdeve essere un puntatore a un valoreuint32_tverticesdeve essere un puntatore a un array di strutturevertexCapacityInputXrVector2f- Il parametro
vertexCapacityInputdeve essere maggiore di0
L'enum XrTrackingStateANDROID descrive lo stato del monitoraggio
di un XrTrackableANDROID.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
Descrizione |
|
|
Indica che il monitoraggio tracciabile o degli ancoraggi è in pausa, ma potrebbe essere ripreso in futuro. |
|
Il monitoraggio di questo elemento tracciabile è stato interrotto e non verrà mai ripreso. |
|
L'oggetto viene monitorato e la sua posa è attuale. |
L'enum XrPlaneTypeANDROID indica il tipo di piano
XrTrackableANDROID.
typedef enum XrPlaneTypeANDROID {
XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;
L'enum XrPlaneLabelANDROID è un'etichetta per un piano XrTrackableANDROID.
typedef enum XrPlaneLabelANDROID {
XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
XR_PLANE_LABEL_WALL_ANDROID = 1,
XR_PLANE_LABEL_FLOOR_ANDROID = 2,
XR_PLANE_LABEL_CEILING_ANDROID = 3,
XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;
Creare uno spazio di ancoraggio
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Descrizioni dei parametri
sessionè la XrSession che crea lo spazio di ancoraggio.createInfoè un puntatore a una struttura XrAnchorSpaceCreateInfoANDROID contenente i parametri da utilizzare per creare lo spazio di ancoraggio.anchorOutputè un puntatore a un handle in cui viene restituito il XrSpace creato.
In qualsiasi momento, sia la posizione sia la direzione dell'ancora vengono monitorate o non monitorate. Ciò significa che sia XR_SPACE_LOCATION_POSITION_TRACKED_BIT sia XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT devono essere impostati o entrambi devono essere cancellati quando l'applicazione chiama xrLocateSpace o xrLocateSpaces per anchorOutput.
L'applicazione deve liberare l'XrSpace restituito utilizzando xrDestroySpace.
- Deve essere restituito
XR_ERROR_FEATURE_UNSUPPORTEDse il sistema non supporta le ancore. - Deve essere restituito
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDse l'attacco dell'ancora specifico non è supportato.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di chiamare xrCreateAnchorSpaceANDROID sessiondeve essere un handle XrSession validocreateInfodeve essere un puntatore a una struttura XrAnchorSpaceCreateInfoANDROID validaanchorOutputdeve essere un puntatore a un handle XrSpace
Codici di ritorno
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_POSE_INVALIDXR_ERROR_TIME_INVALIDXR_ERROR_OUT_OF_MEMORY
La struttura XrAnchorSpaceCreateInfoANDROID è definita come:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
Descrizioni dei membri
typeè il XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Queste strutture non sono definite in OpenXR di base o in questa estensione.spaceè lo XrSpace su cui verrà creata l'ancora.timeè l'XrTimedella creazione dell'ancora.poseè il XrPosef dell'ancora.trackableè l'XrTrackableANDROIDa cui verrà collegata l'ancora. Potrebbe essereXR_NULL_TRACKABLE_ANDROIDper creare un ancoraggio spaziale.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackablesdeve essere attivata prima di utilizzare XrAnchorSpaceCreateInfoANDROID typedeve essereXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDnextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutturespacedeve essere un handle XrSpace valido
Codice di esempio per ottenere tutti gli elementi tracciabili
Il seguente codice di esempio mostra come ottenere tutti gli elementi tracciabili di un determinato tipo.
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allPlaneTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allPlaneTrackables) {
// You now have all trackables of the specified type.
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);
Codice di esempio per ottenere il piano tracciabile
Il seguente codice di esempio mostra come ottenere un piano tracciabile da un XrTrackableANDROID esistente, ottenuto da un risultato di hit XR_ANDROID_raycast o xrGetTrackablesANDROID.
XrTrackableTrackerANDROID planeTracker; // previously created
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;
XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
planeTracker,
&planeGetInfo,
&plane
);
if (result == XR_SUCCESS) {
// Plane tracking state, center pose, extents, type now available in plane.
}
Codice di esempio per la creazione di uno spazio di ancoraggio
Il seguente codice di esempio mostra come creare uno spazio di ancoraggio associato a un elemento tracciabile.
XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };
XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&spatialAnchorCreateInfo,
&spatialAnchor
);
// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;
XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&trackableAnchorCreateInfo,
&trackableAnchor
);
while (true) {
// app update loop
// ...
// Get the current location of the anchor's space w.r.t the world.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);
if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
// Update anchor pose.
doDrawingForAnchor(anchorLocation.pose);
} else {
// ...
}
}
// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);
Nuovi tipi di base
Nuovi tipi di oggetti
Nuove costanti enum
L'enumerazione XrStructureType è stata estesa con:
XR_TYPE_TRACKABLE_GET_INFO_ANDROIDXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_TRACKABLE_PLANE_ANDROIDXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
L'enumerazione XrObjectType è estesa con:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
L'enumerazione XrResult è stata estesa con:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
Nuovi enum
Nuove strutture
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
Nuove funzioni
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
Problemi
Cronologia delle versioni
- Revisione 1, 27-09-2024 (Kenny Vercaemer)
- Descrizione iniziale dell'estensione.
OpenXR™ e il logo OpenXR sono marchi di proprietà di The Khronos Group Inc. e sono registrati come marchi in Cina, nell'Unione Europea, in Giappone e nel Regno Unito.