XR_EXT_spatial_mesh_tracking

Name String

XR_EXT_spatial_mesh_tracking

Loại tiện ích

Phần mở rộng thực thể

Số máy lẻ đã đăng ký

784

Bản sửa đổi

1

Trạng thái phê chuẩn

Chưa được phê chuẩn

Phần phụ thuộc của tiện ích và phiên bản

XR_EXT_spatial_entity

Cộng tác viên

Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance

Tổng quan

Tiện ích này được xây dựng dựa trên XR_EXT_spatial_entity và xác định các chức năng không gian để theo dõi lưới tam giác của môi trường. Lưới tam giác do chức năng được xác định trong tiện ích này cung cấp được dùng cho các ứng dụng để xác định các xung đột của nội dung ảo với môi trường.

Khả năng theo dõi lưới không gian

Tiện ích này xác định XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT là một chức năng không gian để theo dõi lưới tam giác của môi trường. Tính năng này không bao gồm việc theo dõi lưới của các thực thể như mặt phẳng và đối tượng, mà phải được biểu thị bằng cách liệt kê thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT cho các tính năng tương ứng theo dõi các thực thể đó.

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT được dùng để cung cấp cả lưới kín nước và lưới không kín nước cho ứng dụng, tuỳ thuộc vào khả năng của thời gian chạy và cấu hình mà ứng dụng chọn.

Lưới kín nước là lưới mà các khoảng trống và vùng chưa quét ở mọi kích thước đã được lấp đầy và tạo thành một lưới chặt chẽ trong một khối thể tích nhất định. Đúng như tên gọi, nếu một ứng dụng đổ đầy nước vào bên trong một lưới kín nước, thì không được có nước rò rỉ ra khỏi thể tích kín nước. Việc làm cho lưới được quét trở nên kín nước thường đòi hỏi khả năng tính toán rất cao, mặc dù một số thời gian chạy bù đắp chi phí đó bằng cách xử lý lưới trước.

Hỗ trợ thời gian chạy

Nếu môi trường thời gian chạy hỗ trợ tính năng theo dõi lưới tam giác của môi trường, thì môi trường thời gian chạy phải cho biết điều này bằng cách liệt kê XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT trong xrEnumerateSpatialCapabilitiesEXT .

Có 3 khả năng có thể xảy ra đối với một môi trường thời gian chạy hỗ trợ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT –

  • Môi trường thời gian chạy chỉ hỗ trợ tính năng theo dõi lưới không kín nước. Trong trường hợp này, thời gian chạy sẽ liệt kê XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT trong xrEnumerateSpatialCapabilitiesEXT nhưng không được liệt kê XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT trong xrEnumerateSpatialCapabilityFeaturesEXT (xem phần Theo dõi lưới kín).
  • Môi trường thời gian chạy hỗ trợ cả tính năng theo dõi lưới kín và không kín. Trong trường hợp này, thời gian chạy sẽ liệt kê XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT trong xrEnumerateSpatialCapabilitiesEXT và cũng phải liệt kê XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT trong xrEnumerateSpatialCapabilityFeaturesEXT (xem phần Theo dõi lưới kín) để bật các yêu cầu theo dõi lưới kín từ ứng dụng.
  • Thời gian chạy chỉ hỗ trợ theo dõi lưới kín nước. Trong trường hợp này, thời gian chạy sẽ liệt kê XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT trong xrEnumerateSpatialCapabilitiesEXT và cũng phải liệt kê XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT trong xrEnumerateSpatialCapabilityFeaturesEXT (xem phần Theo dõi lưới kín) để cho ứng dụng biết rằng thời gian chạy hỗ trợ tính năng theo dõi lưới kín. Trong trường hợp cụ thể này, thời gian chạy luôn trả về một lưới kín nước cho ứng dụng bất kể cấu hình cho XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT .

Cấu hình

Cấu trúc XrSpatialCapabilityConfigurationMeshTrackingEXT được định nghĩa như sau:

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

