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 monitorabili. Ad esempio, XR_ANDROID_trackables_object
aggiunge oggetti
tracceabili 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_UNSUPPORTED
viene restituito se il sistema non supporta gli oggetti rilevabili del tipo specificato.XR_ERROR_PERMISSION_INSUFFICIENT
viene 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_trackables
deve essere attivata prima di chiamare xrCreateTrackableTrackerANDROID session
deve essere un handle XrSession validocreateInfo
deve essere un puntatore a una struttura XrTrackableTrackerCreateInfoANDROID validatrackableTracker
deve essere un puntatore a un handle XrTrackableTrackerANDROID
Codici di ritorno
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_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
èNULL
o 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_trackables
deve essere attivata prima di utilizzare XrTrackableTrackerCreateInfoANDROID type
deve essereXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
next
deve essereNULL
o un puntatore valido alla struttura successiva in una catena di strutture. Vedi anche: XrTrackableObjectConfigurationANDROIDtrackableType
deve 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 creato in precedenza 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_trackables
deve essere attivata prima di chiamare xrDestroyTrackableTrackerANDROID trackableTracker
deve essere un handle XrTrackableTrackerANDROID valido
Coerenza di thread
- L'accesso a
trackableTracker
e a eventuali handle secondari deve essere sincronizzato esternamente
Codici di ritorno
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_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'arraytrackables
o 0 per indicare una richiesta di recupero della capacità richiesta.trackableCountOutput
è un puntatore al conteggio ditrackables
scritto o un puntatore alla capacità richiesta nel caso in cuitrackables
sia insufficiente.trackables
è un puntatore a un array diXrTrackableANDROID
. Può essereNULL
setrackableCapacityInput
è 0.Per una descrizione dettagliata del recupero della dimensione
trackables
richiesta, consulta la sezione Parametri di dimensione del buffer.
xrGetAllTrackablesANDROID riempie 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 monitorabile
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_trackables
deve essere attivata prima di chiamare xrGetTrackablePlaneANDROID trackableTracker
deve essere un handle XrTrackableTrackerANDROID validogetInfo
deve essere un puntatore a una struttura XrTrackableGetInfoANDROID validaplaneOutput
deve essere un puntatore a una struttura XrTrackablePlaneANDROID
Codici di ritorno
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_LIMIT_REACHED
XR_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
èNULL
o 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 pianoXrTrackableANDROID
su cui eseguire la query.baseSpace
la posa dell'aereo sarà relativa a questo XrSpace intime
.time
è ilXrTime
in 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_trackables
deve essere attivata prima di utilizzare XrTrackableGetInfoANDROID type
deve essereXR_TYPE_TRACKABLE_GET_INFO_ANDROID
next
deve essereNULL
o un puntatore valido alla struttura successiva in una catena di strutturebaseSpace
deve 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
èNULL
o 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
è ilXrTrackableANDROID
del piano che lo include (XR_NULL_TRACKABLE_ANDROID
se non esiste).lastUpdatedTime
è ilXrTime
dell'ultimo aggiornamento del piano.vertexCapacityInput
è la capacità dell'arrayvertices
o 0 per indicare una richiesta di recupero della capacità richiesta.vertexCountOutput
è un puntatore al conteggio divertices
scritto o un puntatore alla capacità richiesta nel caso in cuivertices
non sia sufficiente.vertices
è un puntatore a un array di XrVector2f. Può essereNULL
severtexCapacityInput
è 0. I vertici sono in ordine antiorario. Il poligono può essere concavo e non deve autointersecarsi.- Per una descrizione dettagliata del recupero della dimensione
vertices
richiesta, consulta la sezione Parametri di dimensione del buffer.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackables
deve essere attivata prima di utilizzare XrTrackablePlaneANDROID type
deve essereXR_TYPE_TRACKABLE_PLANE_ANDROID
next
deve essereNULL
o un puntatore valido alla struttura successiva in una catena di strutturetrackingState
deve essere un valore XrTrackingStateANDROID validoplaneType
deve essere un valore XrPlaneTypeANDROID validoplaneLabel
deve essere un valore XrPlaneLabelANDROID validovertexCountOutput
deve essere un puntatore a un valoreuint32_t
vertices
deve essere un puntatore a un array di strutturevertexCapacityInput
XrVector2f- Il parametro
vertexCapacityInput
deve 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.
XR_ERROR_FEATURE_UNSUPPORTED
deve essere restituito se il sistema non supporta le ancore.- Deve essere restituito
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
se l'attacco dell'ancora specifico non è supportato.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackables
deve essere attivata prima di chiamare xrCreateAnchorSpaceANDROID session
deve essere un handle XrSession validocreateInfo
deve essere un puntatore a una struttura XrAnchorSpaceCreateInfoANDROID validaanchorOutput
deve essere un puntatore a un handle XrSpace
Codici di ritorno
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_LIMIT_REACHED
XR_ERROR_POSE_INVALID
XR_ERROR_TIME_INVALID
XR_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
èNULL
o 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'XrTime
della creazione dell'ancora.pose
è il XrPosef dell'ancora.trackable
è l'XrTrackableANDROID
a cui verrà collegata l'ancora. Potrebbe essereXR_NULL_TRACKABLE_ANDROID
per creare un ancoraggio spaziale.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_trackables
deve essere attivata prima di utilizzare XrAnchorSpaceCreateInfoANDROID type
deve essereXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
next
deve essereNULL
o un puntatore valido alla struttura successiva in una catena di strutturespace
deve 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_ANDROID
XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
XR_TYPE_TRACKABLE_PLANE_ANDROID
XR_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_ANDROID
XR_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.