이름 문자열
XR_ANDROID_trackables_object
확장 프로그램 유형
인스턴스 연장
등록된 부속 번호
467
버전
1
확장 프로그램 및 버전 종속 항목
최종 수정일
2024-11-01
IP 상태
알려진 IP 소유권 주장이 없습니다.
도움을 주신 분들
디에고 티팔디, Google
데이비드 조셉 탄, Google
크리스토퍼 도어, Google
스펜서 퀸, Google
재러드 파인더, Google
레바나 첸, Google
케니 베르카머, Google
개요
이 확장 프로그램은 실제 물체 추적을 지원합니다. 예를 들어 키보드, 마우스, 환경의 기타 객체가 있습니다.
객체 추적
이 확장 프로그램은 XrTrackableTypeANDROID
에 XR_TRACKABLE_TYPE_OBJECT_ANDROID
를 추가합니다.
애플리케이션은 xrCreateTrackableTrackerANDROID
를 호출하고 XrTrackableTrackerCreateInfoANDROID::trackableType
에서 추적 가능한 유형으로 XR_TRACKABLE_TYPE_OBJECT_ANDROID
을 지정하여 객체를 추적하는 XrTrackableTrackerANDROID
를 만들 수 있습니다.
XrTrackableObjectConfigurationANDROID
구조는 다음과 같이 정의됩니다.
typedef struct XrTrackableObjectConfigurationANDROID {
XrStructureType type;
void* next;
uint32_t labelCount;
const XrObjectLabelANDROID* activeLabels;
} XrTrackableObjectConfigurationANDROID;
회원 설명
type
은 이 구조의XrStructureType
입니다.next
는NULL
또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.labelCount
는activeLabels
의 개수입니다.activeLabels
는 추적에서 활성 객체를 나타내는XRObjectLabelANDROID
배열에 대한 포인터입니다.
애플리케이션은 다음 XrTrackableTrackerCreateInfoANDROID
체인에 XrTrackableObjectConfigurationANDROID
를 추가하여 추가 구성을 설정할 수 있습니다. xrGetAllTrackablesANDROID
의 출력은 activeLabels
와 일치하도록 필터링됩니다.
애플리케이션에서 XrTrackableObjectConfigurationANDROID
를 설정하지 않으면 시스템에서 식별한 모든 객체가 추적됩니다.
유효한 사용 (암시적)
XrTrackableObjectANDROID
를 사용하기 전에XR_ANDROID_trackables_object
확장 프로그램을 사용 설정해야 합니다.type
는XR_TYPE_TRACKABLE_OBJECT_ANDROID
여야 합니다.next
는NULL
이거나 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.activeLabels
는 유효한labelCount
XrObjectLabelANDROID
값 배열의 포인터여야 합니다.labelCount
매개변수는0
보다 커야 합니다.
XrObjectLabelANDROID
enum은 XrTrackableANDROID
객체의 라벨입니다.
typedef enum XrObjectLabelANDROID {
XR_OBJECT_LABEL_UNKNOWN_ANDROID = 0,
XR_OBJECT_LABEL_KEYBOARD_ANDROID = 1,
XR_OBJECT_LABEL_MOUSE_ANDROID = 2,
XR_OBJECT_LABEL_LAPTOP_ANDROID = 3,
XR_OBJECT_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrObjectLabelANDROID;
추적 가능한 객체 가져오기
xrGetTrackableObjectANDROID
함수는 다음과 같이 정의됩니다.
XrResult xrGetTrackableObjectANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableObjectANDROID* objectOutput);
매개변수 설명
tracker
는 쿼리할XrTrackableTrackerANDROID
입니다.getInfo
는 추적 가능한 객체를 가져오는 데 사용되는 정보가 포함된XrTrackableGetInfoANDROID
입니다.objectOutput
는 추적 가능한 객체가 반환되는XrTrackableObjectANDROID
구조체의 포인터입니다.
XrTrackableANDROID
의 추적 가능한 유형이 XR_TRACKABLE_TYPE_OBJECT_ANDROID
이 아니거나 XrTrackableTrackerANDROID
의 추적 가능한 유형이 XR_TRACKABLE_TYPE_OBJECT_ANDROID
이 아닌 경우 XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
이 반환됩니다.
유효한 사용 (암시적)
xrGetTrackableObjectANDROID
를 호출하기 전에XR_ANDROID_trackables_object
확장 프로그램을 사용 설정해야 합니다.tracker
는 유효한XrTrackableTrackerANDROID
핸들여야 합니다.getInfo
는 유효한XrTrackableGetInfoANDROID
구조체에 대한 포인터여야 합니다.objectOutput
는XrTrackableObjectANDROID
구조체의 포인터여야 합니다.
반품 코드
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_SESSION_NOT_RUNNING
XR_ERROR_TIME_INVALID
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
XrTrackableObjectANDROID
구조는 다음과 같이 정의됩니다.
typedef struct XrTrackableObjectANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent3DfEXT extents;
XrObjectLabelANDROID objectLabel;
XrTime lastUpdatedTime;
} XrTrackableObjectANDROID;
회원 설명
type
은 이 구조의XrStructureType
입니다.next
는NULL
또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.trackingState
은 객체의XrTrackingStateANDROID
입니다.centerPose
는XrTrackableGetInfoANDROID::baseSpace
에 있는 객체의XrPosef
입니다.extents
은 객체의XrExtent3DfEXT
크기입니다.objectLabel
는 런타임에서 이 객체에 대해 결정한XrObjectLabelANDROID
입니다.lastUpdatedTime
은 객체의 마지막 업데이트XrTime
입니다.
유효한 사용 (암시적)
XrTrackableObjectANDROID
를 사용하기 전에XR_ANDROID_trackables_object
확장 프로그램을 사용 설정해야 합니다.type
는XR_TYPE_TRACKABLE_OBJECT_ANDROID
여야 합니다.next
는NULL
이거나 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.trackingState
은(는) 유효한XrTrackingStateANDROID
값이어야 합니다.objectLabel
은(는) 유효한XrObjectLabelANDROID
값이어야 합니다.
추적 가능한 객체를 가져오는 코드 예시
다음 코드 예는 추적 가능한 객체를 가져오는 방법을 보여줍니다.
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrGetTrackableObjectANDROID xrGetTrackableObjectANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableTrackerCreateInfoANDROID
createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_OBJECT_ANDROID;
XrTrackableTrackerANDROID objectTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&objectTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allObjectTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
objectTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allObjectTrackables.resize(trackableCountOutput, XR_NULL_TRACKABLE_ANDROID);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
objectTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allObjectTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allObjectTrackables) {
// Object trackable query information
XrTrackableGetInfoANDROID objectGetInfo;
objectGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
objectGetInfo.next = nullptr;
objectGetInfo.trackable = trackable;
objectGetInfo.baseSpace = appSpace;
objectGetInfo.time = updateTime;
// Get the object trackable. Note that the tracker only returns object types.
XrTrackableObjectANDROID object = { XR_TYPE_TRACKABLE_OBJECT_ANDROID };
result = xrGetTrackableObjectANDROID(
objectTrackableTracker,
&objectGetInfo,
&object
);
if (result == XR_SUCCESS) {
/** Do Stuff with the object */
}
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(objectTrackableTracker);
새로운 enum 상수
XrStructureType
열거형이 다음과 같이 확장되었습니다.
XR_TYPE_TRACKABLE_OBJECT_ANDROID
XR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
XrTrackableTypeANDROID
열거형이 다음과 같이 확장되었습니다.
XR_TRACKABLE_TYPE_OBJECT_ANDROID
새로운 enum
새로운 구조
새로운 함수
문제
버전 기록
- 버전 1, 2024년 10월 3일 (케니 베르카이머)
- 초기 확장 프로그램 설명
OpenXR™ 및 OpenXR 로고는 Khronos Group Inc. 소유의 상표이며 중국, 유럽연합, 일본, 영국에서 상표로 등록되어 있습니다.