Nội dung mô tả về thành viên

  • type là XrStructureType của cấu trúc này.
  • next là NULL hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • capability là một XrSpatialCapabilityEXT và phải là XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
  • enabledComponentCount là một uint32_t mô tả số lượng phần tử trong mảng enabledComponents.
  • enabledComponents là con trỏ đến một mảng XrSpatialComponentTypeEXT .

Ứng dụng có thể bật chức năng không gian XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT bằng cách thêm một con trỏ vào cấu trúc XrSpatialCapabilityConfigurationMeshTrackingEXT trong XrSpatialContextCreateInfoEXT :: capabilityConfigs .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu capability không phải là XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .

Cách sử dụng hợp lệ (Ngầm ẩn)

Theo dõi lưới kín nước

Cấu trúc XrSpatialFeatureTrackWatertightMeshEXT được định nghĩa như sau:

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

Nội dung mô tả về thành viên

  • type là XrStructureType của cấu trúc này.
  • next là NULL hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • enableWatertightMeshTracking cho biết liệu thời gian chạy có phải tính toán lưới kín nước cho môi trường được quét hay không.

Môi trường thời gian chạy hỗ trợ tính năng theo dõi lưới kín phải liệt kê XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT trong xrEnumerateSpatialCapabilityFeaturesEXT . Tính năng XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT cho phép các ứng dụng tuỳ ý bật tính năng theo dõi lưới kín và chọn sử dụng bất kỳ tính năng điện toán bổ sung nào mà quá trình tạo lưới kín có thể phát sinh.

Nếu XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT được xrEnumerateSpatialCapabilityFeaturesEXT liệt kê cho một chức năng nhất định, thì ứng dụng có thể liên kết XrSpatialFeatureTrackWatertightMeshEXT với cấu trúc cấu hình tương ứng của chức năng đó để cho biết liệu ứng dụng có muốn lưới được theo dõi là kín nước hay không. Nếu ứng dụng đặt enableWatertightMeshTracking thành XR_TRUE , thì thời gian chạy phải tính toán và cung cấp cho ứng dụng một lưới kín nước của môi trường. Nếu ứng dụng đặt enableWatertightMeshTracking thành XR_FALSE , thì lưới được theo dõi vẫn có thể kín nước nếu thời gian chạy chỉ hỗ trợ theo dõi lưới kín nước, ví dụ: trong trường hợp thời gian chạy cung cấp lưới đã xử lý từ môi trường được quét trước.

Cách sử dụng hợp lệ (Ngầm ẩn)

Luồng ứng dụng

Sơ đồ dưới đây cho thấy cách một ứng dụng có thể định cấu hình bối cảnh không gian nếu muốn theo dõi lưới kín của môi trường.

Có

Có

Ứng dụng cần
lưới kín nước

Ứng dụng cần...

Có

Có

Không

Không

Thời gian chạy
hỗ trợ tính năng
"theo dõi lưới"

Thời gian chạy...

Có

Có

Không

Không

Thời gian chạy
hỗ trợ tính năng
"theo dõi lưới kín nước"

Thời gian chạy...

Ứng dụng tạo bối cảnh không gian bằng "khả năng theo dõi lưới" VÀ tính năng "theo dõi lưới kín"

Ứng dụng tạo không gian...

Ứng dụng xử lý việc thiếu tính năng hỗ trợ trong thời gian chạy hiện tại

Ứng dụng xử lý việc thiếu...

Ứng dụng xử lý lưới được theo dõi để tự tạo lưới kín, có thể nhờ người dùng hỗ trợ vá các lỗ hổng trong lưới

Ứng dụng xử lý tr... Văn bản không phải là SVG – không thể hiển thị

Hình 29. Quy trình của ứng dụng để yêu cầu lưới kín nước

Thành phần được đảm bảo

Môi trường thời gian chạy hỗ trợ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT phải cung cấp các thành phần không gian sau đây dưới dạng thành phần được đảm bảo của tất cả thực thể mà chức năng này phát hiện được và phải liệt kê các thành phần đó trong xrEnumerateSpatialCapabilityComponentTypesEXT :

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Thành phần 3D có giới hạn

