XR_EXT_spatial_mesh_tracking

이름 문자열

XR_EXT_spatial_mesh_tracking

확장 프로그램 유형

인스턴스 확장 프로그램

등록된 내선 번호

784

버전

1

승인 상태

비준되지 않음

확장 프로그램 및 버전 종속 항목

XR_EXT_spatial_entity

도움을 주신 분들

니하브 자인, Google
나탈리 플뢰리, Meta
유이치 타구치, Meta
론 베셈스, Meta
인 리, Microsoft
지미 알람파람빌, ByteDance
지펑 리우, ByteDance
준 얀, ByteDance

개요

이 확장 프로그램은 XR_EXT_spatial_entity를 기반으로 하며 환경의 삼각형 메시를 추적하는 공간 기능을 정의합니다. 이 확장 프로그램에 정의된 기능에서 제공하는 삼각형 메시는 애플리케이션에서 가상 콘텐츠와 환경의 충돌을 확인하는 데 사용됩니다.

공간 메시 추적 기능

이 확장 프로그램은 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 환경의 삼각형 메시를 추적하는 공간 기능으로 정의합니다. 평면 및 객체와 같은 항목의 메시 추적은 이 기능에서 다루지 않으며 대신 이러한 항목을 추적하는 각 기능의 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소 열거로 표시해야 합니다.

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT는 런타임의 기능과 애플리케이션에서 선택한 구성에 따라 애플리케이션에 방수 메시와 비방수 메시를 모두 제공하는 데 사용됩니다.

방수 메시란 모든 크기의 간격과 스캔되지 않은 영역이 채워져 특정 부피 블록 내에 단단한 메시를 형성하는 메시입니다. 이름에서 알 수 있듯이 애플리케이션이 방수 메시 내부에 물을 채우면 방수 볼륨에서 물이 새지 않아야 합니다. 스캔한 메시를 빈틈없이 만드는 데는 매우 높은 컴퓨팅이 필요한 경우가 많지만, 일부 런타임은 메시를 미리 처리하여 이 비용을 상쇄합니다.

런타임 지원

런타임이 환경의 삼각형 메시 추적을 지원하는 경우 xrEnumerateSpatialCapabilitiesEXT에서 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 열거하여 이를 나타내야 합니다(must).

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 지원하는 런타임에는 다음과 같은 세 가지 기능이 있습니다.

  • 런타임은 비수밀 메시 추적만 지원합니다. 이 경우 런타임은 xrEnumerateSpatialCapabilitiesEXT에서 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 열거하지만 xrEnumerateSpatialCapabilityFeaturesEXT에서 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT를 열거하면 안 됩니다(방수 메시 추적 참고).
  • 런타임은 워터타이트 및 비워터타이트 메시 추적을 모두 지원합니다. 이 경우 런타임은 xrEnumerateSpatialCapabilitiesEXT에서 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 열거하고 반드시 xrEnumerateSpatialCapabilityFeaturesEXT에서 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT도 열거해야 합니다(방수 메시 추적 참고). 그래야 애플리케이션에서 방수 메시 추적 요청을 사용 설정할 수 있습니다.
  • 런타임은 방수 메시 추적만 지원합니다. 이 경우 런타임은 xrEnumerateSpatialCapabilitiesEXT에서 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 열거하고 xrEnumerateSpatialCapabilityFeaturesEXT에서 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT도 열거해야 합니다(방수 메시 추적 참고). 이는 애플리케이션에 방수 메시 추적을 지원함을 나타냅니다. 이 경우 런타임은 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT 구성과 관계없이 항상 애플리케이션에 방수 메시를 반환합니다.

구성

XrSpatialCapabilityConfigurationMeshTrackingEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
    XrStructureType                     type;
    const void*                         next;
    XrSpatialCapabilityEXT              capability;
    uint32_t                            enabledComponentCount;
    const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다.
  • capability은 XrSpatialCapabilityEXT이며 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT여야 합니다.
  • enabledComponentCount은 enabledComponents 배열의 요소 수를 설명하는 uint32_t입니다.
  • enabledComponents는 XrSpatialComponentTypeEXT 배열의 포인터입니다.

