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_EXTtrong xrEnumerateSpatialCapabilitiesEXT nhưng không được liệt kêXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTtrong 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_EXTtrong xrEnumerateSpatialCapabilitiesEXT và cũng phải liệt kêXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTtrong 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_EXTtrong xrEnumerateSpatialCapabilitiesEXT và cũng phải liệt kêXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTtrong 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 choXR_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
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.capabilitylà một XrSpatialCapabilityEXT và phải làXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT.enabledComponentCountlà mộtuint32_tmô tả số lượng phần tử trong mảngenabledComponents.enabledComponentslà 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)
- Bạn phải bật tiện ích
XR_EXT_spatial_mesh_trackingtrước khi sử dụng XrSpatialCapabilityConfigurationMeshTrackingEXT -
typephải làXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc . Xem thêm: XrSpatialFeatureTrackWatertightMeshEXT -
capabilityphải là một giá trị XrSpatialCapabilityEXT hợp lệ -
enabledComponentsphải là một con trỏ đến một mảng gồmenabledComponentCountgiá trị XrSpatialComponentTypeEXT hợp lệ - Tham số
enabledComponentCountphải lớn hơn0
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
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.enableWatertightMeshTrackingcho 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)
- Bạn phải bật tiện ích
XR_EXT_spatial_mesh_trackingtrước khi sử dụng XrSpatialFeatureTrackWatertightMeshEXT -
typephải làXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
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_EXTXR_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
typelà XrStructureType của cấu trúc này.nextlàNULLhoặ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.meshNormalsCountlà mộtuint32_tmô tả số lượng phần tử trong mảngmeshNormals.meshNormalslà 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)
- Bạn phải bật tiện ích
XR_EXT_spatial_mesh_trackingtrước khi sử dụng XrSpatialComponentMesh3DNormalsListEXT -
typephải làXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc -
meshNormalsphải là một con trỏ trỏ đến một mảng gồmmeshNormalsCountcấu trúc XrSpatialBufferEXT - Tham số
meshNormalsCountphải lớn hơn0
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
typelà XrStructureType của cấu trúc này.nextlàNULLhoặ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.meshSemanticLabelsCountlà mộtuint32_tmô tả số lượng phần tử trong mảngmeshSemanticLabels.meshSemanticLabelslà 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)
- Bạn phải bật tiện ích
XR_EXT_spatial_mesh_trackingtrước khi sử dụng XrSpatialComponentMesh3DVertexSemanticLabelsListEXT -
typephải làXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc -
meshSemanticLabelsphải là một con trỏ trỏ đến một mảng gồmmeshSemanticLabelsCountcấu trúc XrSpatialBufferEXT - Tham số
meshSemanticLabelsCountphải lớn hơn0
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
typelà XrStructureType của cấu trúc này.nextlàNULLhoặ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.meshSemanticLabelsCountlà mộtuint32_tmô tả số lượng phần tử trong mảngmeshSemanticLabels.meshSemanticLabelslà 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)
- Bạn phải bật tiện ích
XR_EXT_spatial_mesh_trackingtrước khi sử dụng XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT -
typephải làXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc -
meshSemanticLabelsphải là một con trỏ trỏ đến một mảng gồmmeshSemanticLabelsCountcấu trúc XrSpatialBufferEXT - Tham số
meshSemanticLabelsCountphải lớn hơn0
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_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONMở 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_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
Mở rộng XrStructureType :
XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTXR_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