Thành phần 3D có giới hạn cung cấp tâm và phạm vi của thực thể mà thành phần đó nằm trên. Dữ liệu do thành phần này cung cấp giúp các ứng dụng dễ dàng loại bỏ những thực thể nằm ngoài hình cụt của khung hiển thị.

Hãy xem phần 3D có giới hạn để biết thêm thông tin chi tiết.

Thành phần lưới 3D

Thành phần lưới 3D cung cấp lưới 3D của thực thể mà thành phần đó đang nằm trên. Hãy xem phần Lưới 3D để biết thêm thông tin chi tiết.

Phân đoạn theo thể tích (Phân đoạn)

Thời gian chạy có thể phân đoạn lưới thành các khối thể tích (đoạn) để giúp các ứng dụng dễ dàng loại bỏ các khối lưới bên ngoài hình cụt của khung hiển thị. Trong trường hợp này, thời gian chạy phải coi mỗi khối thể tích như một thực thể riêng biệt và có tập hợp Thành phần được đảm bảo trên mỗi thực thể (khối thể tích) như vậy. Nếu thời gian chạy đang cung cấp lưới kín nước theo cách này, thì mỗi khối thể tích riêng lẻ sẽ không kín nước, nhưng một nhóm khối cùng nhau sẽ tạo thành lưới kín nước. Trong trường hợp này, thời gian chạy phải thêm thành phần XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT vào mỗi thực thể (khối thể tích) và giá trị của thực thể mẹ trên các khối cùng nhau tạo thành một lưới kín nước phải giống nhau. Điều này cho phép ứng dụng xác định những đoạn nào cùng nhau tạo thành một lưới kín.

Lưới của các khối thể tích liền kề có thể có chung đỉnh, nhưng các tam giác của một khối thể tích không được chồng chéo với các tam giác của thể tích liền kề.

Thành phần không bắt buộc

Pháp tuyến lưới

Dữ liệu thành phần

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT sử dụng XrSpatialBufferEXT cho dữ liệu của mình. XrSpatialBufferEXT :: bufferId đại diện cho vùng đệm chứa các pháp tuyến đỉnh của lưới của thực thể mà thành phần này đang bật. XrSpatialBufferEXT :: bufferType phải là XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Một thực thể có XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT cũng phải có XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Pháp tuyến do thành phần này cung cấp phải tương ứng với các đỉnh được cung cấp trong XrSpatialMeshDataEXT :: vertexBuffer của thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.

Cấu trúc danh sách thành phần để truy vấn dữ liệu

Cấu trúc XrSpatialComponentMesh3DNormalsListEXT được định nghĩa như sau:

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

Nội dung mô tả về thành viên

  • type là XrStructureType của cấu trúc này.
  • next là NULL hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
  • meshNormalsCount là một uint32_t mô tả số lượng phần tử trong mảng meshNormals.
  • meshNormals là một mảng XrVector3f .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentMesh3DNormalsListEXT nằm trong chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT :: next nhưng XrSpatialComponentDataQueryConditionEXT :: componentTypeCount không phải là 0 và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

Thời gian chạy phải trả về XR_ERROR_SIZE_INSUFFICIENT từ xrQuerySpatialComponentDataEXT nếu meshNormalsCount nhỏ hơn XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Cách sử dụng hợp lệ (Ngầm ẩn)

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT được liệt kê trong XrSpatialCapabilityComponentTypesEXT :: componentTypes cho một số chức năng, thì ứng dụng có thể bật chức năng đó bằng cách đưa enum vào danh sách XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Thành phần này không yêu cầu bất kỳ cấu hình đặc biệt nào để đưa vào chuỗi XrSpatialCapabilityConfigurationBaseHeaderEXT tiếp theo. Tuy nhiên, các ứng dụng nên sử dụng thành phần này và dữ liệu của thành phần này cùng với thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.

Nhãn ngữ nghĩa của lưới

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;