애플리케이션은 XrSpatialContextCreateInfoEXT :: capabilityConfigs의 XrSpatialCapabilityConfigurationMeshTrackingEXT 구조에 대한 포인터를 포함하여 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT 공간 기능을 사용 설정할 수 있습니다(can).

capability가 XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT가 아닌 경우 런타임은 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(must).

올바른 사용 (암시적)

방수 메시 추적

XrSpatialFeatureTrackWatertightMeshEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다.
  • enableWatertightMeshTracking는 런타임이 스캔된 환경에 대해 방수 메시를 계산해야 하는지 여부를 나타냅니다.

방수 메시 추적을 지원하는 런타임은 xrEnumerateSpatialCapabilityFeaturesEXT에서 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT를 열거해야 합니다(must). XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT 기능을 사용하면 애플리케이션에서 선택적으로 워터타이트 메시 추적을 사용 설정하고 워터타이트 메시 생성으로 인해 발생할 수 있는 추가 컴퓨팅을 명시적으로 선택할 수 있습니다.

특정 기능에 대해 xrEnumerateSpatialCapabilityFeaturesEXT에서 XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT를 열거하는 경우 애플리케이션은 XrSpatialFeatureTrackWatertightMeshEXT를 해당 기능의 해당 구성 구조에 연결하여 추적된 메시를 방수 처리할지 여부를 나타낼 수 있습니다. 애플리케이션이 enableWatertightMeshTracking를 XR_TRUE로 설정하는 경우 런타임은 환경의 방수 메시를 계산하여 애플리케이션에 제공해야 합니다(must). 애플리케이션이 enableWatertightMeshTracking를 XR_FALSE로 설정하는 경우, 런타임이 방수 메시 추적만 지원하는 경우(예: 런타임이 사전 스캔된 환경에서 처리된 메시를 제공하는 경우) 추적된 메시가 여전히 방수일 수 있습니다.

올바른 사용 (암시적)

애플리케이션 흐름

아래 다이어그램은 애플리케이션이 환경의 방수 메시를 추적하려는 경우 공간 컨텍스트를 구성하는 방법을 보여줍니다.

예

예

앱에
개의 방수 메시가 필요함

앱에 필요한 사항

예

예

아니요

아니요

런타임
은 '메시 추적'
기능을 지원합니다.

런타임…

예

예

아니요

아니요

런타임
이 '방수 메시 추적'
기능을 지원합니다.

런타임…

앱이 '메시 추적 기능' 및 '방수 메시 추적' 기능을 사용하여 공간 컨텍스트를 만듭니다.

앱이 공간을 만듭니다…

앱이 현재 런타임에서 기능 지원 부족을 처리함

앱이 다음의 부족을 처리함…

앱은 추적된 메시를 처리하여 메시의 구멍을 패치하는 사용자의 도움을 받아 방수 메시를 만듭니다.

앱이 tr…을 처리합니다. 텍스트가 SVG가 아님 - 표시할 수 없음

그림 29. 방수 메시를 요청하는 앱 흐름

보장 구성요소

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT를 지원하는 런타임은 이 기능으로 검색된 모든 항목의 보장된 구성요소로 다음 공간 구성요소를 제공해야 하며(must) xrEnumerateSpatialCapabilityComponentTypesEXT에서 열거해야 합니다(must).

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
제한된 3D 구성요소

경계가 지정된 3D 구성요소는 해당 항목의 중심과 범위를 제공합니다. 이 구성요소에서 제공하는 데이터를 사용하면 애플리케이션이 뷰 절두체 외부에 있는 항목을 더 쉽게 선별할 수 있습니다.

자세한 내용은 제한된 3D를 참고하세요.

메시 3D 구성요소

메시 3D 구성요소는 해당 항목의 3D 메시를 제공합니다. 자세한 내용은 Mesh 3D를 참고하세요.

체적 분할 (청킹)

