Имя Строка
XR_ANDROID_trackables
Тип расширения
Расширение экземпляра
Зарегистрированный добавочный номер
456
Пересмотр
1
Зависимости расширений и версий
Дата последнего изменения
2024-09-30
Статус ИС
Нет известных претензий на права интеллектуальной собственности.
Участники
Спенсер Куин, Google
Нихав Джайн, Google
Джон Перси, Google
Джаред Файндер, Google
Левана Чен, Google
Кенни Веркемер, Google
Обзор
Это расширение позволяет приложению получать доступ к отслеживаемым объектам из физической среды и создавать якоря, прикрепленные к отслеживаемым объектам.
Это расширение определяет отслеживаемые плоскости. Другие расширения могут добавлять дополнительные отслеживаемые типы. Например, XR_ANDROID_trackables_object
добавляет отслеживаемые объекты, а XR_ANDROID_depth_texture
добавляет буферы глубины, которые позволяют выполнять raycasting в произвольные точки в среде.
Отслеживаемое — это то, что отслеживается в физической среде (см. 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 .
Если тип trackable
объекта не равен XR_TRACKABLE_TYPE_PLANE_ANDROID
, будет возвращено значение XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
.
Допустимое использование (подразумеваемое)
- Перед использованием XrTrackableGetInfoANDROID необходимо включить расширение
XR_ANDROID_trackables
-
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
. в разделе «Параметры размера буфера».
Допустимое использование (подразумеваемое)
- Перед использованием XrTrackablePlaneANDROID необходимо включить расширение
XR_ANDROID_trackables
-
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, 2024-09-27 (Кенни Веркемер)
- Первоначальное описание расширения.
OpenXR™ и логотип OpenXR являются товарными знаками компании Khronos Group Inc. и зарегистрированы в качестве товарного знака в Китае, Европейском Союзе, Японии и Великобритании.