XR_ANDROID_scene_meshing
이름 문자열
XR_ANDROID_scene_meshing
확장 프로그램 유형
인스턴스 확장 프로그램
등록된 내선 번호
719개
버전
3
승인 상태
비준되지 않음
확장 프로그램 및 버전 종속 항목
최종 수정일
2025-05-15
IP 상태
알려진 IP 소유권 주장이 없습니다.
도움을 주신 분들
스펜서 퀸, Google
자레드 파인더, Google
안토니오 폰탄, Google
케언 오버터프, Google
니하브 자인, Google
살라르 칸, Google
세바스찬 클로제, Google
위르겐 슈투름, Google
비니 다실바, Google
리카르도 캠벨, Google
개요
이 확장 프로그램은 사용자 환경의 실제 객체를 대략적으로 나타내는 메시를 제공하기 위한 것입니다.
애플리케이션은 이 확장 프로그램을 사용하여 장면을 시각화하고 가상 객체가 충돌과 같은 실제 객체와 상호작용하도록 할 수 있습니다.
장면 메시 데이터는 런타임에 의해 생성되며 XrSceneMeshingTrackerANDROID 및 XrSceneMeshSnapshotANDROID를 사용하여 애플리케이션과 공유됩니다. 애플리케이션은 xrGetAllSubmeshStatesANDROID에서 반환된 XrSceneSubmeshStateANDROID를 통해 장면 하위 메시 정보의 값에 액세스할 수 있습니다. 애플리케이션은 xrGetSubmeshDataANDROID에서 반환된 XrSceneSubmeshDataANDROID를 통해 장면 하위 메시 데이터의 값에 액세스할 수 있습니다.
장면 메시 데이터는 민감한 개인 정보이며 개인 정보 보호 및 무결성과 밀접하게 연결되어 있습니다. 장면 메시 데이터를 저장하거나 전송하는 애플리케이션은 항상 사용자에게 이를 위한 적극적이고 구체적인 동의를 요청하는 것이 좋습니다.
권한
Android 애플리케이션은 매니페스트에 android.permission.SCENE_UNDERSTANDING_FINE 권한이 나열되어 있어야 합니다. android.permission.SCENE_UNDERSTANDING_FINE 권한은 런타임에서 사용자 환경을 연구할 수 있도록 허용하므로 민감한 권한으로 간주됩니다.
애플리케이션은 런타임에 권한을 요청하여 다음 함수를 사용해야 합니다(must).
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(보호 수준: 위험)
시스템 기능 검사
XrSystemSceneMeshingPropertiesANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.supportsSceneMeshing는 시스템이 장면 메시를 지원하는지 나타내는XrBool32입니다.
애플리케이션은 xrGetSystemProperties를 호출할 때 XrSystemSceneMeshingPropertiesANDROID 구조를 XrSystemProperties에 연결하여 시스템이 장면 메시를 생성할 수 있는지 검사할 수 있습니다.
런타임이 supportsSceneMeshing에 대해 XR_FALSE를 반환하는 경우 시스템은 장면 메시를 지원하지 않으므로 xrCreateSceneMeshingTrackerANDROID에서 XR_ERROR_FEATURE_UNSUPPORTED를 반환해야 합니다(must). supportsSceneMeshing가 XR_FALSE인 경우 애플리케이션은 장면 메시 기능을 사용하지 않아야 합니다.
런타임이 supportsSceneMeshing에 대해 XR_TRUE를 반환하면 시스템은 장면 메시를 지원합니다.
올바른 사용 (암시적)
- XrSystemSceneMeshingPropertiesANDROID를 사용하기 전에
XR_ANDROID_scene_meshing확장 프로그램을 사용 설정해야 합니다(must). -
type은(는)XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.
XrSceneMeshSemanticLabelSetANDROID 열거형은 장면 메시의 시맨틱 라벨 세트를 설명합니다. 이 enum의 각 값은 시맨틱 라벨이 포함된 다른 enum을 나타냅니다. 예를 들어 XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID 값은 XrSceneMeshSemanticLabelANDROID 집합을 나타냅니다.
typedef enum XrSceneMeshSemanticLabelSetANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID = 1000801000,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
열거형 값의 의미는 다음과 같습니다.
enum 설명
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
이 시맨틱 라벨 세트는 시맨틱 라벨이 없음을 나타냅니다.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
이 시맨틱 라벨 세트는 XrSceneMeshSemanticLabelANDROID를 나타냅니다.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID
이 시맨틱 라벨 세트는 XrSceneMeshSemanticLabel2ANDROID를 나타냅니다. (XR_ANDROID_scene_meshing_semantic_label2 확장 프로그램에서 추가됨)
xrEnumerateSupportedSemanticLabelSetsANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
파라미터 설명
instance는 애플리케이션에서 만든 XrInstance입니다.systemId는 xrGetSystem에서 재시도된XrSystemId입니다.supportedSemanticLabelSetsInputCapacity은supportedSemanticLabelSets의 용량 또는 필요한 용량을 가져오기 위한 0입니다.supportedSemanticLabelSetsOutputCount는 작성된supportedSemanticLabelSets의 개수에 대한 포인터이거나supportedSemanticLabelSetsInputCapacity가 부족한 경우 필요한 용량에 대한 포인터입니다.supportedSemanticLabelSets는 XrSceneMeshSemanticLabelSetANDROID 배열의 포인터입니다.supportedSemanticLabelSetsInputCapacity가 0인 경우NULL일 수 있습니다.- 필요한
supportedSemanticLabelSets크기를 가져오는 방법에 관한 자세한 설명은 버퍼 크기 매개변수 장을 참고하세요.
애플리케이션은 xrEnumerateSupportedSemanticLabelSetsANDROID 함수를 사용하여 시스템에서 지원하는 시맨틱 라벨 세트를 열거할 수 있습니다(CAN).
이 enum 값은 시맨틱 라벨 집합이 없음을 나타내며 애플리케이션에 꼭짓점 시맨틱이 필요하지 않은 경우에 사용될 수 있으므로 모든 시스템은 최소한 XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID를 지원해야 합니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrEnumerateSupportedSemanticLabelSetsANDROID를 호출하기 전에 사용 설정해야 합니다. -
instance는 유효한 XrInstance 핸들이어야 합니다. -
supportedSemanticLabelSetsOutputCount는uint32_t값에 대한 포인터여야 합니다. -
supportedSemanticLabelSetsInputCapacity가0가 아닌 경우supportedSemanticLabelSets는supportedSemanticLabelSetsInputCapacityXrSceneMeshSemanticLabelSetANDROID 값 배열의 포인터여야 합니다.
반품 코드
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
장면 메시 추적기 핸들 만들기
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
XrSceneMeshingTrackerANDROID 핸들은 장면 메시 및 관련 리소스 관리를 위한 장면 메시 추적기를 나타냅니다.
이 핸들은 이 확장 프로그램에서 xrCreateSceneMeshSnapshotANDROID를 사용하여 장면 메시 스냅샷을 만드는 데 사용할 수 있습니다.
xrCreateSceneMeshingTrackerANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
파라미터 설명
session은 장면 메시 추적기가 활성화되는 XrSession입니다.createInfo는 생성할 장면 메시 추적기를 설명하는 데 사용되는 XrSceneMeshingTrackerCreateInfoANDROID 구조의 포인터입니다.tracker는 반환된 XrSceneMeshingTrackerANDROID 핸들입니다.
애플리케이션은 xrCreateSceneMeshingTrackerANDROID 함수를 사용하여 XrSceneMeshingTrackerANDROID 핸들을 만들 수 있습니다.
시스템이 장면 메시를 지원하지 않는 경우 런타임은 xrCreateSceneMeshingTrackerANDROID에서 XR_ERROR_FEATURE_UNSUPPORTED를 반환해야 합니다. 이 경우 xrGetSystemProperties 함수가 호출될 때 런타임은 XrSystemSceneMeshingPropertiesANDROID :: supportsSceneMeshing에 대해 XR_FALSE를 반환해야 합니다(MUST). 그러면 애플리케이션이 장면 메시 추적기를 만들지 않을 수 있습니다(CAN).
애플리케이션은 장면 메시 추적기를 만들 때 XrSceneMeshingTrackerCreateInfoANDROID :: semanticLabelSet에서 시스템이 지원하는 시맨틱 라벨 세트만 사용해야 합니다(must). 애플리케이션이 지원되지 않는 장면 메시 꼭짓점 시맨틱 라벨 세트를 사용하는 경우 런타임은 xrCreateSceneMeshingTrackerANDROID에서 XR_ERROR_FEATURE_UNSUPPORTED를 반환해야 합니다(must).
애플리케이션은 xrEnumerateSupportedSemanticLabelSetsANDROID 함수를 사용하여 지원되는 시맨틱 라벨 세트 목록을 열거할 수 있습니다.
xrCreateSceneMeshingTrackerANDROID 핸들은 장면 메시의 모든 리소스를 소유합니다. 장면 메시 생성 환경이 완료되면 애플리케이션은 xrDestroySceneMeshingTrackerANDROID 함수를 통해 핸들을 폐기해야 합니다(must).
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrCreateSceneMeshingTrackerANDROID를 호출하기 전에 사용 설정해야 합니다. -
session는 유효한 XrSession 핸들이어야 합니다. -
createInfo는 유효한 XrSceneMeshingTrackerCreateInfoANDROID 구조체에 대한 포인터여야 합니다. -
tracker는 XrSceneMeshingTrackerANDROID 핸들에 대한 포인터여야 합니다.
반품 코드
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrSceneMeshingTrackerCreateInfoANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSceneMeshingTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet;
XrBool32 enableNormals;
} XrSceneMeshingTrackerCreateInfoANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.semanticLabelSet는 장면 메시 생성에 사용할 시맨틱 라벨 세트를 지정하는 데 사용되는 XrSceneMeshSemanticLabelSetANDROID입니다. 이 값이XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID로 설정되면 런타임은 XrSceneSubmeshDataANDROID ::vertexSemantics버퍼 필드를 무시합니다.enableNormals는 장면 메시 데이터를 가져올 때 장면 메시 버퍼에 메시 꼭짓점의 꼭짓점 법선을 포함할지 지정하는 데 사용되는XrBool32입니다.
XrSceneMeshingTrackerCreateInfoANDROID 구조는 XrSceneMeshingTrackerANDROID 핸들을 만드는 정보를 설명합니다.
올바른 사용 (암시적)
- XrSceneMeshingTrackerCreateInfoANDROID를 사용하기 전에
XR_ANDROID_scene_meshing확장 프로그램을 사용 설정해야 합니다. -
type은(는)XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다. -
semanticLabelSet는 유효한 XrSceneMeshSemanticLabelSetANDROID 값이어야 합니다.
xrDestroySceneMeshingTrackerANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
파라미터 설명
tracker은 이전에 xrCreateSceneMeshingTrackerANDROID로 만든 XrSceneMeshingTrackerANDROID입니다.
xrDestroySceneMeshingTrackerANDROID 함수는 장면 메시 환경이 완료되면 tracker 및 기본 리소스를 해제합니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrDestroySceneMeshingTrackerANDROID를 호출하기 전에 사용 설정해야 합니다. -
tracker는 유효한 XrSceneMeshingTrackerANDROID 핸들이어야 합니다.
스레드 안전
tracker및 모든 하위 핸들에 대한 액세스는 외부에서 동기화되어야 합니다(must).
반품 코드
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
장면 메시 스냅샷 핸들 만들기
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
XrSceneMeshSnapshotANDROID 핸들은 장면 메시 스냅샷을 나타냅니다. 이 스냅샷은 함수 호출 시 장면 메시 데이터의 스냅샷을 찍는 xrCreateSceneMeshSnapshotANDROID를 사용하여 생성됩니다.
이 핸들은 xrGetAllSubmeshStatesANDROID 및 xrGetSubmeshDataANDROID를 사용하여 하위 메시 정보와 데이터를 가져오는 데 사용할 수 있습니다.
xrCreateSceneMeshSnapshotANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
파라미터 설명
tracker은 이전에 xrCreateSceneMeshingTrackerANDROID로 만든 XrSceneMeshingTrackerANDROID 핸들입니다.createInfo는 장면 메시 스냅샷을 만드는 데 필요한 정보가 포함된 XrSceneMeshSnapshotCreateInfoANDROID 구조의 포인터입니다.outSnapshotCreationResult는 XrSceneMeshSnapshotCreationResultANDROID 객체에 대한 포인터로, 런타임에서 스냅샷 생성 결과로 채워집니다.
애플리케이션은 xrCreateSceneMeshSnapshotANDROID 함수를 사용하여 장면 메시 추적기에서 장면 메시 스냅샷을 만들 수 있습니다. 이 함수는 XrSceneMeshSnapshotANDROID 핸들과 XrSceneMeshSnapshotCreationResultANDROID 구조로 래핑된 XrSceneMeshTrackingStateANDROID를 반환합니다. 핸들은 기술적으로 생성 시점의 장면 메시 데이터의 스냅샷입니다. 이 핸들은 각각 xrGetAllSubmeshStatesANDROID 및 xrGetSubmeshDataANDROID를 사용하여 장면 메시 정보와 데이터를 쿼리하는 데 사용할 수 있습니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrCreateSceneMeshSnapshotANDROID를 호출하기 전에 사용 설정해야 합니다. -
tracker는 유효한 XrSceneMeshingTrackerANDROID 핸들이어야 합니다. -
createInfo는 유효한 XrSceneMeshSnapshotCreateInfoANDROID 구조에 대한 포인터여야 합니다. -
outSnapshotCreationResult는 XrSceneMeshSnapshotCreationResultANDROID 구조체에 대한 포인터여야 합니다.
반품 코드
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALID
XrSceneMeshSnapshotCreateInfoANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.baseSpace는 장면 하위 메시 포즈 정보가 표현되는 XrSpace입니다.time는 장면 메시가 처리되거나 표시되는 시간을 설명하는XrTime입니다(일반적으로 XrFrameState ::predictedDisplayTime).boundingBox는 장면 메시를 획득할 경계 상자를 설명하는 XrBoxf입니다.
XrSceneMeshSnapshotCreateInfoANDROID 구조는 XrSceneMeshSnapshotANDROID 핸들을 만드는 정보를 설명합니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 XrSceneMeshSnapshotCreateInfoANDROID를 사용하기 전에 사용 설정해야 합니다. -
type은(는)XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다. -
baseSpace는 유효한 XrSpace 핸들이어야 합니다(must).
XrSceneMeshSnapshotCreationResultANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.snapshot은 런타임에서 생성된 XrSceneMeshSnapshotANDROID 핸들입니다.trackingState은 스냅샷 생성 시 장면 메시 추적기의 상태를 설명하는 XrSceneMeshTrackingStateANDROID입니다.
XrSceneMeshSnapshotCreationResultANDROID 구조는 xrCreateSceneMeshSnapshotANDROID에서 반환된 장면 메시 스냅샷 생성 결과를 저장합니다.
올바른 사용 (암시적)
- XrSceneMeshSnapshotCreationResultANDROID를 사용하기 전에
XR_ANDROID_scene_meshing확장 프로그램을 사용 설정해야 합니다. -
type은(는)XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다. -
snapshot는 유효한 XrSceneMeshSnapshotANDROID 핸들이어야 합니다. -
trackingState는 유효한 XrSceneMeshTrackingStateANDROID 값이어야 합니다.
XrSceneMeshTrackingStateANDROID 열거형은 장면 메시 추적기의 추적 상태를 설명합니다. 이 enum의 각 값은 장면 메시 추적기의 상태를 나타냅니다.
typedef enum XrSceneMeshTrackingStateANDROID {
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID = 0,
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID = 1,
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID = 2,
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID = 3,
XR_SCENE_MESH_TRACKING_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshTrackingStateANDROID;
열거형 값의 의미는 다음과 같습니다.
enum 설명
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID
추적기가 아직 메시 데이터를 제공할 준비가 되지 않았습니다.
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID
트래커가 활발하게 추적 중입니다.
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID
추적기가 마지막 메시 업데이트 이후 통합할 유효한 측정값을 기다리고 있습니다.
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID
트래커가 여러 주기 동안 유효한 측정값을 수신하지 못했으며 오류 상태입니다.
이 상태는 애플리케이션에 추가 정보로만 제공됩니다. 다른 오류 소스가 없는 경우 런타임은 추적기의 현재 XrSceneMeshTrackingStateANDROID와 관계없이 애플리케이션이 스냅샷을 만들고 스냅샷에서 데이터를 가져오도록 계속 허용해야 합니다(must). 상태가 XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID가 아니면 스냅샷이 최신 상태가 아니거나 비어 있을 수 있습니다.
장면 메시 스냅샷에서 장면 메시 데이터 가져오기
xrGetAllSubmeshStatesANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
파라미터 설명
snapshot은 이전에 xrCreateSceneMeshSnapshotANDROID로 만든 XrSceneMeshSnapshotANDROID 핸들입니다.submeshStateCapacityInput은submeshStates의 용량 또는 필요한 용량을 가져오기 위한 0입니다.submeshStateCountOutput는 작성된submeshStates의 개수에 대한 포인터이거나submeshStateCapacityInput가 부족한 경우 필요한 용량에 대한 포인터입니다.submeshStates는 런타임이 장면 메시에 있는 모든 하위 메시의 상태를 출력할 XrSceneSubmeshStateANDROID 구조 배열의 포인터입니다.submeshStateCapacityInput가 0인 경우NULL일 수 있습니다.- 필요한
submeshStates크기를 가져오는 방법에 관한 자세한 설명은 버퍼 크기 매개변수 장을 참고하세요.
애플리케이션은 xrGetAllSubmeshStatesANDROID 함수를 사용하여 장면 메시에 있는 모든 하위 메시의 상태를 가져올 수 있습니다. 여기에는 애플리케이션이 데이터를 원하는 하위 메시를 선택할 수 있는 기본 정보가 포함되어 있습니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrGetAllSubmeshStatesANDROID를 호출하기 전에 사용 설정해야 합니다. -
snapshot는 유효한 XrSceneMeshSnapshotANDROID 핸들이어야 합니다. -
submeshStateCountOutput는uint32_t값에 대한 포인터여야 합니다. -
submeshStateCapacityInput가0가 아닌 경우submeshStates는submeshStateCapacityInputXrSceneSubmeshStateANDROID 구조의 배열에 대한 포인터여야 합니다(must).
반품 코드
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
XrSceneSubmeshStateANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSceneSubmeshStateANDROID {
XrStructureType type;
void* next;
XrUuid submeshId;
XrTime lastUpdatedTime;
XrPosef submeshPoseInBaseSpace;
XrExtent3Df bounds;
} XrSceneSubmeshStateANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.submeshId는 하위 메시를 식별하는 XrUuid입니다.lastUpdatedTime은 하위 메시가 마지막으로 업데이트된 시간을 나타내는XrTime입니다.submeshPoseInBaseSpace는 장면 메시 스냅샷을 만드는 데 사용되는 기본 공간에서 하위 메시의 포즈를 나타내는 XrPosef입니다. 포즈는 하위 메시 경계 상자의 중심이기도 합니다.bounds는 하위 메시를 둘러싸는 경계 상자의 크기를 설명하는 XrExtent3Df입니다. 이 경계는 장면 메시 핸들을 만드는 데 사용된 기본 공간에 정의됩니다.
런타임은 하위 메시가 차지하는 물리적 공간의 영역과 submeshId를 매핑하기 위해 최선을 다합니다. 런타임은 언제든지 이 매핑을 잃고 감지된 하위 메시의 하위 집합에 새 UUID를 할당할 수 있습니다. 특히 런타임은 후속 애플리케이션 인스턴스에서 동일한 메시에 동일한 UUID를 재사용할 필요가 없습니다.
올바른 사용 (암시적)
- XrSceneSubmeshStateANDROID를 사용하기 전에
XR_ANDROID_scene_meshing확장 프로그램을 사용 설정해야 합니다. -
type은(는)XR_TYPE_SCENE_SUBMESH_STATE_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.
xrGetSubmeshDataANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
파라미터 설명
snapshot은 이전에 xrCreateSceneMeshSnapshotANDROID로 만든 XrSceneMeshSnapshotANDROID 핸들입니다.submeshDataCount는inoutSubmeshData의 길이입니다.inoutSubmeshData는 XrSceneSubmeshDataANDROID의 애플리케이션 할당 배열입니다. 여기서 런타임은 XrSceneSubmeshDataANDROID ::submeshId에 전달된 하위 메시 ID와 연결된 메시 데이터로 각 요소를 채웁니다.
애플리케이션은 xrGetSubmeshDataANDROID 함수를 사용하여 하위 메시 배치를 가져오거나 모든 하위 메시를 한 번에 가져올 수 있습니다. 이때 각 XrSceneSubmeshDataANDROID :: submeshId가 검색할 하위 메시의 각 ID로 설정된 XrSceneSubmeshDataANDROID 목록을 전달합니다.
XrSceneSubmeshDataANDROID :: submeshId는 inoutSubmeshData의 모든 요소에 대해 고유해야 하며 동일한 snapshot에 대해 xrGetAllSubmeshStatesANDROID로 검색할 수 있어야 합니다. 하위 메시 ID가 잘못되었거나 inoutSubmeshData의 요소가 두 개 이상 동일한 하위 메시 ID를 갖는 경우 런타임은 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(MUST).
submeshDataCount는 xrGetAllSubmeshStatesANDROID :: submeshStateCountOutput에서 반환한 값보다 작거나 같아야 합니다(must). 그렇지 않으면 런타임은 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(must).
이 함수는 선택한 모든 하위 메시의 꼭짓점 및 색인 수를 쿼리하는 2-호출 관용구에 사용될 수 있습니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrGetSubmeshDataANDROID를 호출하기 전에 사용 설정해야 합니다. -
snapshot는 유효한 XrSceneMeshSnapshotANDROID 핸들이어야 합니다. -
inoutSubmeshData는submeshDataCountXrSceneSubmeshDataANDROID 구조의 배열에 대한 포인터여야 합니다. -
submeshDataCount매개변수는0보다 커야 합니다.
반품 코드
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
XrSceneSubmeshDataANDROID 구조는 다음과 같이 정의됩니다.
typedef struct XrSceneSubmeshDataANDROID {
XrStructureType type;
const void* next;
XrUuid submeshId;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector3f* vertexPositions;
XrVector3f* vertexNormals;
uint8_t* vertexSemantics;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t* indices;
} XrSceneSubmeshDataANDROID;
회원 설명
type는 이 구조의 XrStructureType입니다.next는NULL또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.submeshId는 하위 메시를 식별하는 XrUuid입니다.vertexCapacityInput는vertexPositions,vertexNormals,vertexSemantics의 용량 또는 필요한 용량을 가져오기 위한 0입니다.vertexCountOutput는 작성된vertexPositions,vertexNormals,vertexSemantics의 개수에 대한 포인터이거나vertexCapacityInput가 부족한 경우 필요한 용량에 대한 포인터입니다.vertexPositions은 런타임이 하위 메시의 꼭짓점 위치를 출력하는 XrVector3f의 배열입니다.vertexNormals은 런타임이 하위 메시의 꼭짓점 법선을 출력하는 XrVector3f의 배열입니다. 애플리케이션이 일반이 사용 중지된 추적기를 만든 경우 이 필드는NULL로 남겨둘 수 있습니다.vertexSemantics은 런타임이 하위 메시의 꼭짓점 시맨틱스를 출력하는uint8_t배열입니다. 애플리케이션이XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID시맨틱 라벨 세트로 추적기를 만든 경우 이 필드는NULL로 남겨둘 수 있습니다.indexCapacityInput은indices의 용량 또는 필요한 용량을 가져오기 위한 0입니다.indexCountOutput는 작성된indices의 개수에 대한 포인터이거나vertexCapacityInput가 부족한 경우 필요한 용량에 대한 포인터입니다.indices은 런타임이 하위 메시의 색인을 출력하는uint32_t의 배열입니다.- 필수
vertexPositions,vertexNormals,vertexSemantics,indices크기를 가져오는 방법에 관한 자세한 설명은 버퍼 크기 매개변수 장을 참고하세요.
올바른 사용 (암시적)
- XrSceneSubmeshDataANDROID를 사용하기 전에
XR_ANDROID_scene_meshing확장 프로그램을 사용 설정해야 합니다. -
type은(는)XR_TYPE_SCENE_SUBMESH_DATA_ANDROID여야 합니다. -
next는NULL또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다. -
vertexCapacityInput가0가 아닌 경우vertexPositions는vertexCapacityInputXrVector3f 구조의 배열에 대한 포인터여야 합니다. -
vertexCapacityInput가0가 아닌 경우vertexNormals는vertexCapacityInputXrVector3f 구조의 배열에 대한 포인터여야 합니다. -
vertexCapacityInput가0가 아닌 경우vertexSemantics는vertexCapacityInputuint8_t값 배열의 포인터여야 합니다. -
indexCapacityInput가0가 아닌 경우indices는indexCapacityInputuint32_t값 배열의 포인터여야 합니다.
XrSceneMeshSemanticLabelANDROID 열거형은 메시 꼭짓점이 있는 실제 환경 표면을 설명하기 위해 메시 꼭짓점에 라벨을 지정하는 데 사용할 수 있는 기본 시맨틱 라벨 집합입니다. 이 enum 세트는 XrSceneMeshSemanticLabelSetANDROID의 XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID 값으로 표현됩니다.
typedef enum XrSceneMeshSemanticLabelANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID = 2,
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID = 3,
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID = 4,
XR_SCENE_MESH_SEMANTIC_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelANDROID;
enum의 의미는 다음과 같습니다.
enum 설명
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID
이 시맨틱 라벨은 해당 메시 요소가 알 수 없는 객체를 나타냄을 의미합니다.
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID
이 시맨틱 라벨은 해당 메시 요소가 바닥을 나타냄을 나타냅니다.
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID
이 시맨틱 라벨은 해당 메시 요소가 천장을 나타냄을 나타냅니다.
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID
이 시맨틱 라벨은 해당 메시 요소가 벽을 나타낸다는 것을 나타냅니다.
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID
이 시맨틱 라벨은 해당 메시 요소가 테이블을 나타냄을 나타냅니다.
장면 메시 스냅샷 폐기
xrDestroySceneMeshSnapshotANDROID 함수는 다음과 같이 정의됩니다.
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
파라미터 설명
snapshot는 이전에 xrCreateSceneMeshSnapshotANDROID로 생성된 XrSceneMeshSnapshotANDROID 핸들이며 이 함수에 의해 폐기됩니다.
애플리케이션은 xrDestroySceneMeshSnapshotANDROID 함수를 사용하여 장면 메시 스냅샷을 소멸시킬 수 있습니다. 핸들이 폐기되면 애플리케이션은 더 이상 이를 사용하여 하위 메시 정보나 데이터를 가져올 수 없습니다. 추적기 핸들은 장면 메시 스냅샷 핸들의 상위 요소이므로 추적기가 소멸되면 핸들이 자동으로 소멸됩니다.
올바른 사용 (암시적)
-
XR_ANDROID_scene_meshing확장 프로그램은 xrDestroySceneMeshSnapshotANDROID를 호출하기 전에 사용 설정해야 합니다. -
snapshot는 유효한 XrSceneMeshSnapshotANDROID 핸들이어야 합니다.
스레드 안전
snapshot및 모든 하위 핸들에 대한 액세스는 외부에서 동기화되어야 합니다(must).
반품 코드
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
장면 메시 예시 코드
다음 예시 코드는 렌더링을 위해 장면 메시 데이터에 액세스하는 방법을 보여줍니다.
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup
XrSpace appPlaySpace; // Created at app startup
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateSceneMeshingTrackerANDROID xrCreateSceneMeshingTrackerANDROID;
PFN_xrDestroySceneMeshingTrackerANDROID xrDestroySceneMeshingTrackerANDROID;
PFN_xrEnumerateSupportedSemanticLabelSetsANDROID xrEnumerateSupportedSemanticLabelSetsANDROID;
PFN_xrCreateSceneMeshSnapshotANDROID xrCreateSceneMeshSnapshotANDROID;
PFN_xrDestroySceneMeshSnapshotANDROID xrDestroySceneMeshSnapshotANDROID;
PFN_xrGetAllSubmeshStatesANDROID xrGetAllSubmeshStatesANDROID;
PFN_xrGetSubmeshDataANDROID xrGetSubmeshDataANDROID;
// Inspect system capability
XrSystemSceneMeshingPropertiesANDROID sceneMeshingProps = {
.type = XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &sceneMeshingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!sceneMeshingProps.supportsSceneMeshing) {
// scene meshing is not supported.
return;
}
uint32_t supportedsemanticLabelSetsCount = 0;
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, 0, &supportedsemanticLabelSetsCount, nullptr);
std::vector<XrSceneMeshSemanticLabelSetANDROID> supportedSemanticLabelSets(
supportedsemanticLabelSetsCount);
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, supportedsemanticLabelSetsCount,
&supportedsemanticLabelSetsCount, supportedSemanticLabelSets.data());
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID;
// Check if system supports XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
if (std::find(supportedSemanticLabelSets.begin(), supportedSemanticLabelSets.end(),
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID) !=
supportedSemanticLabelSets.end()) {
semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID;
}
XrSceneMeshingTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID,
.semanticLabelSet = semanticLabelSet,
.enableNormals = XR_TRUE
};
XrSceneMeshingTrackerANDROID tracker = XR_NULL_HANDLE;
CHK_XR(xrCreateSceneMeshingTrackerANDROID(session, &trackerCreateInfo, &tracker));
XrSceneMeshSnapshotCreationResultANDROID snapshotResult {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID,
.snapshot = XR_NULL_HANDLE
};
XrSceneMeshSnapshotANDROID& snapshot = snapshotResult.snapshot;
XrSceneMeshSnapshotCreateInfoANDROID createInfo {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
};
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrBoxf box; // populated with the bounding box of the camera frustum
// ...
createInfo.baseSpace = appPlaySpace;
createInfo.time = time;
createInfo.boundingBox = box;
// Grab the scene mesh snapshot. This way the app can: know all of the submesh infos,
// choose the appropriate submeshes for which to get data, allocate the necessary
// buffer for those submeshes, and then get the data.
CHK_XR(xrCreateSceneMeshSnapshotANDROID(tracker, &createInfo, &snapshotResult));
// check the tracking state
if (snapshotResult.trackingState == XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID) {
// unrecoverable error. Exit the app.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
break;
} else if (snapshotResult.trackingState != XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID) {
// The tracker is not tracking. Try again later.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
continue;
}
// 2-call idiom for getting submesh states
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
std::vector<XrSceneSubmeshStateANDROID> states(submeshCount, {
.type = XR_TYPE_SCENE_SUBMESH_STATE_ANDROID,
});
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, submeshCount, &submeshCount, states.data()));
// To store the poses for the selected submeshes
std::vector<XrPosef> submeshesPoses;
submeshesPoses.reserve(submeshCount);
std::vector<XrSceneSubmeshDataANDROID> submeshes;
submeshes.reserve(submeshCount);
// Iterate the states and determine which submeshes the app wants data for
for (XrSceneSubmeshStateANDROID& state : states) {
// Modify this bool as necessary by looking at states. Maybe state.lastUpdatedTime
// is below a threshold or maybe the bounding box does not intersect with camera view
// frustum (The submesh will be culled).
bool needed;
if (needed) {
// Add the selected submesh to the submeshes list. Set the capacity
// zero for now since the size of the buffer will be determined later.
XrSceneSubmeshDataANDROID submesh {
.type = XR_TYPE_SCENE_SUBMESH_DATA_ANDROID,
.submeshId = state.submeshId,
.vertexCapacityInput = 0,
.vertexCountOutput = 0,
.vertexPositions = nullptr,
.vertexNormals = nullptr,
.vertexSemantics = nullptr,
.indexCapacityInput = 0,
.indexCountOutput = 0,
.indices = nullptr,
};
submeshes.push_back(submesh);
submeshesPoses.push_back(state.submeshPoseInBaseSpace);
}
}
// Grab the data for the selected submeshes using the 2-call idiom.
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
for (XrSceneSubmeshDataANDROID& submesh : submeshes) {
submesh.vertexCapacityInput = submesh.vertexCountOutput;
submesh.vertexCountOutput = 0;
submesh.vertexPositions = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCapacityInput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCapacityInput];
}
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
// Destroy the scene mesh snapshot since we have finally grabbed the submeshes data. In
// next iteration app can: create a new one to get latest mesh data
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
// Iterate the submeshes and get the vertex positions, vertex normals and
// vertex semantics data for the selected submeshes
for (uint32_t i = 0; i < submeshes.size(); i++) {
XrSceneSubmeshDataANDROID& data = submeshes[i];
XrVector3f* vertexPositions = data.vertexPositions;
XrVector3f* vertexNormals = data.vertexNormals;
XrSceneMeshSemanticLabelANDROID* vertexSemantics =
new XrSceneMeshSemanticLabelANDROID[data.vertexCountOutput];
for (uint32_t j = 0; j < data.vertexCountOutput; j++) {
vertexSemantics[j] =
static_cast<XrSceneMeshSemanticLabelANDROID>(data.vertexSemantics[j]);
}
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] vertexSemantics;
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
새 객체 유형
새 명령어
- xrCreateSceneMeshSnapshotANDROID
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
새로운 구조
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneSubmeshDataANDROID
- XrSceneSubmeshStateANDROID
새 enum
새 enum 상수
XR_ANDROID_SCENE_MESHING_EXTENSION_NAMEXR_ANDROID_scene_meshing_SPEC_VERSIONXrObjectType 확장:
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROIDXR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
XrStructureType 확장:
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
문제
버전 기록
버전 3, 2025-05-15 (살라르 칸)
- 초기 확장 프로그램 설명