런타임은 애플리케이션이 뷰 절두체 외부의 메시 블록을 더 쉽게 선별할 수 있도록 메시를 체적 블록(청크)으로 분할할 수 있습니다(may). 이 경우 런타임은 이러한 각 체적 블록을 별도의 항목으로 취급하고 이러한 각 항목 (체적 블록)에 보장된 구성요소 집합을 보유해야 합니다. 런타임이 이러한 방식으로 방수 메시를 제공하는 경우 각 체적 블록은 개별적으로 방수되지 않지만 블록 그룹이 함께 방수 메시를 형성합니다. 이 시나리오에서는 런타임이 각 항목 (체적 블록)에 XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT 구성요소를 추가해야 하며, 함께 방수 메시를 형성하는 블록 전체에서 상위 항목의 값이 동일해야 합니다. 이를 통해 애플리케이션은 어떤 청크가 함께 방수 메시를 형성하는지 식별할 수 있습니다.

인접한 체적 블록의 메시가 꼭짓점을 공유할 수 있지만 한 체적 블록의 삼각형이 인접한 체적의 삼각형과 겹치면 안 됩니다.

선택적 구성요소

메시 법선

구성요소 데이터

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT는 데이터에 XrSpatialBufferEXT를 사용합니다. XrSpatialBufferEXT :: bufferId는 이 구성요소가 있는 항목의 메시의 꼭짓점 법선이 포함된 버퍼를 나타냅니다. XrSpatialBufferEXT :: bufferType는 XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT여야 합니다. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT가 있는 항목에는 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT도 있어야 합니다. 이 구성요소에서 제공하는 법선은 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소의 XrSpatialMeshDataEXT :: vertexBuffer에 제공된 꼭짓점과 일치해야 합니다(must).

데이터를 쿼리하는 구성요소 목록 구조

XrSpatialComponentMesh3DNormalsListEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrSpatialComponentMesh3DNormalsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshNormalsCount;
    XrSpatialBufferEXT*    meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.
  • meshNormalsCount은 meshNormals 배열의 요소 수를 설명하는 uint32_t입니다.
  • meshNormals는 XrVector3f의 배열입니다.

XrSpatialComponentMesh3DNormalsListEXT가 XrSpatialComponentDataQueryResultEXT :: next의 다음 체인에 있지만 XrSpatialComponentDataQueryConditionEXT :: componentTypeCount가 0이 아니고 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT가 XrSpatialComponentDataQueryConditionEXT :: componentTypes에 포함되지 않은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(must).

meshNormalsCount가 XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput보다 작은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_SIZE_INSUFFICIENT를 반환해야 합니다(must).

올바른 사용 (암시적)

  • XR_EXT_spatial_mesh_tracking 확장 프로그램은 XrSpatialComponentMesh3DNormalsListEXT를 사용하기 전에 사용 설정해야 합니다.
  • type은(는) XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT여야 합니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.
  • meshNormals는 meshNormalsCount XrSpatialBufferEXT 구조의 배열에 대한 포인터여야 합니다.
  • meshNormalsCount 매개변수는 0보다 커야 합니다.

구성

일부 기능의 XrSpatialCapabilityComponentTypesEXT :: componentTypes에 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT가 열거된 경우 애플리케이션은 XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents 목록에 enum을 포함하여 이를 사용 설정할 수 있습니다(can). 이 구성요소는 XrSpatialCapabilityConfigurationBaseHeaderEXT의 다음 체인에 포함하기 위해 특별한 구성이 필요하지 않습니다. 하지만 애플리케이션은 이 구성요소와 데이터를 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소와 함께 사용하는 것이 좋습니다.

메시 시맨틱 라벨

