Строка имени
XR_ANDROID_trackables
Тип расширения
Расширение экземпляра
Зарегистрированный внутренний номер
456
Редакция
1
Зависимости расширений и версий
Дата последнего изменения
2024-09-30
IP-статус
Нет известных претензий на интеллектуальную собственность.
Авторы
Спенсер Куин, Google
Нихав Джайн, Google
Джон Пёрси, Google
Джаред Файндер, Google
Левана Чен, Google
Кенни Веркамер, Google
Обзор
Это расширение позволяет приложению получать доступ к отслеживаемым объектам из физической среды и создавать привязки, прикрепленные к отслеживаемым объектам.
Это расширение определяет отслеживаемые самолеты. Другие расширения могут добавлять дополнительные отслеживаемые типы. Например, XR_ANDROID_trackables_object
добавляет отслеживаемые объекты, а XR_ANDROID_depth_texture
добавляет буферы глубины, которые позволяют выполнять лучевое приведение к произвольным точкам среды.
Отслеживаемое — это то, что отслеживается в физической среде (см. XrTrackableTypeANDROID ):
- плоскость (например, стена, пол, потолок, стол)
- объект (например, клавиатура, мышь, ноутбук)
Создайте отслеживаемый трекер
XrTrackableTrackerANDROID — это дескриптор, который представляет ресурсы, необходимые для обнаружения и обновления отслеживаемых объектов данного XrTrackableTypeANDROID в среде.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
Функция xrCreateTrackableTrackerANDROID определяется как:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
Описание параметров
-
session
— это XrSession , который создает трекер. -
createInfo
— это указатель на структуру XrTrackableTrackerCreateInfoANDROID , содержащую параметры, которые будут использоваться для создания трекера. -
trackableTracker
— это указатель на дескриптор, в котором возвращается созданный XrTrackableTrackerANDROID .
Приложение может использовать функцию xrCreateTrackableTrackerANDROID для создания отслеживаемого трекера.
-
XR_ERROR_FEATURE_UNSUPPORTED
будет возвращен, если система не поддерживает отслеживаемые объекты указанного типа. -
XR_ERROR_PERMISSION_INSUFFICIENT
будет возвращен, если вызывающему приложению не были предоставлены необходимые разрешения.
Приложение может использовать возвращенный дескриптор трекера в последующих вызовах API. Дескриптор XrTrackableTrackerANDROID в конечном итоге должен быть освобожден с помощью функции xrDestroyTrackableTrackerANDROID .
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
должно быть включено до вызова xrCreateTrackableTrackerANDROID. -
session
должен быть действительным дескриптором XrSession -
createInfo
должен быть указателем на действительную структуру XrTrackableTrackerCreateInfoANDROID. -
trackableTracker
должен быть указателем на дескриптор XrTrackableTrackerANDROID.
Коды возврата
-
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
Структура XrTrackableTrackerCreateInfoANDROID определяется как:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
Описания участников
-
type
— это XrStructureType этой структуры. -
next
имеет значениеNULL
или указатель на следующую структуру в цепочке структур. Никакие такие структуры не определены в ядре OpenXR или этом расширении. -
trackableType
— это XrTrackableTypeANDROID , который будет отслеживать трекер.
Структура XrTrackableTrackerCreateInfoANDROID предоставляет параметры создания для XrTrackableTrackerANDROID при передаче в xrCreateTrackableTrackerANDROID .
Расширения могут определять структуры, которые можно присоединить к next
чтобы обеспечить дополнительную настройку отслеживаемых трекеров.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
необходимо включить перед использованием XrTrackableTrackerCreateInfoANDROID. -
type
должен бытьXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
-
next
должен бытьNULL
или действительным указателем на следующую структуру в цепочке структур . См. также: XrTrackableObjectConfigurationANDROID. -
trackableType
должен быть допустимым значением XrTrackableTypeANDROID.
Перечисление XrTrackableTypeANDROID определяется как:
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;
Функция xrDestroyTrackableTrackerANDROID определяется как:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
Описание параметров
-
trackableTracker
— это дескриптор XrTrackableTrackerANDROID, ранее созданный xrCreateTrackableTrackerANDROID .
Функция xrDestroyTrackableTrackerANDROID уничтожает отслеживаемый трекер.
Если нет другого действительного XrTrackableTrackerANDROID , созданного с тем же XrTrackableTypeANDROID , система может отключить службы отслеживания, необходимые для этого отслеживаемого типа, для экономии системных ресурсов.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
должно быть включено до вызова xrDestroyTrackableTrackerANDROID. -
trackableTracker
должен быть действительным дескриптором XrTrackableTrackerANDROID.
Безопасность потоков
- Доступ к
trackableTracker
и любым дочерним дескрипторам должен быть синхронизирован извне.
Коды возврата
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED
-
XR_ERROR_HANDLE_INVALID
Получить все отслеживаемые файлы
Атом XrTrackableANDROID
определяется как:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID
используется для представления одного отслеживаемого объекта и действителен только в течение жизненного цикла связанного с ним XrTrackableTrackerANDROID .
Функция xrGetAllTrackablesANDROID определяется как:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
Описание параметров
trackableTracker
— это XrTrackableTrackerANDROID для запроса.trackableCapacityInput
— это емкость массиваtrackables
или 0, чтобы указать запрос на получение необходимой емкости.trackableCountOutput
— это указатель на количество записанныхtrackables
или указатель на необходимую емкость в случае, еслиtrackables
недостаточно.trackables
— это указатель на массивXrTrackableANDROID
. Оно может бытьNULL
еслиtrackableCapacityInput
равно 0.См. раздел «Параметры размера буфера» для подробного описания получения необходимого размера
trackables
.
xrGetAllTrackablesANDROID заполняет массив XrTrackableANDROID
представляющий отслеживаемые объекты, обнаруженные в среде. XrTrackableTypeANDROID возвращаемых trackables
должен совпадать с XrTrackableTypeANDROID trackableTracker
.
Получите отслеживаемый самолет
Функция xrGetTrackablePlaneANDROID определяется как:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
Описание параметров
trackableTracker
— это XrTrackableTrackerANDROID для запроса.getInfo
— это XrTrackableGetInfoANDROID , содержащий информацию, используемую для получения отслеживаемого самолета.planeOutput
— это указатель на структуру XrTrackablePlaneANDROID , в которой возвращается отслеживаемая плоскость.
Функция xrGetTrackablePlaneANDROID возвращает сведения об отслеживаемой плоскости, такие как ее геометрия, ориентация и состояние отслеживания.
Информация о плоскости разрешается относительно базового пространства во время вызова xrGetTrackablePlaneANDROID с использованием XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace .
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
должно быть включено до вызова xrGetTrackablePlaneANDROID. -
trackableTracker
должен быть действительным дескриптором XrTrackableTrackerANDROID. -
getInfo
должен быть указателем на действительную структуру XrTrackableGetInfoANDROID. -
planeOutput
должен быть указателем на структуру XrTrackablePlaneANDROID .
Коды возврата
-
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
Структура XrTrackableGetInfoANDROID определяется как:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
Описания участников
-
type
— это XrStructureType этой структуры. -
next
имеет значениеNULL
или указатель на следующую структуру в цепочке структур. Никакие такие структуры не определены в ядре OpenXR или этом расширении. -
trackable
— это плоскостьXrTrackableANDROID
для запроса. -
baseSpace
поза плоскости будет относительно этого XrSpace воtime
. -
time
— этоXrTime
, в котором можно оценить координаты относительноbaseSpace
.
Структура XrTrackableGetInfoANDROID предоставляет параметры запроса при передаче в xrGetTrackablePlaneANDROID . trackable
должен соответствовать trackableTracker
используемому в xrGetTrackablePlaneANDROID .
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
будет возвращен, если отслеживаемый тип trackable
объекта не XR_TRACKABLE_TYPE_PLANE_ANDROID
.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
необходимо включить перед использованием XrTrackableGetInfoANDROID. -
type
должен бытьXR_TYPE_TRACKABLE_GET_INFO_ANDROID
-
next
должно бытьNULL
или действительным указателем на следующую структуру в цепочке структур. -
baseSpace
должен быть действительным дескриптором XrSpace.
Структура XrTrackablePlaneANDROID определяется как:
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;
Описания участников
-
type
— это XrStructureType этой структуры. -
next
имеет значениеNULL
или указатель на следующую структуру в цепочке структур. Никакие такие структуры не определены в ядре OpenXR или этом расширении. -
trackingState
— это XrTrackingStateANDROID самолета. -
centerPose
— это XrPosef, определяющий положение и ориентацию плоскости в системе координат соответствующего XrTrackableGetInfoANDROID::baseSpace . Здесь тождественная ориентация представляет собой координатные оси с +Y, параллельные нормали плоскости. -
extents
— это размер плоскости XrExtent2Df . -
planeType
— это XrPlaneTypeANDROID , определенный средой выполнения для этой плоскости. -
planeLabel
— это XrPlaneLabelANDROID , определенный средой выполнения для этой плоскости. -
subsumedByPlane
— этоXrTrackableANDROID
плоскости, которая включает эту плоскость (XR_NULL_TRACKABLE_ANDROID
если таковой не существует). -
lastUpdatedTime
— этоXrTime
последнего обновления плоскости. -
vertexCapacityInput
— это емкость массиваvertices
или 0, чтобы указать запрос на получение необходимой емкости. -
vertexCountOutput
— это указатель на количество записанныхvertices
или указатель на требуемую емкость в случае, еслиvertices
недостаточно. -
vertices
— это указатель на массив XrVector2f . Оно может бытьNULL
еслиvertexCapacityInput
равен 0. Вершины располагаются против часовой стрелки. Многоугольник может быть вогнутым и не должен быть самопересекающимся. - См. раздел «Параметры размера буфера» для подробного описания получения необходимого размера
vertices
.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
необходимо включить перед использованием XrTrackablePlaneANDROID. -
type
должен бытьXR_TYPE_TRACKABLE_PLANE_ANDROID
-
next
должно бытьNULL
или действительным указателем на следующую структуру в цепочке структур. -
trackingState
должно быть допустимым значением XrTrackingStateANDROID. -
planeType
должно быть допустимым значением XrPlaneTypeANDROID. -
planeLabel
должно быть допустимым значением XrPlaneLabelANDROID. -
vertexCountOutput
должен быть указателем на значениеuint32_t
-
vertices
должны быть указателями на массив структурvertexCapacityInput
XrVector2f. - Параметр
vertexCapacityInput
должен быть больше0
Перечисление XrTrackingStateANDROID описывает состояние отслеживания XrTrackableANDROID
.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
Описание | |
| Указывает, что отслеживание или отслеживание привязки приостановлено, но может быть возобновлено в будущем. |
| Отслеживание на этом отслеживаемом объекте остановлено и никогда не будет возобновлено. |
| Объект отслеживается, и его поза актуальна. |
Перечисление XrPlaneTypeANDROID — это тип плоскости 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;
Перечисление XrPlaneLabelANDROID — это метка плоскости 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;
Создайте якорное пространство
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Описание параметров
-
session
— это XrSession , который создает пространство привязки. -
createInfo
— это указатель на структуру XrAnchorSpaceCreateInfoANDROID , содержащую параметры, которые будут использоваться для создания пространства привязки. -
anchorOutput
— это указатель на дескриптор, в котором возвращается созданное XrSpace .
В любой момент времени положение и направление якоря отслеживаются или не отслеживаются. Это означает, что оба XR_SPACE_LOCATION_POSITION_TRACKED_BIT
и XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT
должны быть установлены или оба должны быть очищены, когда приложение вызывает xrLocateSpace или xrLocateSpaces anchorOutput
.
Приложение должно в конечном итоге освободить возвращенный XrSpace с помощью xrDestroySpace .
-
XR_ERROR_FEATURE_UNSUPPORTED
должен быть возвращен, если система не поддерживает привязки. -
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
должен быть возвращен, если конкретное вложение привязки не поддерживается.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
должно быть включено до вызова xrCreateAnchorSpaceANDROID. -
session
должен быть действительным дескриптором XrSession -
createInfo
должен быть указателем на действительную структуру XrAnchorSpaceCreateInfoANDROID. -
anchorOutput
должен быть указателем на дескриптор XrSpace.
Коды возврата
-
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
Структура XrAnchorSpaceCreateInfoANDROID определяется как:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
Описания участников
-
type
— это XrStructureType этой структуры. -
next
имеет значениеNULL
или указатель на следующую структуру в цепочке структур. Никакие такие структуры не определены в ядре OpenXR или этом расширении. -
space
— это XrSpace , на котором будет создана привязка. -
time
— этоXrTime
создания привязки. -
pose
— это XrPosef якоря. -
trackable
— этоXrTrackableANDROID
, к которому будет прикреплена привязка. Это может бытьXR_NULL_TRACKABLE_ANDROID
для создания пространственной привязки.
Допустимое использование (неявное)
- Расширение
XR_ANDROID_trackables
необходимо включить перед использованием XrAnchorSpaceCreateInfoANDROID. -
type
должен бытьXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
-
next
должно бытьNULL
или действительным указателем на следующую структуру в цепочке структур. -
space
должен быть действительным дескриптором XrSpace
Пример кода для получения всех отслеживаемых объектов
В следующем примере кода показано, как получить все отслеживаемые объекты заданного типа.
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);
Пример кода для получения отслеживаемого самолета
В следующем примере кода показано, как получить отслеживаемую плоскость из существующего XrTrackableANDROID
, полученного из результата попадания XR_ANDROID_raycast
или 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.
}
Пример кода для создания пространства привязки
В следующем примере кода показано, как создать пространство привязки, прикрепленное к отслеживаемому объекту.
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);
Новые базовые типы
Новые типы объектов
Новые константы перечисления
Перечисление XrStructureType расширено:
-
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
Перечисление XrObjectType расширено:
-
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
Перечисление XrResult расширено:
-
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
-
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
Новые перечисления
Новые структуры
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
Новые функции
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
Проблемы
История версий
- Редакция 1, 27 сентября 2024 г. (Кенни Веркамер)
- Первоначальное описание расширения.