Phép liệt kê XrSpatialMeshSemanticLabelEXT mô tả một tập hợp nhãn ngữ nghĩa cho lưới. Các thành phần không gian khác nhau sử dụng giá trị này để gán ý nghĩa cho các giá trị uint8_t từ XrSpatialBufferEXT cho nhãn ngữ nghĩa theo đỉnh hoặc theo tam giác. Xem Nhãn ngữ nghĩa của đỉnh lưới và Nhãn ngữ nghĩa của tam giác lưới

Các tiện ích muốn mở rộng tập hợp nhãn ngữ nghĩa này hoặc thêm tập hợp mới của riêng chúng cho lưới nên tuân theo các nguyên tắc được đưa ra trong Nguyên tắc thiết kế và mở rộng nhãn ngữ nghĩa .

Nội dung mô tả enum

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

Thời gian chạy không thể phân loại đỉnh hoặc tam giác.

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

Đỉnh hoặc tam giác liên kết với một tầng.

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

Đỉnh hoặc tam giác liên kết với một bức tường.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

Đỉnh hoặc tam giác liên kết với trần nhà.

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

Đỉnh hoặc tam giác liên kết với một bảng.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

Đỉnh hoặc tam giác liên kết với một chiếc ghế.

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

Đỉnh hoặc tam giác liên kết với một chiếc ghế sofa.

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

Đỉnh hoặc tam giác liên kết với một chiếc giường.

Nhãn ngữ nghĩa của đỉnh lưới

Tổng quan về thành phần

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT cung cấp một nhãn ngữ nghĩa duy nhất cho mỗi đỉnh của lưới của một thực thể không gian.

Dữ liệu thành phần

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT sử dụng XrSpatialBufferEXT cho dữ liệu của mình. XrSpatialBufferEXT :: bufferId đại diện cho vùng đệm chứa nhãn ngữ nghĩa đỉnh của lưới của thực thể mà thành phần này đang bật. XrSpatialBufferEXT :: bufferType phải là XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Các giá trị trong vùng đệm tương ứng với các giá trị của kiểu liệt kê XrSpatialMeshSemanticLabelEXT. Một thực thể có XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT cũng phải có thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT trên đó. Nhãn ngữ nghĩa do thành phần này cung cấp phải tương ứng với các đỉnh được cung cấp trong XrSpatialMeshDataEXT :: vertexBuffer của thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Điều này có nghĩa là nhãn ngữ nghĩa tại một chỉ mục nhất định của dữ liệu vùng đệm không gian do thành phần này cung cấp tương ứng với đỉnh tại cùng một chỉ mục do XrSpatialMeshDataEXT :: vertexBuffer cung cấp. Điều này cũng có nghĩa là xrGetSpatialBufferUint8EXT :: bufferCountOutput phải có cùng giá trị cho vùng đệm nhãn ngữ nghĩa đỉnh và XrSpatialMeshDataEXT :: vertexBuffer .

Cấu trúc danh sách thành phần để truy vấn dữ liệu

Cấu trúc XrSpatialComponentMesh3DVertexSemanticLabelsListEXT được định nghĩa như sau:

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

Nội dung mô tả về thành viên

  • type là XrStructureType của cấu trúc này.
  • next là NULL hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
  • meshSemanticLabelsCount là một uint32_t mô tả số lượng phần tử trong mảng meshSemanticLabels.
  • meshSemanticLabels là một mảng XrSpatialBufferEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentMesh3DVertexSemanticLabelsListEXT nằm trong chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT :: next nhưng XrSpatialComponentDataQueryConditionEXT :: componentTypeCount không phải là 0 và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

Thời gian chạy phải trả về XR_ERROR_SIZE_INSUFFICIENT từ xrQuerySpatialComponentDataEXT nếu meshSemanticLabelsCount nhỏ hơn XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Cách sử dụng hợp lệ (Ngầm ẩn)

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT được liệt kê trong XrSpatialCapabilityComponentTypesEXT :: componentTypes cho một số chức năng, thì ứng dụng có thể bật chức năng đó bằng cách đưa enum vào danh sách XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Thành phần này không yêu cầu bất kỳ cấu hình đặc biệt nào để đưa vào chuỗi XrSpatialCapabilityConfigurationBaseHeaderEXT tiếp theo. Tuy nhiên, các ứng dụng nên sử dụng thành phần này và dữ liệu của thành phần này cùng với thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Không thể bật thành phần này cùng với XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Nếu một ứng dụng thêm cả XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT vào XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , thì thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Thời gian chạy cũng phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu ứng dụng cố gắng bật cả hai thành phần trong XrSpatialContextEXT riêng biệt.