typedef enum XrSpatialMeshSemanticLabelEXT {
    XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;

XrSpatialMeshSemanticLabelEXT 열거형은 메시에 관한 시맨틱 라벨 집합을 설명합니다. 이는 다양한 공간 구성요소에서 정점별 또는 삼각형별 시맨틱 라벨의 XrSpatialBufferEXT에서 uint8_t 값에 의미를 부여하는 데 사용됩니다. 메시 꼭짓점 시맨틱 라벨 및 메시 삼각형 시맨틱 라벨을 참고하세요.

이 시맨틱 라벨 세트를 확장하거나 메시에 자체 새 세트를 추가하려는 확장 프로그램은 시맨틱 라벨 디자인 및 확장 프로그램 가이드라인에 제공된 가이드라인을 따라야 합니다.

enum 설명

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

런타임에서 꼭짓점 또는 삼각형을 분류할 수 없습니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

꼭짓점 또는 삼각형이 층에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

꼭짓점 또는 삼각형이 벽에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

꼭짓점 또는 삼각형이 천장에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

꼭짓점 또는 삼각형은 테이블에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

꼭짓점 또는 삼각형이 의자에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

꼭짓점 또는 삼각형이 소파에 매핑됩니다.

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

꼭짓점 또는 삼각형은 화단에 매핑됩니다.

메시 꼭짓점 시맨틱 라벨

구성요소 개요

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT는 공간 항목 메시의 각 꼭짓점에 단일 시맨틱 라벨을 제공합니다.

구성요소 데이터

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT는 데이터에 XrSpatialBufferEXT를 사용합니다. XrSpatialBufferEXT :: bufferId는 이 구성요소가 있는 항목의 메시의 꼭짓점 시맨틱 라벨이 포함된 버퍼를 나타냅니다. XrSpatialBufferEXT :: bufferType는 XR_SPATIAL_BUFFER_TYPE_UINT8_EXT여야 합니다. 버퍼의 값은 XrSpatialMeshSemanticLabelEXT 열거형의 값에 상응합니다. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT가 있는 항목에는 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소도 있어야 합니다. 이 구성요소에서 제공하는 시맨틱 라벨은 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소의 XrSpatialMeshDataEXT :: vertexBuffer에서 제공하는 꼭짓점과 일치해야 합니다(must). 즉, 이 구성요소에서 제공하는 공간 버퍼 데이터의 특정 색인에 있는 시맨틱 라벨은 XrSpatialMeshDataEXT :: vertexBuffer에서 제공하는 동일한 색인의 꼭짓점에 해당합니다. 이는 또한 xrGetSpatialBufferUint8EXT :: bufferCountOutput가 꼭짓점 시맨틱 라벨 버퍼와 XrSpatialMeshDataEXT :: vertexBuffer에 대해 동일한 값이어야 합니다.

데이터를 쿼리하는 구성요소 목록 구조

XrSpatialComponentMesh3DVertexSemanticLabelsListEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.
  • meshSemanticLabelsCount은 meshSemanticLabels 배열의 요소 수를 설명하는 uint32_t입니다.
  • meshSemanticLabels는 XrSpatialBufferEXT의 배열입니다.

XrSpatialComponentMesh3DVertexSemanticLabelsListEXT가 XrSpatialComponentDataQueryResultEXT :: next의 다음 체인에 있지만 XrSpatialComponentDataQueryConditionEXT :: componentTypeCount가 0이 아니고 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT가 XrSpatialComponentDataQueryConditionEXT :: componentTypes에 포함되지 않은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(must).

meshSemanticLabelsCount가 XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput보다 작은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_SIZE_INSUFFICIENT를 반환해야 합니다(must).

올바른 사용 (암시적)

  • XrSpatialComponentMesh3DVertexSemanticLabelsListEXT를 사용하기 전에 XR_EXT_spatial_mesh_tracking 확장 프로그램을 사용 설정해야 합니다.
  • type은(는) XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT여야 합니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.
  • meshSemanticLabels는 meshSemanticLabelsCount XrSpatialBufferEXT 구조의 배열에 대한 포인터여야 합니다.
  • meshSemanticLabelsCount 매개변수는 0보다 커야 합니다.

구성

일부 기능의 XrSpatialCapabilityComponentTypesEXT :: componentTypes에 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT가 열거된 경우 애플리케이션은 XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents 목록에 enum을 포함하여 이를 사용 설정할 수 있습니다(can). 이 구성요소는 XrSpatialCapabilityConfigurationBaseHeaderEXT의 다음 체인에 포함하기 위해 특별한 구성이 필요하지 않습니다. 하지만 애플리케이션은 이 구성요소와 데이터를 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소와 함께 사용하는 것이 좋습니다. 이 구성요소는 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT와 함께 사용 설정할 수 없습니다. 애플리케이션이 XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents에 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT와 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT를 모두 추가하는 경우 런타임은 XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT를 반환해야 합니다(must). 또한 애플리케이션이 별도의 XrSpatialContextEXT에서 두 구성요소를 모두 사용 설정하려고 시도하는 경우 런타임은 XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT를 반환해야 합니다(must).

메시 삼각형 시맨틱 라벨

구성요소 개요

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT는 공간 항목 메시의 각 삼각형에 단일 시맨틱 라벨을 제공합니다.

구성요소 데이터

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT는 데이터에 XrSpatialBufferEXT를 사용합니다. XrSpatialBufferEXT :: bufferId는 이 구성요소가 있는 항목의 메시의 삼각형 시맨틱 라벨이 포함된 버퍼를 나타냅니다. XrSpatialBufferEXT :: bufferType는 XR_SPATIAL_BUFFER_TYPE_UINT8_EXT여야 합니다. 버퍼의 값은 XrSpatialMeshSemanticLabelEXT 열거형의 값에 상응합니다. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT가 있는 항목에는 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소도 있어야 합니다. 이 구성요소에서 제공하는 시맨틱 라벨은 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소의 XrSpatialMeshDataEXT에 제공된 삼각형과 일치해야 합니다. 삼각형 시맨틱 라벨이 포함된 공간 버퍼의 요소 수는 XrSpatialMeshDataEXT :: indexBuffer의 요소 수를 3으로 나눈 값입니다. 즉, 이 구성요소에서 제공하는 공간 버퍼 데이터의 특정 색인에 있는 시맨틱 라벨은 XrSpatialMeshDataEXT :: indexBuffer의 [index * 3], [index * 3 + 1], [index * 3 + 2] 로 표현되는 삼각형에 상응합니다.

데이터를 쿼리하는 구성요소 목록 구조

XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다. 핵심 OpenXR 또는 이 확장 프로그램에는 이러한 구조가 정의되어 있지 않습니다.
  • meshSemanticLabelsCount은 meshSemanticLabels 배열의 요소 수를 설명하는 uint32_t입니다.
  • meshSemanticLabels는 XrSpatialBufferEXT의 배열입니다.

XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT가 XrSpatialComponentDataQueryResultEXT :: next의 다음 체인에 있지만 XrSpatialComponentDataQueryConditionEXT :: componentTypeCount가 0이 아니고 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT가 XrSpatialComponentDataQueryConditionEXT :: componentTypes에 포함되지 않은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_VALIDATION_FAILURE를 반환해야 합니다(must).

meshSemanticLabelsCount가 XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput보다 작은 경우 런타임은 xrQuerySpatialComponentDataEXT에서 XR_ERROR_SIZE_INSUFFICIENT를 반환해야 합니다(must).

올바른 사용 (암시적)

  • XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT를 사용하기 전에 XR_EXT_spatial_mesh_tracking 확장 프로그램을 사용 설정해야 합니다(must).
  • type은(는) XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT여야 합니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 유효한 포인터여야 합니다.
  • meshSemanticLabels는 meshSemanticLabelsCount XrSpatialBufferEXT 구조의 배열에 대한 포인터여야 합니다.
  • meshSemanticLabelsCount 매개변수는 0보다 커야 합니다.

구성

일부 기능의 XrSpatialCapabilityComponentTypesEXT :: componentTypes에 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT가 열거된 경우 애플리케이션은 XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents 목록에 enum을 포함하여 이를 사용 설정할 수 있습니다(can). 이 구성요소는 XrSpatialCapabilityConfigurationBaseHeaderEXT의 다음 체인에 포함하기 위해 특별한 구성이 필요하지 않습니다. 하지만 애플리케이션은 이 구성요소와 데이터를 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT 구성요소와 함께 사용하는 것이 좋습니다. 이 구성요소는 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT와 함께 사용 설정할 수 없습니다. 애플리케이션이 XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents에 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT와 XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT를 모두 추가하는 경우 런타임은 XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT를 반환해야 합니다(must). 또한 애플리케이션이 별도의 XrSpatialContextEXT에서 두 구성요소를 모두 사용 설정하려고 시도하는 경우 런타임은 XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT를 반환해야 합니다(must).

새로운 구조

새 enum

새 enum 상수

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • XrSpatialCapabilityEXT 확장:

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • XrSpatialCapabilityFeatureEXT 확장:

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • XrSpatialComponentTypeEXT 확장:

    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • XrStructureType 확장:

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

문제

버전 기록

  • 버전 1, 2025-11-02 (Nihav Jain, Google)

    • 초기 확장 프로그램 설명