이름 문자열
XR_ANDROID_trackables
확장 프로그램 유형
인스턴스 연장
등록된 부속 번호
456
버전
1
확장 프로그램 및 버전 종속 항목
최종 수정일
2024-09-30
IP 상태
알려진 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 함수를 사용하여 해제해야 합니다.
유효한 사용 (암시적)
- xrCreateTrackableTrackerANDROID를 호출하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. 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 구조는 xrCreateTrackableTrackerANDROID에 전달될 때 XrTrackableTrackerANDROID의 생성 옵션을 제공합니다.
확장 프로그램은 추적 가능한 위치 추적기의 추가 구성을 허용하도록 next
에 연결할 수 있는 구조를 정의할 수 있습니다.
유효한 사용 (암시적)
- XrTrackableTrackerCreateInfoANDROID를 사용하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. type
는XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
여야 합니다.next
는NULL
이거나 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다. 참고: XrTrackableObjectConfigurationANDROIDtrackableType
는 유효한 XrTrackableTypeANDROID 값이어야 합니다.
XrTrackableTypeANDROID enum은 다음과 같이 정의됩니다.
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
는 이전에 xrCreateTrackableTrackerANDROID로 만든 XrTrackableTrackerANDROID 핸들입니다.
xrDestroyTrackableTrackerANDROID 함수는 추적 가능한 위치 추적기를 삭제합니다.
동일한 XrTrackableTypeANDROID로 생성된 유효한 XrTrackableTrackerANDROID가 없는 경우 시스템은 시스템 리소스를 절약하기 위해 해당 추적 가능한 유형에 필요한 추적 서비스를 사용 중지할 수 있습니다.
유효한 사용 (암시적)
- xrDestroyTrackableTrackerANDROID를 호출하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. 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
배열에 대한 포인터입니다.trackableCapacityInput
이 0인 경우NULL
일 수 있습니다.필요한
trackables
크기를 검색하는 방법에 관한 자세한 내용은 버퍼 크기 매개변수 섹션을 참고하세요.
xrGetAllTrackablesANDROID는 환경에서 찾은 추적 가능한 항목을 나타내는 XrTrackableANDROID
배열을 채웁니다. 반환된 trackables
의 XrTrackableTypeANDROID는 trackableTracker
의 XrTrackableTypeANDROID와 일치해야 합니다.
추적 가능한 비행기 가져오기
xrGetTrackablePlaneANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
매개변수 설명
trackableTracker
는 쿼리할 XrTrackableTrackerANDROID입니다.getInfo
는 추적 가능한 평면을 가져오는 데 사용되는 정보가 포함된 XrTrackableGetInfoANDROID입니다.planeOutput
는 추적 가능한 평면이 반환되는 XrTrackablePlaneANDROID 구조에 대한 포인터입니다.
xrGetTrackablePlaneANDROID 함수는 추적 가능한 평면의 도형, 방향, 추적 상태와 같은 세부정보를 반환합니다.
평면 정보는 XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace를 사용하여 xrGetTrackablePlaneANDROID를 호출할 때 결정되며 기본 공간을 기준으로 합니다.
유효한 사용 (암시적)
- xrGetTrackablePlaneANDROID를 호출하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. 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
평면 포즈는time
의 이 XrSpace를 기준으로 합니다.time
는baseSpace
를 기준으로 좌표를 평가할XrTime
입니다.
XrTrackableGetInfoANDROID 구조는 xrGetTrackablePlaneANDROID에 전달될 때 쿼리 옵션을 제공합니다. trackable
는 xrGetTrackablePlaneANDROID에서 사용된 trackableTracker
와 일치해야 합니다.
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
는 상응하는 XrTrackableGetInfoANDROID::baseSpace의 기준 프레임 내에서 평면의 위치와 방향을 정의하는 XrPosef입니다. 여기서 정체성 방향은 +Y가 평면의 법선과 평행한 좌표축을 나타냅니다.extents
는 평면의 XrExtent2Df 크기입니다.planeType
는 런타임에서 이 영역을 위해 결정한 XrPlaneTypeANDROID입니다.planeLabel
는 런타임에서 이 영역에 대해 결정한 XrPlaneLabelANDROID입니다.subsumedByPlane
은 이 평면을 포함하는 평면의XrTrackableANDROID
입니다 (평면이 없는 경우XR_NULL_TRACKABLE_ANDROID
).lastUpdatedTime
은 평면의 마지막 업데이트XrTime
입니다.vertexCapacityInput
는vertices
배열의 용량이거나 0으로, 필요한 용량을 검색하라는 요청을 나타냅니다.vertexCountOutput
는 작성된vertices
개수의 포인터이거나vertices
가 충분하지 않은 경우 필요한 용량의 포인터입니다.vertices
는 XrVector2f 배열에 대한 포인터입니다.vertexCapacityInput
이 0인 경우NULL
일 수 있습니다. 꼭짓점은 시계 반대 방향 순서입니다. 다각형은 오목할 수 있으며 자체적으로 교차해서는 안 됩니다.- 필요한
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 enum은 XrTrackableANDROID
의 추적 상태를 설명합니다.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
설명 |
|
|
추적 가능 항목 또는 앵커 추적이 일시중지되었지만 향후 재개될 수 있음을 나타냅니다. |
|
이 추적 가능한 항목의 추적이 중지되었으며 다시 시작되지 않습니다. |
|
객체가 추적되고 현재 상태입니다. |
XrPlaneTypeANDROID enum은 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 enum은 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가 반환되는 핸들의 포인터입니다.
어느 시점에서든 앵커의 위치와 방향이 모두 추적되거나 추적 해제됩니다. 즉, 애플리케이션이 anchorOutput
에 대해 xrLocateSpace 또는 xrLocateSpaces를 호출할 때 XR_SPACE_LOCATION_POSITION_TRACKED_BIT
와 XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT
를 모두 설정하거나 모두 지워야 합니다.
애플리케이션은 결국 xrDestroySpace를 사용하여 반환된 XrSpace를 해제해야 합니다.
- 시스템이 앵커를 지원하지 않는 경우
XR_ERROR_FEATURE_UNSUPPORTED
를 반환해야 합니다. - 특정 앵커 첨부파일이 지원되지 않는 경우
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
를 반환해야 합니다.
유효한 사용 (암시적)
- xrCreateAnchorSpaceANDROID를 호출하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. 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
일 수 있습니다.
유효한 사용 (암시적)
- XrAnchorSpaceCreateInfoANDROID를 사용하기 전에
XR_ANDROID_trackables
확장 프로그램을 사용 설정해야 합니다. 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);
추적 가능한 평면을 가져오는 코드 예시
다음 코드 예는 충돌 결과 XR_ANDROID_raycast
또는 xrGetTrackablesANDROID
에서 가져온 기존 XrTrackableANDROID
에서 추적 가능한 평면을 가져오는 방법을 보여줍니다.
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);
새로운 기본 유형
새로운 객체 유형
새로운 enum 상수
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
새로운 enum
새로운 구조
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
새로운 함수
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
문제
버전 기록
- 버전 1, 2024년 9월 27일 (케니 베르카이머)
- 초기 확장 프로그램 설명