Nhãn ngữ nghĩa của tam giác lưới

Tổng quan về thành phần

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT cung cấp một nhãn ngữ nghĩa duy nhất cho mỗi tam giác của lưới của một thực thể không gian.

Dữ liệu thành phần

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT sử dụng XrSpatialBufferEXT cho dữ liệu của mình. XrSpatialBufferEXT :: bufferId đại diện cho vùng đệm chứa nhãn ngữ nghĩa hình tam giác của lưới của thực thể mà thành phần này đang bật. XrSpatialBufferEXT :: bufferType phải là XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Các giá trị trong vùng đệm tương ứng với các giá trị của kiểu liệt kê XrSpatialMeshSemanticLabelEXT. Một thực thể có XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT cũng phải có thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT trên đó. Nhãn ngữ nghĩa do thành phần này cung cấp phải tương ứng với các hình tam giác được cung cấp trong XrSpatialMeshDataEXT của thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Số lượng phần tử của vùng đệm không gian chứa nhãn ngữ nghĩa hình tam giác là số lượng phần tử của XrSpatialMeshDataEXT :: indexBuffer chia cho 3. Điều này có nghĩa là nhãn ngữ nghĩa tại một chỉ mục nhất định của dữ liệu vùng đệm không gian do thành phần này cung cấp tương ứng với hình tam giác được biểu thị bằng [index * 3], [index * 3 + 1], [index * 3 + 2] trong XrSpatialMeshDataEXT :: indexBuffer .

Cấu trúc danh sách thành phần để truy vấn dữ liệu

Cấu trúc XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT được định nghĩa như sau:

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

Nội dung mô tả về thành viên

  • type là XrStructureType của cấu trúc này.
  • next là NULL hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
  • meshSemanticLabelsCount là một uint32_t mô tả số lượng phần tử trong mảng meshSemanticLabels.
  • meshSemanticLabels là một mảng XrSpatialBufferEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT nằm trong chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT :: next nhưng XrSpatialComponentDataQueryConditionEXT :: componentTypeCount không phải là 0 và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

Thời gian chạy phải trả về XR_ERROR_SIZE_INSUFFICIENT từ xrQuerySpatialComponentDataEXT nếu meshSemanticLabelsCount nhỏ hơn XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Cách sử dụng hợp lệ (Ngầm ẩn)

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT được liệt kê trong XrSpatialCapabilityComponentTypesEXT :: componentTypes cho một số chức năng, thì ứng dụng có thể bật chức năng đó bằng cách đưa enum vào danh sách XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Thành phần này không yêu cầu bất kỳ cấu hình đặc biệt nào để đưa vào chuỗi XrSpatialCapabilityConfigurationBaseHeaderEXT tiếp theo. Tuy nhiên, các ứng dụng nên sử dụng thành phần này và dữ liệu của thành phần này cùng với thành phần XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Không thể bật thành phần này cùng với XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Nếu một ứng dụng thêm cả XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT vào XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , thì thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Thời gian chạy cũng phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu ứng dụng cố gắng bật cả hai thành phần trong XrSpatialContextEXT riêng biệt.

Cấu trúc mới

Enum mới

Hằng số enum mới

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • Mở rộng XrSpatialCapabilityEXT :

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • Mở rộng XrSpatialCapabilityFeatureEXT :

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • Mở rộng 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
  • Mở rộng 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

Vấn đề

Danh sách phiên bản

  • Bản sửa đổi 1, ngày 2 tháng 11 năm 2025 (Nihav Jain, Google)

    • Nội dung mô tả ban đầu về tiện ích