Имя Строка
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должен быть указателем на массив структурvertexCapacityInputXrVector2f - Параметр
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. и зарегистрированы в качестве товарного знака в Китае, Европейском Союзе, Японии и Великобритании.