XR_EXT_spatial_entity

Name String

XR_EXT_spatial_entity

Loại tiện ích

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

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

741

Bản sửa đổi

1

Trạng thái phê chuẩn

Đã phê chuẩn

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

XR_EXT_future

Cộng tác viên

Nihav Jain, Google
Jared Finder, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Karthik Kadappan, Magic Leap
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance

Tổng quan

Tiện ích này giới thiệu các khái niệm và nền tảng để hiểu rõ cảnh và suy luận không gian trong OpenXR. Điều này hợp nhất một số chức năng có liên quan nhưng riêng biệt, được liệt kê, định cấu hình và tương tác theo cách thống nhất rộng rãi như được xác định trong tiện ích này. Vì tiện ích này thiếu định nghĩa cụ thể về bất kỳ khía cạnh chức năng nào trong số này, nên văn bản đặc tả chính thức có xu hướng hơi trừu tượng. Các ví dụ trong văn bản đặc tả tiện ích này đôi khi đề cập đến chức năng được xác định trong một tiện ích liên quan sắp ra mắt hoặc giả định nhằm mục đích minh hoạ, mà không nhất thiết giới hạn hoặc chỉ định chức năng bổ sung đó.

Các phần chính của tiện ích này như sau:

  • Thực thể không gian : Chức năng tập trung vào thực thể , vốn tự cung cấp rất ít chức năng.
  • Thành phần không gian : Các thực thể này có thành phần liên kết với chúng để cung cấp dữ liệu và hành vi.
  • Loại thành phần không gian : Mỗi thành phần không gian thuộc một loại thành phần cụ thể và bất kỳ thực thể nào cũng có tối đa một thành phần thuộc bất kỳ loại thành phần nào.
  • Bối cảnh không gian : Tất cả hoạt động tương tác với thực thể không gian đều diễn ra trong một bối cảnh sau giai đoạn khởi chạy và định cấu hình.
  • Khả năng không gian : Thao tác với thực thể không gian được cung cấp rộng rãi theo khả năng . Chức năng là một đơn vị chức năng, ví dụ (không giới hạn) các điểm neo do ứng dụng xác định, tính năng phát hiện mặt phẳng hoặc theo dõi hình ảnh. Mỗi khả năng thường được xác định trong một tiện ích riêng biệt (được bật khi tạo thực thể như bình thường) và được bật cho một bối cảnh cụ thể tại thời điểm tạo.
  • Mỗi chức năng được liên kết với một tập hợp loại thành phần mà thành phần có mặt trên mọi thực thể do chức năng đó hiển thị. Phần mở rộng xác định một khả năng sẽ chỉ định loại thành phần nào là bắt buộc đối với khả năng đó ("được đảm bảo"), trong khi chính phần mở rộng đó hoặc các phần mở rộng khác có thể chỉ định loại thành phần không bắt buộc do một số phương thức triển khai tiềm năng cung cấp. Bất kỳ số lượng khả năng nào cũng có thể cung cấp cho các thực thể những thành phần của một loại thành phần nhất định, có thể sử dụng đồng nhất bất kể khả năng nào đã tạo ra thành phần đó.
  • Tính năng về khả năng không gian : Ngoài ra, một số khả năng cần được định cấu hình, do đó được tham số hoá bằng tính năng về khả năng .

Tiện ích này cung cấp một cơ chế để liệt kê các thành phần do từng khả năng được hỗ trợ trên hệ thống hiện tại cung cấp, cả thành phần bắt buộc và không bắt buộc.

Vì một số cách triển khai có thể yêu cầu các mức độ tham số hoá khác nhau cho khả năng , nên tiện ích này cung cấp một cơ chế để liệt kê các tính năng của khả năng được hỗ trợ liên kết với một khả năng nhất định trong hệ thống hiện tại.

Tiện ích này cũng xác định một số thành phần phổ biến dự kiến sẽ được dùng trong nhiều khả năng .

Thực thể không gian

Thực thể không gian là những thực thể tồn tại trong một không gian nào đó, có nhiều dữ liệu liên kết được sắp xếp thành các thành phần. Có thể là bất kỳ trường hợp nào sau đây:

  • Vật lý (ví dụ: các bề mặt phẳng như tường và sàn, các vật thể như ghế và tủ sách, v.v.)
  • Ảo (ví dụ: nội dung do một ứng dụng hoặc người dùng khác đặt và chia sẻ),
  • Do ứng dụng xác định (ví dụ: ứng dụng đánh dấu một khu vực là "phòng khách" hoặc "nhà bếp", hoặc đánh dấu một điểm là vị trí đặt TV, v.v.)

Những thứ được hiển thị thông qua hệ thống hành động, chẳng hạn như bộ điều khiển hoặc ánh mắt, không được mô hình hoá dưới dạng thực thể không gian.

Các thực thể không gian trong OpenXR được mô hình hoá dưới dạng một Hệ thống thành phần thực thể . Mỗi thực thể không gian có một tập hợp các thành phần và mỗi thành phần cung cấp một tập hợp dữ liệu và hành vi riêng biệt cho thực thể đó.

Thực thể không gian được biểu thị bằng một nguyên tử XrSpatialEntityIdEXT hoặc một tay điều khiển XrSpatialEntityEXT, thông tin chi tiết về các thực thể này được cung cấp trong phần Biểu diễn thực thể không gian.

Loại thành phần không gian

Một thực thể không gian có một hoặc nhiều thành phần cung cấp dữ liệu hoặc hành vi cho thực thể đó. Hãy xem phần Thành phần phổ biến để biết một số thành phần phổ biến do tiện ích này xác định.

typedef enum XrSpatialComponentTypeEXT {
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT = 1,
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT = 2,
    XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT = 3,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT = 4,
    XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT = 1000741000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT = 1000741001,
    XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT = 1000741002,
    XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT = 1000741003,
    XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT = 1000743000,
    XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT = 1000744000,
    XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT = 1000744001,
    XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT = 1000744002,
    XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT = 1000762000,
    XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT = 1000763000,
    XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT = 1000782000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT = 1000783000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT = 1000783001,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT = 1000783002,
    XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID = 1000785000,
    XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID = 1000786000,
    XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID = 1000791000,
    XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS = 1000792002,
    XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS = 1000792003,
    XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS = 1000792004,
    XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS = 1000792005,
    XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1 = 1000793000,
    XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID = 1000794000,
    XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2 = 1000798000,
    XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID = 1000803000,
    XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1 = 1000808000,
    XR_SPATIAL_COMPONENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;

Kiểu liệt kê XrSpatialComponentTypeEXT xác định các loại thành phần mà thời gian chạy có thể hỗ trợ.

Không phải tất cả các loại thành phần được liệt kê đều do tiện ích này tự cung cấp: một số loại yêu cầu bật các tiện ích bổ sung tại thời điểm tạo thực thể, như đã ghi trong tài liệu.

Các giá trị liệt kê có các giá trị sau:

Nội dung mô tả enum

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

Thành phần cung cấp ranh giới 2D cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentBounded2DListEXT; Cấu trúc dữ liệu tương ứng là XrSpatialBounded2DDataEXT

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT

Thành phần cung cấp ranh giới 3D cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentBounded3DListEXT ; Cấu trúc dữ liệu tương ứng là XrBoxf

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT

Thành phần cung cấp XrSpatialEntityIdEXT của thành phần mẹ cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentParentListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialEntityIdEXT

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT

Thành phần cung cấp lưới 3D cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentMesh3DListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialMeshDataEXT

XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT

Thành phần cung cấp enum căn chỉnh mặt phẳng cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentPlaneAlignmentListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialPlaneAlignmentEXT (Do tiện ích XR_EXT_spatial_plane_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT

Thành phần cung cấp lưới 2D cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentMesh2DListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialMeshDataEXT (Do tiện ích XR_EXT_spatial_plane_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT

Thành phần cung cấp đa giác ranh giới 2D cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentPolygon2DListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialPolygon2DDataEXT (Do tiện ích XR_EXT_spatial_plane_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho một mặt phẳng. Cấu trúc danh sách tương ứng là XrSpatialComponentPlaneSemanticLabelListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialPlaneSemanticLabelEXT (Do tiện ích XR_EXT_spatial_plane_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT

Một thành phần mô tả loại điểm đánh dấu, mã nhận dạng và vị trí. Cấu trúc danh sách tương ứng là XrSpatialComponentMarkerListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialMarkerDataEXT (Do tiện ích XR_EXT_spatial_marker_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho một cảnh; Cấu trúc danh sách tương ứng là XrSpatialComponentObjectSemanticLabelListEXT . Cấu trúc dữ liệu tương ứng là XrSpatialObjectSemanticLabelEXT . (Do tiện ích XR_EXT_spatial_object_tracking thêm)

XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho bàn phím; Cấu trúc danh sách tương ứng là XrSpatialComponentKeyboardSemanticLabelListEXT . Cấu trúc dữ liệu tương ứng là XrSpatialKeyboardSemanticLabelEXT (Được thêm bằng tiện ích XR_EXT_spatial_object_tracking)

XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho chuột; Cấu trúc danh sách tương ứng là XrSpatialComponentMouseSemanticLabelListEXT . Cấu trúc dữ liệu tương ứng là XrSpatialMouseSemanticLabelEXT (Do tiện ích XR_EXT_spatial_object_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT

Thành phần cung cấp vị trí cho một neo. Cấu trúc danh sách tương ứng là XrSpatialComponentAnchorListEXT ; Cấu trúc dữ liệu tương ứng là XrPosef (Do tiện ích XR_EXT_spatial_anchor thêm vào)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT

Thành phần cung cấp UUID cố định cho một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentPersistenceListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialPersistenceDataEXT (Do tiện ích XR_EXT_spatial_persistence thêm vào)

XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT

Thành phần mô tả loại hình ảnh phẳng. Cấu trúc danh sách tương ứng là XrSpatialComponentImage2DListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialImageSizeEXT . (Do tiện ích XR_EXT_spatial_image_tracking thêm)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT

Thành phần cung cấp pháp tuyến cho lưới 3D của một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentMesh3DNormalsListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialBufferEXT (Được thêm bởi tiện ích XR_EXT_spatial_mesh_tracking)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT

Thành phần cung cấp nhãn ngữ nghĩa theo đỉnh cho lưới 3D của một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentMesh3DVertexSemanticLabelsListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialBufferEXT ; Dữ liệu trong vùng đệm liên kết với XrSpatialMeshSemanticLabelEXT (Do tiện ích XR_EXT_spatial_mesh_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho từng mặt tam giác của lưới 3D của một thực thể không gian. Cấu trúc danh sách tương ứng là XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT ; Cấu trúc dữ liệu tương ứng là XrSpatialBufferEXT ; Dữ liệu trong vùng đệm liên kết với XrSpatialMeshSemanticLabelEXT (Do tiện ích XR_EXT_spatial_mesh_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID

Thành phần cung cấp nhãn ngữ nghĩa cho một đối tượng; Cấu trúc danh sách tương ứng là XrSpatialComponentObjectSemanticLabelListANDROID ; Cấu trúc dữ liệu tương ứng là XrSpatialObjectSemanticLabelANDROID (Do tiện ích XR_ANDROID_spatial_object_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID

Thành phần cung cấp tư thế của một lượt nhấn raycast trên một thực thể. Cấu trúc danh sách tương ứng là XrSpatialComponentRaycastResultListANDROID ; Cấu trúc dữ liệu tương ứng là XrSpatialRaycastResultDataANDROID (Do tiện ích XR_ANDROID_spatial_discovery_raycast thêm vào)

XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID

Thành phần cung cấp mã nhận dạng của thực thể bao gồm thực thể đính kèm. Cấu trúc danh sách tương ứng là XrSpatialComponentSubsumedByListANDROID ; Cấu trúc dữ liệu tương ứng là XrSpatialEntityIdEXT (Do tiện ích XR_ANDROID_spatial_component_subsumed_by thêm vào)

XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS

Thành phần cung cấp kích thước và loại phòng của hộp đựng giày; Cấu trúc danh sách tương ứng là XrSpatialComponentRoomListANDROIDSYS ; Cấu trúc dữ liệu tương ứng là XrSpatialRoomDataANDROIDSYS (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS

Thành phần cung cấp loại chất liệu của một bề mặt ranh giới; Cấu trúc danh sách tương ứng là XrSpatialComponentMaterialTypeListANDROIDSYS; Cấu trúc dữ liệu tương ứng là XrSpatialMaterialTypeANDROIDSYS (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS

Thành phần cung cấp độ tin cậy của một đối tượng có thể theo dõi; Cấu trúc danh sách tương ứng là XrSpatialComponentConfidenceListANDROIDSYS; Cấu trúc dữ liệu tương ứng là float (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS

Thành phần cung cấp thông tin về độ trống của phòng; Cấu trúc danh sách tương ứng là XrSpatialComponentRoomEmptinessListANDROIDSYS ; Cấu trúc dữ liệu tương ứng là float (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1

Thành phần cung cấp thông tin về lưới chiếm dụng trên thực thể đính kèm. Cấu trúc danh sách tương ứng là XrSpatialComponentOccupancyGridListANDROIDX1 ; Cấu trúc dữ liệu tương ứng là XrSpatialOccupancyGridDataANDROIDX1 (Do tiện ích XR_ANDROIDX1_spatial_occupancy_grid thêm vào)

XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID

Thành phần mô tả chú thích tứ giác. Cấu trúc danh sách tương ứng là XrSpatialComponentAnnotationQuadListANDROID ; Cấu trúc dữ liệu tương ứng là XrSpatialAnnotationQuadDataANDROID (Do tiện ích XR_ANDROID_spatial_annotation_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2

Thành phần cung cấp siêu dữ liệu cho hình học cảnh quan đường phố; Cấu trúc danh sách tương ứng là XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 ; Cấu trúc dữ liệu tương ứng là XrSpatialStreetscapeGeometryMetadataANDROIDX2 (Do tiện ích XR_ANDROIDX2_geospatial_streetscape thêm vào)

XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID

Thành phần xác định một thực thể là một điểm hình học. Không có danh sách hoặc cấu trúc dữ liệu tương ứng cho loại thành phần này. Sự hiện diện của thành phần này chỉ cho biết khả năng của một thực thể có thể được đính kèm vào một neo. (Do tiện ích XR_ANDROID_spatial_geometry_point thêm)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1

Một thành phần mô tả(các) phạm vi duy trì mà thực thể được duy trì. Nếu thời gian chạy hỗ trợ XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT, thì thời gian chạy đó cũng phải hỗ trợ thành phần này. Cấu trúc dữ liệu tương ứng là XrSpatialBufferEXT . Cấu trúc danh sách tương ứng là XrSpatialComponentPersistenceScopeDataListANDROIDX1 . (Do tiện ích XR_ANDROIDX1_spatial_anchor_cloud_sharing thêm)

Chức năng và cách thiết lập không gian

Khả năng không gian xác định khả năng của thời gian chạy trong việc khám phá các thực thể có một tập hợp thành phần được đảm bảo. Ứng dụng bật các thành phần của một chức năng không gian khi tạo XrSpatialContextEXT và thời gian chạy phải chỉ cung cấp các thành phần được bật trên các thực thể được phát hiện. Ví dụ: Nếu thời gian chạy báo cáo rằng một trong các thành phần cho một chức năng nhất định là "nhãn ngữ nghĩa", thì tức là ứng dụng có thể bật nhãn ngữ nghĩa thông qua cấu hình cho chức năng đó và thời gian chạy phải chỉ cung cấp thành phần nhãn ngữ nghĩa nếu thành phần đó được định cấu hình.

typedef enum XrSpatialCapabilityEXT {
    XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT = 1000741000,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT = 1000743000,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT = 1000743001,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT = 1000743002,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT = 1000743003,
    XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT = 1000744000,
    XR_SPATIAL_CAPABILITY_ANCHOR_EXT = 1000762000,
    XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT = 1000782000,
    XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT = 1000783000,
    XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID = 1000785000,
    XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID = 1000786000,
    XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS = 1000792000,
    XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS = 1000792001,
    XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID = 1000794000,
    XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2 = 1000798000,
    XR_SPATIAL_CAPABILITY_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityEXT;

Bảng liệt kê XrSpatialCapabilityEXT xác định các loại chức năng mà thời gian chạy có thể hỗ trợ.

Các giá trị liệt kê có các giá trị sau:

Nội dung mô tả enum

XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT

Theo dõi máy bay (Do tiện ích XR_EXT_spatial_plane_tracking thêm vào)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT

Khả năng phát hiện và theo dõi mã QR. (Do tiện ích XR_EXT_spatial_marker_tracking thêm)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT

Khả năng phát hiện và theo dõi mã Micro QR. (Do tiện ích XR_EXT_spatial_marker_tracking thêm)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT

Khả năng phát hiện và theo dõi Điểm đánh dấu Aruco. (Do tiện ích XR_EXT_spatial_marker_tracking thêm)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT

Khả năng phát hiện và theo dõi AprilTag. (Do tiện ích XR_EXT_spatial_marker_tracking thêm)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT

Theo dõi đối tượng (Do tiện ích XR_EXT_spatial_object_tracking thêm vào)

XR_SPATIAL_CAPABILITY_ANCHOR_EXT

Khả năng tạo neo không gian (Do tiện ích XR_EXT_spatial_anchor thêm vào)

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT

Khả năng phát hiện và theo dõi hình ảnh tham khảo phẳng. (Do tiện ích XR_EXT_spatial_image_tracking thêm)

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT

Khả năng theo dõi lưới của một môi trường. (Do tiện ích XR_EXT_spatial_mesh_tracking thêm)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID

Theo dõi đối tượng (Do tiện ích XR_ANDROID_spatial_object_tracking thêm vào)

XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID

Raycast dựa trên vùng đệm độ sâu (Do tiện ích XR_ANDROID_spatial_discovery_raycast thêm vào)

XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS

Khả năng theo dõi phòng (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS

Khả năng theo dõi ranh giới phòng (Do tiện ích XR_ANDROIDSYS_spatial_room_tracking thêm vào)

XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID

Theo dõi chú thích (Do tiện ích XR_ANDROID_spatial_annotation_tracking thêm)

XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2

Hình dạng cảnh quan đường phố (Do tiện ích XR_ANDROIDX2_geospatial_streetscape thêm vào)

Hàm xrEnumerateSpatialCapabilitiesEXT được định nghĩa như sau:

XrResult xrEnumerateSpatialCapabilitiesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    capabilityCapacityInput,
    uint32_t*                                   capabilityCountOutput,
    XrSpatialCapabilityEXT*                     capabilities);

Nội dung mô tả về tham số

  • instance là một tay điều khiển cho XrInstance .
  • systemId là XrSystemId có các chức năng không gian sẽ được liệt kê.
  • capabilityCapacityInput là dung lượng của mảng capabilities hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • capabilityCountOutput là số lượng chức năng hoặc dung lượng cần thiết trong trường hợp capabilityCapacityInput không đủ.
  • capabilities là một mảng XrSpatialCapabilityEXT . Giá trị này có thể là NULL nếu capabilityCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước capabilities cần thiết.

Ứng dụng có thể liệt kê danh sách các chức năng không gian mà một XrSystemId nhất định hỗ trợ bằng cách sử dụng xrEnumerateSpatialCapabilitiesEXT .

Thời gian chạy không được liệt kê các chức năng không gian có tiện ích không được bật cho instance .

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

  • Bạn phải bật tiện ích XR_EXT_spatial_entity trước khi gọi xrEnumerateSpatialCapabilitiesEXT
  • instance phải là một tên người dùng XrInstance hợp lệ
  • capabilityCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu capabilityCapacityInput không phải là 0 , thì capabilities phải là con trỏ đến một mảng gồm các giá trị capabilityCapacityInput XrSpatialCapabilityEXT

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrEnumerateSpatialCapabilityComponentTypesEXT được định nghĩa như sau:

XrResult xrEnumerateSpatialCapabilityComponentTypesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrSpatialCapabilityEXT                      capability,
    XrSpatialCapabilityComponentTypesEXT*       capabilityComponents);

Nội dung mô tả về tham số

  • instance là một tay điều khiển cho XrInstance .
  • systemId là XrSystemId có các thành phần chức năng không gian sẽ được liệt kê.
  • capability là XrSpatialCapabilityEXT mà các thành phần sẽ được liệt kê.
  • capabilityComponents là con trỏ đến XrSpatialCapabilityComponentTypesEXT , đây là cấu trúc đầu vào/đầu ra trong đó mảng do ứng dụng phân bổ được điền sẵn.

Hàm này liệt kê các loại thành phần mà chức năng đã cho cung cấp trên các thực thể của nó trong hệ thống như đã định cấu hình.

Ứng dụng có thể sử dụng các loại thành phần được liệt kê trong XrSpatialCapabilityComponentTypesEXT :: componentTypes để hiểu toàn bộ tập hợp thành phần mà systemId hỗ trợ cho capability và có thể sử dụng danh sách này để xác định cấu hình hợp lệ cho capability khi tạo XrSpatialContextEXT cho cấu hình đó.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT nếu capability không được liệt kê bằng xrEnumerateSpatialCapabilitiesEXT .

Môi trường thời gian chạy không được liệt kê các loại thành phần không gian có tiện ích không được bật cho instance .

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

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialCapabilityComponentTypesEXT {
    XrStructureType               type;
    void*                         next;
    uint32_t                      componentTypeCapacityInput;
    uint32_t                      componentTypeCountOutput;
    XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialCapabilityComponentTypesEXT;

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.
  • componentTypeCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • componentTypeCountOutput là số lượng loại thành phần hoặc dung lượng cần thiết trong trường hợp componentTypeCapacityInput không đủ.
  • componentTypes là một mảng XrSpatialComponentTypeEXT . Giá trị này có thể là NULL nếu componentTypeCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước componentTypes cần thiết.

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

Tính năng về khả năng không gian

typedef enum XrSpatialCapabilityFeatureEXT {
    XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT = 1000743000,
    XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT = 1000743001,
    XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT = 1000744000,
    XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID = 1000761000,
    XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID = 1000761001,
    XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID = 1000761002,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT = 1000782000,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT = 1000782001,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT = 1000782002,
    XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT = 1000783000,
    XR_SPATIAL_CAPABILITY_FEATURE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityFeatureEXT;

Một số chức năng có các tham số được hiển thị cho ứng dụng để định cấu hình cách dữ liệu thành phần được tính toán theo thời gian chạy. Các phương diện tham số hoá/khả năng định cấu hình này được gọi là tính năng về chức năng. Ví dụ: đối với chức năng theo dõi hình ảnh, thời gian chạy có thể hỗ trợ một tính năng để ứng dụng chỉ định xem hình ảnh được theo dõi có cố định hay không.

Việc cung cấp thông tin này cho thời gian chạy thông qua cấu trúc cấu hình không được thay đổi tập hợp các loại thành phần có trên các thực thể liên kết, ví dụ: trên hình ảnh được theo dõi. Tuy nhiên, thời gian chạy có thể tối ưu hoá, chẳng hạn như khả năng theo dõi của tính năng theo dõi hình ảnh và mang lại trải nghiệm tốt hơn cho ứng dụng.

Các tính năng như vậy được biểu thị bằng XrSpatialCapabilityFeatureEXT và ứng dụng liệt kê các tính năng đó bằng cách sử dụng xrEnumerateSpatialCapabilityFeaturesEXT .

Mỗi tính năng của chức năng đều có một cấu trúc cấu hình tương ứng để bật tính năng đó. Các cấu trúc cấu hình như vậy phải được liên kết với XrSpatialCapabilityConfigurationBaseHeaderEXT :: next của chức năng tương ứng.

Các giá trị liệt kê có các giá trị sau:

Nội dung mô tả enum

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT

Tính năng cho phép ứng dụng chỉ định kích thước cho điểm đánh dấu. Cấu trúc cấu hình tương ứng là XrSpatialMarkerSizeEXT (Do tiện ích XR_EXT_spatial_marker_tracking thêm vào)

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT

Tính năng cho phép ứng dụng chỉ định xem điểm đánh dấu có tĩnh hay không. Cấu trúc cấu hình tương ứng là XrSpatialMarkerStaticOptimizationEXT (Do tiện ích XR_EXT_spatial_marker_tracking thêm vào)

XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT

Tính năng không gian cho phép các ứng dụng chỉ định một nhóm nhỏ nhãn từ XrSpatialObjectSemanticLabelEXT để thời gian chạy theo dõi. Cấu trúc cấu hình tương ứng là XrSpatialFeatureObjectSemanticLabelSubsetEXT . (Do tiện ích XR_EXT_spatial_object_tracking thêm)

XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID

Thời gian chạy hỗ trợ bộ lọc XrSpatialBoundsSpherefANDROID cho XrSpatialDiscoverySnapshotCreateInfoEXT ; Điều này không yêu cầu đưa bất kỳ cấu trúc cấu hình nào vào trong quá trình tạo bối cảnh không gian. (Do tiện ích XR_ANDROID_spatial_discovery_bounds thêm)

XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID

Môi trường thời gian chạy hỗ trợ bộ lọc XrSpatialBoundsBoxfANDROID cho XrSpatialDiscoverySnapshotCreateInfoEXT ; Bạn không cần thêm cấu trúc cấu hình nào trong quá trình tạo bối cảnh không gian. (Do tiện ích XR_ANDROID_spatial_discovery_bounds thêm)

XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID

Môi trường thời gian chạy hỗ trợ bộ lọc XrSpatialBoundsFrustumfANDROID cho XrSpatialDiscoverySnapshotCreateInfoEXT ; Bạn không cần phải thêm cấu trúc cấu hình nào trong quá trình tạo bối cảnh không gian. (Do tiện ích XR_ANDROID_spatial_discovery_bounds thêm)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT

Môi trường thời gian chạy hỗ trợ tự động suy luận kích thước thực tế của hình ảnh được phát hiện và theo dõi. Cấu trúc cấu hình tương ứng là XrSpatialImageSizeEXT (Được thêm bằng tiện ích XR_EXT_spatial_image_tracking)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT

Thời gian chạy hỗ trợ XrSpatialImageStaticOptimizationEXT . Cấu trúc cấu hình tương ứng là XrSpatialImageStaticOptimizationEXT . (Do tiện ích XR_EXT_spatial_image_tracking thêm)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT

Môi trường thời gian chạy hỗ trợ XrSpatialImageSizeEXT . Cấu trúc cấu hình tương ứng là XrSpatialImageSizeEXT (Do tiện ích XR_EXT_spatial_image_tracking thêm vào)

XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT

Tính năng theo dõi lưới kín nước của môi trường. Cấu trúc cấu hình tương ứng là XrSpatialFeatureTrackWatertightMeshEXT . (Do tiện ích XR_EXT_spatial_mesh_tracking thêm)

Hàm xrEnumerateSpatialCapabilityFeaturesEXT được định nghĩa như sau:

XrResult xrEnumerateSpatialCapabilityFeaturesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrSpatialCapabilityEXT                      capability,
    uint32_t                                    capabilityFeatureCapacityInput,
    uint32_t*                                   capabilityFeatureCountOutput,
    XrSpatialCapabilityFeatureEXT*              capabilityFeatures);

Nội dung mô tả về tham số

  • instance là một tay điều khiển cho XrInstance .
  • systemId là XrSystemId có các tính năng về chức năng không gian sẽ được liệt kê.
  • capability là XrSpatialCapabilityEXT mà các tính năng sẽ được liệt kê.
  • capabilityFeatureCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • capabilityFeatureCountOutput là số lượng tính năng hoặc dung lượng cần thiết trong trường hợp capabilityFeatureCapacityInput không đủ.
  • capabilityFeatures là một mảng XrSpatialCapabilityFeatureEXT . Giá trị này có thể là NULL nếu capabilityFeatureCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước capabilityFeatures cần thiết.

Ứng dụng khám phá các tính năng mà một hệ thống nhất định hỗ trợ cho XrSpatialCapabilityEXT bằng cách sử dụng xrEnumerateSpatialCapabilityFeaturesEXT .

Đối với các chức năng có tính năng được hiển thị, ứng dụng sẽ chọn (các) tính năng để bật và cung cấp cấu trúc cấu hình tương ứng trong chuỗi tiếp theo của cấu trúc cấu hình chức năng trong XrSpatialContextCreateInfoEXT :: capabilityConfigs .

Nếu capability không phải là một chức năng được liệt kê bởi xrEnumerateSpatialCapabilitiesEXT , thì thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT .

Thời gian chạy không được liệt kê các tính năng về không gian mà tiện ích của chúng không được bật cho instance .

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

  • Tiện ích XR_EXT_spatial_entity phải được bật trước khi gọi xrEnumerateSpatialCapabilityFeaturesEXT
  • instance phải là một tên người dùng XrInstance hợp lệ
  • capability phải là một giá trị XrSpatialCapabilityEXT hợp lệ
  • capabilityFeatureCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu capabilityFeatureCapacityInput không phải là 0 , thì capabilityFeatures phải là con trỏ đến một mảng các giá trị capabilityFeatureCapacityInput XrSpatialCapabilityFeatureEXT

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

Bối cảnh không gian

Tạo bối cảnh không gian

XR_DEFINE_HANDLE(XrSpatialContextEXT)

Tay điều khiển XrSpatialContextEXT đại diện cho các tài nguyên để khám phá và cập nhật một số thực thể không gian trong môi trường của người dùng. Ứng dụng có thể sử dụng tên người dùng này để khám phá và cập nhật các thực thể không gian bằng các hàm khác trong tiện ích này.

Hàm xrCreateSpatialContextAsyncEXT được định nghĩa như sau:

XrResult xrCreateSpatialContextAsyncEXT(
    XrSession                                   session,
    const XrSpatialContextCreateInfoEXT*        createInfo,
    XrFutureEXT*                                future);

Nội dung mô tả về tham số

  • session là một XrSession, trong đó bối cảnh không gian sẽ hoạt động.
  • createInfo là XrSpatialContextCreateInfoEXT dùng để chỉ định các tham số bối cảnh không gian.
  • future là con trỏ đến XrFutureEXT .

Ứng dụng có thể tạo một tay điều khiển XrSpatialContextEXT bằng cách:

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu XrSpatialContextCreateInfoEXT ::capabilityConfigCount là 0. Một trình xử lý bối cảnh không gian cần có ít nhất một chức năng.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT nếu bất kỳ chức năng nào trong mảng XrSpatialContextCreateInfoEXT :: capabilityConfigs không được liệt kê bằng xrEnumerateSpatialCapabilitiesEXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu bất kỳ XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount nào trong XrSpatialContextCreateInfoEXT :: capabilityConfigs là 0. Cấu hình chức năng sẽ không hoàn chỉnh nếu không có danh sách các loại thành phần cần bật cho chức năng đó.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT nếu bất kỳ loại thành phần nào được liệt kê trong XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents không được liệt kê cho XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability trong xrEnumerateSpatialCapabilityComponentTypesEXT .

Nếu bất kỳ cấu trúc nào trong chuỗi tiếp theo của XrSpatialContextCreateInfoEXT :: capabilityConfigs tương ứng với một XrSpatialCapabilityFeatureEXT không được liệt kê cho chức năng đó trong xrEnumerateSpatialCapabilityFeaturesEXT , thì thời gian chạy phải bỏ qua cấu trúc XrSpatialCapabilityFeatureEXT đó.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu XrSpatialContextCreateInfoEXT :: capabilityConfigs chứa nhiều cấu trúc có cùng XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability .

Để đảm bảo sử dụng tối ưu tài nguyên hệ thống, thời gian chạy có thể sử dụng các cấu hình được cung cấp trong mảng XrSpatialContextCreateInfoEXT để chuẩn bị cho các yêu cầu về không gian sắp tới. Ví dụ: một môi trường thời gian chạy hỗ trợ tính năng theo dõi mặt phẳng có thể chỉ bắt đầu quy trình theo dõi mặt phẳng nếu ứng dụng tạo một tay điều khiển bối cảnh không gian chứa tính năng theo dõi mặt phẳng. Nếu các chức năng đã định cấu hình có thời gian khởi động lâu, thì lệnh gọi đến xrCreateSpatialDiscoverySnapshotAsyncEXT có thể dẫn đến ảnh chụp nhanh trống. Ứng dụng có thể đợi XrEventDataSpatialDiscoveryRecommendedEXT trước khi sử dụng xrCreateSpatialDiscoverySnapshotAsyncEXT để đảm bảo rằng các dịch vụ theo dõi cơ bản đã khởi động.

Nếu một thời gian chạy thực thi hệ thống quyền để kiểm soát quyền truy cập của ứng dụng vào các chức năng không gian đang được định cấu hình cho XrSpatialContextEXT , thì thời gian chạy phải trả về XR_ERROR_PERMISSION_INSUFFICIENT nếu các quyền đó chưa được cấp cho ứng dụng này.

Hàm này bắt đầu một thao tác không đồng bộ và tạo một XrFutureEXT tương ứng, có thể sử dụng với xrPollFutureEXT và các hàm liên quan. Giá trị trả về của hàm này chỉ cho biết liệu các tham số có được chấp nhận để lên lịch cho hoạt động không đồng bộ hay không. Hàm hoàn thành tương ứng là xrCreateSpatialContextCompleteEXT , có thể sử dụng khi một tương lai từ hàm này ở trạng thái READY, với kết quả được hàm đó điền vào cấu trúc hoàn thành XrCreateSpatialContextCompletionEXT .

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_TIME_INVALID (nếu XR_ANDROID_spatial_annotation_tracking được bật)

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

typedef struct XrSpatialContextCreateInfoEXT {
    XrStructureType                                                type;
    const void*                                                    next;
    uint32_t                                                       capabilityConfigCount;
    const XrSpatialCapabilityConfigurationBaseHeaderEXT* const*    capabilityConfigs;
} XrSpatialContextCreateInfoEXT;

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.
  • capabilityConfigCount là một uint32_t mô tả số lượng phần tử trong mảng capabilityConfigs.
  • capabilityConfigs là một con trỏ đến một mảng con trỏ XrSpatialCapabilityConfigurationBaseHeaderEXT.

Cấu trúc XrSpatialContextCreateInfoEXT mô tả thông tin để tạo một tay điều khiển XrSpatialContextEXT.

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

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

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

Cấu trúc này không được dùng trực tiếp trong API, nhưng các cấu trúc con của cấu trúc này có thể được dùng với XrSpatialContextCreateInfoEXT để định cấu hình các chức năng không gian.

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 .
  • 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 .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT nếu capability không được liệt kê bằng xrEnumerateSpatialCapabilitiesEXT . Thời gian chạy phải trả về XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT nếu bất kỳ loại thành phần nào được liệt kê trong enabledComponents không được liệt kê cho capability trong xrEnumerateSpatialCapabilityComponentTypesEXT .

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

Hàm xrCreateSpatialContextCompleteEXT được định nghĩa như sau:

XrResult xrCreateSpatialContextCompleteEXT(
    XrSession                                   session,
    XrFutureEXT                                 future,
    XrCreateSpatialContextCompletionEXT*        completion);

Nội dung mô tả về tham số

xrCreateSpatialContextCompleteEXT hoàn tất thao tác không đồng bộ do xrCreateSpatialContextAsyncEXT bắt đầu. Thời gian chạy phải trả về XR_ERROR_FUTURE_PENDING_EXT nếu future không ở trạng thái sẵn sàng. Thời gian chạy phải trả về XR_ERROR_FUTURE_INVALID_EXT nếu future đã hoàn tất hoặc bị huỷ.

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrCreateSpatialContextCompletionEXT {
    XrStructureType        type;
    void*                  next;
    XrResult               futureResult;
    XrSpatialContextEXT    spatialContext;
} XrCreateSpatialContextCompletionEXT;

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.
  • futureResult là XrResult của thao tác tạo bối cảnh không gian.
  • spatialContext là một XrSpatialContextEXT được tạo bằng cách sử dụng dữ liệu và cấu hình trong xrCreateSpatialContextAsyncEXT :: createInfo .

Mã trả về trong tương lai

Giá trị futureResult:

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT

Nếu futureResult là mã thành công, thì spatialContext phải hợp lệ. Nếu spatialContext hợp lệ, thì giá trị này chỉ hợp lệ trong vòng đời của xrCreateSpatialContextAsyncEXT :: session hoặc cho đến khi ứng dụng huỷ spatialContext bằng xrDestroySpatialContextEXT , tuỳ theo điều kiện nào xảy ra trước.

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

Huỷ bối cảnh không gian

Hàm xrDestroySpatialContextEXT được định nghĩa như sau:

XrResult xrDestroySpatialContextEXT(
    XrSpatialContextEXT                         spatialContext);

Nội dung mô tả về tham số

Ứng dụng có thể gọi hàm xrDestroySpatialContextEXT để giải phóng tay điều khiển spatialContext và các tài nguyên cơ bản khi hoàn tất các nhiệm vụ khám phá và cập nhật thực thể không gian. Nếu không có XrSpatialContextEXT hợp lệ nào khác được tạo bằng cùng một chức năng không gian như spatialContext , thì lệnh gọi này sẽ đóng vai trò là đề xuất cho thời gian chạy để tắt các dịch vụ theo dõi cần thiết cho những chức năng đó nhằm tiết kiệm tài nguyên hệ thống.

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

Độ an toàn cho chuỗi

  • Quyền truy cập vào spatialContext và mọi tay điều khiển con phải được đồng bộ hoá bên ngoài

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Biểu diễn thực thể không gian

Mã nhận dạng thực thể không gian

XR_DEFINE_ATOM(XrSpatialEntityIdEXT)

XrSpatialEntityIdEXT được dùng để biểu thị mọi loại thực thể mà thời gian chạy phát hiện được trong môi trường không gian của người dùng. XrSpatialEntityIdEXT hợp lệ cho XrSpatialContextEXT mà nó được phát hiện và thời gian chạy không được sử dụng lại cùng một XrSpatialEntityIdEXT cho các thực thể khác nhau trong cùng một XrSpatialContextEXT . Ngoài ra, thời gian chạy không được sử dụng lại cùng một XrSpatialEntityIdEXT trên nhiều XrSpatialContextEXT trong cùng một XrSession, bất kể giá trị đó đại diện cho cùng một thực thể hay các thực thể khác nhau.

#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0

XR_NULL_SPATIAL_ENTITY_ID_EXT là một giá trị dành riêng đại diện cho một XrSpatialEntityIdEXT không hợp lệ. Giá trị này có thể được truyền đến và trả về từ các hàm API chỉ khi được cho phép cụ thể.

Ô điều khiển thực thể không gian

XR_DEFINE_HANDLE(XrSpatialEntityEXT)

Tay điều khiển XrSpatialEntityEXT đại diện cho một thực thể không gian. Ứng dụng có thể tạo một tay điều khiển như vậy để thể hiện sự quan tâm của ứng dụng đối với một thực thể cụ thể trong thời gian chạy.

Tạo tay điều khiển thực thể không gian từ mã nhận dạng

Hàm xrCreateSpatialEntityFromIdEXT được định nghĩa như sau:

XrResult xrCreateSpatialEntityFromIdEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialEntityFromIdCreateInfoEXT*   createInfo,
    XrSpatialEntityEXT*                         spatialEntity);

Nội dung mô tả về tham số

Ứng dụng có thể sử dụng xrCreateSpatialEntityFromIdEXT để tạo một tay điều khiển XrSpatialEntityEXT, đây là tệp đối chiếu đến một thực thể tồn tại trong môi trường của người dùng.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT nếu XrSpatialEntityFromIdCreateInfoEXT :: entityId không phải là mã nhận dạng hợp lệ cho spatialContext .

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialEntityFromIdCreateInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialEntityIdEXT    entityId;
} XrSpatialEntityFromIdCreateInfoEXT;

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.
  • entityId là XrSpatialEntityIdEXT của thực thể mà ứng dụng muốn tạo tên người dùng.

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

Huỷ tay điều khiển thực thể không gian

Hàm xrDestroySpatialEntityEXT được định nghĩa như sau:

XrResult xrDestroySpatialEntityEXT(
    XrSpatialEntityEXT                          spatialEntity);

Nội dung mô tả về tham số

Ứng dụng có thể sử dụng xrDestroySpatialEntityEXT để giải phóng tay điều khiển spatialEntity khi không còn quan tâm đến thực thể được tham chiếu bởi tay điều khiển này.

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

Độ an toàn cho chuỗi

  • Quyền truy cập vào spatialEntity và mọi tay điều khiển con phải được đồng bộ hoá bên ngoài

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Ảnh chụp nhanh không gian

XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)

Ứng dụng có thể tạo ảnh chụp nhanh không gian nhằm mục đích khám phá các thực thể không gian hoặc cập nhật thông tin về các thực thể không gian đã biết. Tay điều khiển XrSpatialSnapshotEXT đại diện cho dữ liệu không thể thay đổi của các thực thể không gian được phát hiện hoặc cập nhật và một nhóm nhỏ các thành phần của chúng do ứng dụng chọn. Ảnh chụp nhanh không gian thể hiện một khung hiển thị nhất quán về các thực thể và dữ liệu thành phần của chúng. Sau khi tạo ảnh chụp nhanh, dữ liệu của ảnh chụp nhanh phải không đổi trong khi ảnh chụp nhanh còn hợp lệ.

Ứng dụng có thể tạo số lượng ảnh chụp nhanh tuỳ ý nhưng phải lưu ý đến bộ nhớ được phân bổ cho mỗi ảnh chụp nhanh mới và phải huỷ ảnh chụp nhanh sau khi không cần đến nữa.

Tạo ảnh chụp nhanh về hoạt động khám phá

Hàm xrCreateSpatialDiscoverySnapshotAsyncEXT được định nghĩa như sau:

XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
    XrFutureEXT*                                future);

Nội dung mô tả về tham số

Ứng dụng có thể khám phá các thực thể không gian bằng cách tạo ảnh chụp nhanh khám phá bằng xrCreateSpatialDiscoverySnapshotAsyncEXT .

Hàm này bắt đầu một thao tác không đồng bộ và tạo một XrFutureEXT tương ứng, có thể sử dụng với xrPollFutureEXT và các hàm liên quan. Giá trị trả về của hàm này chỉ cho biết liệu các tham số có được chấp nhận để lên lịch cho hoạt động không đồng bộ hay không. Hàm hoàn thành tương ứng là xrCreateSpatialDiscoverySnapshotCompleteEXT , có thể sử dụng khi một tương lai từ hàm này ở trạng thái READY, với kết quả được hàm đó điền vào cấu trúc hoàn thành XrCreateSpatialDiscoverySnapshotCompletionEXT .

Ứng dụng có thể gửi nhiều yêu cầu tạo ảnh chụp nhanh khám phá mà không cần đợi yêu cầu trước đó hoàn tất. Thời gian chạy có thể xử lý và hoàn tất việc tạo bản tổng quan nhanh theo thứ tự bất kỳ. Thời gian chạy có thể trì hoãn việc hoàn tất quá trình tạo ảnh chụp nhanh khám phá để điều tiết ứng dụng nếu cần giảm mức sử dụng tài nguyên hệ thống do các chính sách về nguồn điện, nhiệt hoặc các chính sách khác của thiết bị.

Ứng dụng có thể sử dụng XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes để lọc danh sách thực thể và các thành phần có dữ liệu mà thời gian chạy phải đưa vào ảnh chụp nhanh. Nếu ứng dụng cung cấp danh sách hợp lệ các loại thành phần không gian trong XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes , thì thời gian chạy chỉ được đưa các thực thể không gian vào ảnh chụp nhanh có ít nhất một trong các thành phần được cung cấp trong XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes . Ngoài ra, thời gian chạy chỉ được bao gồm dữ liệu cho những thành phần trong ảnh chụp nhanh.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT nếu bất kỳ XrSpatialComponentTypeEXT nào trong XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes không được bật cho các chức năng không gian được truyền đến XrSpatialContextCreateInfoEXT :: capabilityConfigs khi tạo spatialContext .

Nếu ứng dụng không cung cấp danh sách các loại thành phần không gian trong XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes , thì thời gian chạy phải bao gồm tất cả các thực thể không gian trong ảnh chụp nhanh có tập hợp thành phần được liệt kê trong XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents cho các chức năng được định cấu hình cho spatialContext . Thời gian chạy phải bao gồm dữ liệu cho tất cả các thành phần được bật của những chức năng được định cấu hình cho spatialContext .

Nếu XrEventDataReferenceSpaceChangePending được đưa vào hàng đợi trước khi hoàn tất future và XrEventDataReferenceSpaceChangePending :: poseValid là false, thì thời gian chạy có thể tạo một XrSpatialSnapshotEXT không có thực thể nào trong đó hoặc đặt XrSpatialEntityTrackingStateEXT của các thực thể không còn có thể định vị được trong XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace tại XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time thành XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT hoặc XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT . Thời gian chạy không được đặt XrCreateSpatialContextCompletionEXT :: futureResult thành mã lỗi do XrEventDataReferenceSpaceChangePending .

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialDiscoverySnapshotCreateInfoEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialDiscoverySnapshotCreateInfoEXT;

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.
  • componentTypeCount là một uint32_t mô tả số lượng phần tử trong mảng componentTypes.
  • componentTypes là một mảng XrSpatialComponentTypeEXT .

Cấu trúc XrSpatialDiscoverySnapshotCreateInfoEXT mô tả thông tin để tạo một tay điều khiển XrSpatialSnapshotEXT khi khám phá các thực thể không gian.

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

Hàm xrCreateSpatialDiscoverySnapshotCompleteEXT được định nghĩa như sau:

XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
    XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);

Nội dung mô tả về tham số

xrCreateSpatialDiscoverySnapshotCompleteEXT hoàn tất thao tác không đồng bộ do xrCreateSpatialDiscoverySnapshotAsyncEXT bắt đầu. Thời gian chạy phải trả về XR_ERROR_FUTURE_PENDING_EXT nếu XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future không ở trạng thái sẵn sàng. Thời gian chạy phải trả về XR_ERROR_FUTURE_INVALID_EXT nếu XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future đã hoàn tất hoặc bị huỷ.

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrCreateSpatialDiscoverySnapshotCompletionInfoEXT {
    XrStructureType    type;
    const void*        next;
    XrSpace            baseSpace;
    XrTime             time;
    XrFutureEXT        future;
} XrCreateSpatialDiscoverySnapshotCompletionInfoEXT;

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

Vị trí trong nhiều dữ liệu thành phần có trong ảnh chụp nhanh đã tạo sẽ được biểu thị trong baseSpace , nằm tại time .

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

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

typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
    XrStructureType         type;
    void*                   next;
    XrResult                futureResult;
    XrSpatialSnapshotEXT    snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;

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.
  • futureResult là XrResult của thao tác tạo ảnh chụp nhanh khám phá không gian.
  • snapshot là một XrSpatialSnapshotEXT có thể dùng để truy vấn dữ liệu thành phần của các thực thể không gian được phát hiện.

Mã trả về trong tương lai

Giá trị futureResult:

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

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

Sự kiện đề xuất khám phá

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

typedef struct XrEventDataSpatialDiscoveryRecommendedEXT {
    XrStructureType        type;
    const void*            next;
    XrSpatialContextEXT    spatialContext;
} XrEventDataSpatialDiscoveryRecommendedEXT;

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.
  • spatialContext là XrSpatialContextEXT mà thời gian chạy đề xuất khám phá.

Ứng dụng có thể truy xuất sự kiện này bằng cách sử dụng xrPollEvent . Ứng dụng có thể tránh thực hiện quá nhiều lệnh gọi đến xrCreateSpatialDiscoverySnapshotAsyncEXT để khám phá các thực thể không gian bằng cách chờ sự kiện này. Nếu ứng dụng tạo nhiều ảnh chụp nhanh khám phá có cùng XrSpatialDiscoverySnapshotCreateInfoEXT giữa hai sự kiện XrEventDataSpatialDiscoveryRecommendedEXT, thì ảnh chụp nhanh thu được có thể chứa cùng một thực thể, do đó, việc tạo ảnh chụp nhanh và truy vấn dữ liệu sẽ gây lãng phí.

Việc chờ sự kiện này tạo ảnh chụp nhanh mới về hoạt động khám phá sẽ đảm bảo ứng dụng không làm quá tải hệ thống bằng các yêu cầu khám phá mà thời gian chạy có thể không trả về bất kỳ dữ liệu mới nào, đồng thời giúp tránh nguy cơ lạm dụng tài nguyên hệ thống và bị điều tiết do chính sách về nguồn điện hoặc nhiệt của thiết bị. Điều này cũng giúp tạo ra sự tương đồng giữa các thời gian chạy đang khám phá các thực thể không gian một cách nhanh chóng bằng tính năng theo dõi trực tiếp và các thời gian chạy đang cung cấp các thực thể không gian từ trạng thái đã ghi trước đó (trong đó thời gian chạy có thể chỉ đưa sự kiện đề xuất khám phá vào hàng đợi một lần cho mỗi XrSpatialContextEXT).

Thời gian chạy không được đưa sự kiện này vào hàng đợi để thông báo cho ứng dụng về các thay đổi hoặc điều chỉnh đối với dữ liệu thành phần của các thực thể không gian hiện có. Ứng dụng có thể sử dụng xrCreateSpatialUpdateSnapshotEXT để theo dõi thông tin cập nhật dữ liệu thành phần cho các thực thể không gian mà ứng dụng quan tâm.

Thời gian chạy có thể đưa một sự kiện đề xuất khám phá vào hàng đợi mà không cần đợi ứng dụng gọi xrCreateSpatialDiscoverySnapshotAsyncEXT trước. Ví dụ: thời gian chạy có thể dựa trên quyết định đưa sự kiện đề xuất khám phá vào hàng đợi dựa trên cấu hình của XrSpatialContextEXT, hiểu biết của chính thời gian chạy về môi trường xung quanh người dùng (khám phá các thực thể mới hoặc mất các thực thể hiện có) hoặc để gợi ý nhịp độ yêu cầu khám phá thích hợp cho ứng dụng để không làm quá tải tài nguyên hệ thống. Thời gian chạy có thể chọn không bao giờ đưa sự kiện này vào hàng đợi cho XrSpatialContextEXT nếu không tìm thấy thực thể nào trong môi trường của người dùng trong suốt thời gian hoạt động của XrSpatialContextEXT đó.

Thời gian chạy không được đưa sự kiện này vào hàng đợi cho một spatialContext nhất định cho đến khi ứng dụng hoàn tất quá trình tạo bằng cách sử dụng xrCreateSpatialContextCompleteEXT .

Sau khi ứng dụng gọi xrDestroySpatialContextEXT, thời gian chạy không được đưa thêm bất kỳ sự kiện đề xuất khám phá nào vào hàng đợi cho bối cảnh không gian đó, cũng như không được trả về bất kỳ sự kiện nào như vậy cho bối cảnh đó từ xrPollEvent .

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

Dữ liệu thành phần truy vấn

Hàm xrQuerySpatialComponentDataEXT được định nghĩa như sau:

XrResult xrQuerySpatialComponentDataEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialComponentDataQueryConditionEXT* queryCondition,
    XrSpatialComponentDataQueryResultEXT*       queryResult);

Nội dung mô tả về tham số

Ứng dụng có thể sử dụng xrQuerySpatialComponentDataEXT để truy vấn dữ liệu thành phần của các thực thể trong ảnh chụp nhanh bằng cách đính kèm cấu trúc danh sách vào XrSpatialComponentDataQueryResultEXT :: next tương ứng với mỗi XrSpatialComponentTypeEXT trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

Nếu ứng dụng đính kèm một cấu trúc danh sách vào XrSpatialComponentDataQueryResultEXT :: next không tương ứng với bất kỳ thành phần nào được liệt kê trong XrSpatialComponentDataQueryConditionEXT :: componentTypes , thì thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE .

Ứng dụng có thể chọn đính kèm các cấu trúc danh sách chỉ tương ứng với một nhóm nhỏ thành phần được liệt kê trong XrSpatialComponentDataQueryConditionEXT :: componentTypes . Ứng dụng có thể chọn bỏ qua hoàn toàn cấu trúc danh sách nếu chỉ muốn biết mã nhận dạng và trạng thái theo dõi của các thực thể không gian đáp ứng queryCondition . Thời gian chạy không được coi việc thiếu cấu trúc danh sách trong chuỗi XrSpatialComponentDataQueryResultEXT :: next là lỗi.

Nếu XrEventDataReferenceSpaceChangePending được đưa vào hàng đợi và XrEventDataReferenceSpaceChangePending :: changeTime đã trôi qua trong khi ứng dụng đang truy vấn dữ liệu thành phần từ XrSpatialSnapshotEXT , thì ứng dụng có thể sử dụng dữ liệu sự kiện để điều chỉnh tư thế cho phù hợp.

Thời gian chạy phải điền XrSpatialComponentDataQueryResultEXT :: entityIds chỉ với các thực thể có tất cả thành phần được chỉ định trong XrSpatialComponentDataQueryConditionEXT :: componentTypes . Nếu XrSpatialComponentDataQueryConditionEXT :: componentTypeCount là 0, thì thời gian chạy phải điền queryResult bằng tất cả các thực thể (và trạng thái theo dõi của chúng) có trong ảnh chụp nhanh. Nếu các điều kiện truy vấn bổ sung được thêm vào XrSpatialComponentDataQueryConditionEXT :: next , thì thời gian chạy phải coi các điều kiện đó là "AND" với khả năng cung cấp các loại thành phần, tức là thời gian chạy phải điền XrSpatialComponentDataQueryResultEXT ::entityIds chỉ với các thực thể đáp ứng tất cả các điều kiện được cung cấp. Thời gian chạy phải điền dữ liệu thành phần vào cấu trúc danh sách theo cùng thứ tự với các thực thể trong XrSpatialComponentDataQueryResultEXT :: entityIds, tức là dữ liệu thành phần tại một chỉ mục nhất định trong mảng cấu trúc danh sách phải tương ứng với thực thể tại cùng một chỉ mục.

Nếu trạng thái theo dõi của một thực thể không phải là XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT , thì thời gian chạy không được thay đổi dữ liệu tại chỉ mục tương ứng với thực thể đó trong mảng có trong cấu trúc danh sách đính kèm với XrSpatialComponentDataQueryResultEXT .

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_VALIDATION_FAILURE

Ví dụ: ứng dụng tạo một XrSpatialSnapshotEXT chứa 5 thực thể, trong đó:

  • Thực thể 1 và 2 có các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT và XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT
  • Thực thể 3 và 4 có các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
  • Thực thể 5 có các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT .

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

3

3

4

4

5

5

Bounded2D

Bounded2D

Có

Có

Có

Có

Không

Không

Không

Không

Có

Có

Cha mẹ

Cha mẹ

Có

Có

Có

Có

Không

Không

Không

Không

Không

Không

Mesh3D

Mesh3D

Không

Không

Không

Không

Có

Có

Có

Có

Có

Có

Bounded3D

Bounded3D

Không

Không

Không

Không

Có

Có

Có

Có

Không

Không Văn bản không phải là SVG – không thể hiển thị

Hình 20. Ví dụ về ảnh chụp nhanh

xrQuerySpatialComponentDataEXT trên ảnh chụp nhanh ở trên có XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT được liệt kê trong điều kiện truy vấn sẽ dẫn đến việc thực thể số 1, số 2 và số 5 được trả về ứng dụng và ứng dụng có thể đính kèm một mảng XrSpatialBounded2DDataEXT dưới dạng một phần của cấu trúc XrSpatialComponentBounded2DListEXT vào chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT để lấy dữ liệu bounded2D.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

5

5

Bounded2D

Bounded2D

Dữ liệu cho entityId #1

Dữ liệu cho thực...

Dữ liệu cho entityId #2

Dữ liệu cho thực...

Dữ liệu cho entityId #5

Dữ liệu cho thực...

entityIds

entityIds

tiếp theo

tiếp theo

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Dat...

ranh giới

ranh giới

XrSpatialComponent
Bounded2DListEXT

XrSpatialComponent
Bou... Văn bản không phải là SVG – không thể hiển thị

Hình 21. Ví dụ về kết quả truy vấn

xrQuerySpatialComponentDataEXT trên ảnh chụp nhanh ở trên với các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT và XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT được liệt kê trong điều kiện truy vấn sẽ dẫn đến việc thực thể số 3 và số 4 được trả về ứng dụng và ứng dụng có thể đính kèm các mảng XrBoxf và XrSpatialMeshDataEXT dưới dạng một phần của cấu trúc XrSpatialComponentBounded3DListEXT và XrSpatialComponentMesh3DListEXT tương ứng với chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT để lấy dữ liệu thành phần.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

3

3

4

4

Bounded3D

Bounded3D

Dữ liệu cho entityId #3

Dữ liệu cho thực...

Dữ liệu cho entityId #4

Dữ liệu cho thực...

Mesh3D

Mesh3D

Dữ liệu cho entityId #3

Dữ liệu cho thực...

Dữ liệu cho entityId #4

Dữ liệu cho thực...

entityIds

entityIds

tiếp theo

tiếp theo

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Da...

ranh giới

ranh giới

tiếp theo

tiếp theo

XrSpatialComponent
Bounded3DListEXT

XrSpatialComponent
Bo...

XrSpatialComponent
Mesh3DListEXT

XrSpatialComponent
Me...

lưới

meshes Văn bản không phải là SVG – không thể hiển thị

Hình 22. Ví dụ về kết quả truy vấn

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

typedef struct XrSpatialComponentDataQueryConditionEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialComponentDataQueryConditionEXT;

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.
  • componentTypeCount là một uint32_t mô tả số lượng phần tử trong mảng componentTypes.
  • componentTypes là một mảng XrSpatialComponentTypeEXT để lấy dữ liệu từ ảnh chụp nhanh.

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

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

typedef struct XrSpatialComponentDataQueryResultEXT {
    XrStructureType                     type;
    void*                               next;
    uint32_t                            entityIdCapacityInput;
    uint32_t                            entityIdCountOutput;
    XrSpatialEntityIdEXT*               entityIds;
    uint32_t                            entityStateCapacityInput;
    uint32_t                            entityStateCountOutput;
    XrSpatialEntityTrackingStateEXT*    entityStates;
} XrSpatialComponentDataQueryResultEXT;

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.
  • entityIdCapacityInput là dung lượng của mảng entityIds hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • entityIdCountOutput là số lượng XrSpatialEntityIdEXT trong entityIds hoặc dung lượng cần thiết trong trường hợp entityIdCapacityInput không đủ.
  • entityIds là một mảng XrSpatialEntityIdEXT . Giá trị này có thể là NULL nếu entityIdCapacityInput là 0.
  • entityStateCapacityInput là dung lượng của mảng entityStates hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • entityStateCountOutput là số lượng XrSpatialEntityTrackingStateEXT trong entityStates hoặc dung lượng bắt buộc trong trường hợp entityStateCapacityInput không đủ. Phải luôn giống với entityIdCountOutput .
  • entityStates là một mảng XrSpatialEntityTrackingStateEXT . Giá trị này có thể là NULL nếu entityStateCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước entityIds cần thiết.

Ứng dụng có thể sử dụng entityIds với xrCreateSpatialEntityFromIdEXT để tạo tay điều khiển XrSpatialEntityEXT cho các thực thể mà ứng dụng muốn nhận thông tin cập nhật thường xuyên. Sau đó, ứng dụng có thể sử dụng các tay điều khiển XrSpatialEntityEXT này với xrCreateSpatialUpdateSnapshotEXT để tạo ảnh chụp nhanh cập nhật có dữ liệu mới nhất mà thời gian chạy biết được về các thành phần cho thực thể được cung cấp.

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

typedef enum XrSpatialEntityTrackingStateEXT {
    XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT = 1,
    XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT = 2,
    XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT = 3,
    XR_SPATIAL_ENTITY_TRACKING_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialEntityTrackingStateEXT;

XrSpatialEntityTrackingStateEXT liệt kê các trạng thái theo dõi thực thể không gian có thể xảy ra:

Các enum có ý nghĩa như sau:

Nội dung mô tả enum

XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT

Thời gian chạy đã ngừng theo dõi thực thể này và sẽ không bao giờ tiếp tục theo dõi thực thể này.

XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT

Môi trường thời gian chạy đã tạm dừng theo dõi thực thể này nhưng có thể tiếp tục theo dõi trong tương lai.

XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT

Môi trường thời gian chạy hiện đang theo dõi thực thể này và dữ liệu thành phần của thực thể này là hợp lệ.

THEO DÕI

BỊ TẠM DỪNG

ĐÃ DỪNG

Hình 23. XrSpatialEntityTrackingStateEXT

  • Thời gian chạy có thể thay đổi trạng thái của thực thể không gian từ XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT thành XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT nếu tạm ngưng theo dõi thực thể không gian đó nhưng có khả năng tiếp tục theo dõi trong tương lai. Một số ví dụ về trường hợp thời gian chạy có thể thực hiện việc này bao gồm (nhưng không giới hạn ở) nếu ứng dụng mất tiêu điểm nhập; hoặc nếu thực thể không gian đã cho ở quá xa người dùng để có thể theo dõi chính xác; hoặc nếu có quá nhiều thực thể đang được theo dõi và thời gian chạy muốn giảm chi phí theo dõi. XrSpatialEntityTrackingStateEXT giúp ứng dụng tách biệt khỏi các chính sách theo dõi khác nhau của mỗi thời gian chạy.
  • Thời gian chạy có thể thay đổi trạng thái của một thực thể từ XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT thành XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT hoặc XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT .
  • Thời gian chạy phải thay đổi trạng thái của thực thể không gian từ XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT hoặc XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT thành XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT nếu thực thể không gian bị mất và quá trình theo dõi thực thể đó sẽ không bao giờ được khôi phục hoặc tiếp tục. Ví dụ: nếu thiết bị mất tính năng theo dõi, khởi động lại phiên theo dõi nhưng không thể định vị lại trong môi trường của thiết bị, thì thiết bị sẽ coi các thực thể được phát hiện trong phiên theo dõi này là thực thể mới.
  • Sau khi trạng thái theo dõi của một thực thể được đặt thành XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT , thời gian chạy không được thay đổi trạng thái đó thành bất kỳ trạng thái nào khác.
  • Khi truy vấn dữ liệu thành phần của một thực thể không gian bằng xrQuerySpatialComponentDataEXT , thời gian chạy phải đặt dữ liệu hợp lệ trong nội dung của vùng đệm do ứng dụng cung cấp trong chuỗi tiếp theo của XrSpatialComponentDataQueryResultEXT nếu trạng thái thực thể là XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT . Nếu trạng thái thực thể là XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT hoặc XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT , thì thời gian chạy không được thay đổi nội dung của vùng đệm.

Thành ngữ hai lệnh gọi cho dữ liệu thành phần

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

typedef struct XrSpatialBufferEXT {
    XrSpatialBufferIdEXT      bufferId;
    XrSpatialBufferTypeEXT    bufferType;
} XrSpatialBufferEXT;

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

  • bufferId XrSpatialBufferIdEXT của dữ liệu vùng đệm.
  • bufferType là XrSpatialBufferTypeEXT để cho biết loại dữ liệu trong bufferId . Ứng dụng có thể sử dụng bufferType để xác định hàm cần dùng để truy xuất dữ liệu thực tế của vùng đệm.

Một số thành phần không gian có dữ liệu kích thước biến đổi, do đó cần sử dụng thành ngữ hai lệnh gọi để truy xuất dữ liệu. Trong những trường hợp như vậy, cấu trúc dữ liệu thành phần không gian sẽ cung cấp XrSpatialBufferEXT cho mỗi vùng đệm có kích thước biến cần thiết trong dữ liệu của thành phần đó.

Đối với cùng một bufferId , thời gian chạy phải cung cấp cùng một dữ liệu từ truy vấn dữ liệu thành phần này sang truy vấn dữ liệu thành phần khác, ngay cả giữa các ảnh chụp nhanh. bufferId khác nhau giữa các lệnh gọi truy vấn dữ liệu thành phần cho ứng dụng biết rằng dữ liệu của thành phần đó có thể đã thay đổi.

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

XR_DEFINE_ATOM(XrSpatialBufferIdEXT)

XrSpatialBufferIdEXT được dùng để biểu thị mọi loại dữ liệu có kích thước biến đổi cho một thành phần không gian.

Thời gian chạy phải giữ XrSpatialBufferIdEXT và dữ liệu của nó trong bộ nhớ trong ít nhất là vòng đời của XrSpatialSnapshotEXT chứa nó. Thời gian chạy có thể giữ XrSpatialBufferIdEXT và dữ liệu của nó trong bộ nhớ lâu hơn vòng đời của XrSpatialSnapshotEXT để trả về cùng một mã nhận dạng trong ảnh chụp nhanh do ứng dụng tạo sau này. Đối với cùng một XrSpatialBufferIdEXT , thời gian chạy phải luôn trả về cùng một dữ liệu thông qua hàm xrGetSpatialBuffer* thích hợp.

typedef enum XrSpatialBufferTypeEXT {
    XR_SPATIAL_BUFFER_TYPE_UNKNOWN_EXT = 0,
    XR_SPATIAL_BUFFER_TYPE_STRING_EXT = 1,
    XR_SPATIAL_BUFFER_TYPE_UINT8_EXT = 2,
    XR_SPATIAL_BUFFER_TYPE_UINT16_EXT = 3,
    XR_SPATIAL_BUFFER_TYPE_UINT32_EXT = 4,
    XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT = 5,
    XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT = 6,
    XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT = 7,
    XR_SPATIAL_BUFFER_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialBufferTypeEXT;

Bảng liệt kê XrSpatialBufferTypeEXT xác định các loại dữ liệu khác nhau của vùng đệm được biểu thị XrSpatialBufferIdEXT .

Nội dung mô tả về giá trị liệt kê

  • XR_SPATIAL_BUFFER_TYPE_STRING_EXT . Bạn có thể truyền XrSpatialBufferIdEXT đến xrGetSpatialBufferStringEXT để truy xuất vùng đệm chuỗi.
  • XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Bạn có thể truyền XrSpatialBufferIdEXT đến xrGetSpatialBufferUint8EXT để truy xuất vùng đệm uint8_t.
  • XR_SPATIAL_BUFFER_TYPE_UINT16_EXT . Bạn có thể truyền XrSpatialBufferIdEXT đến xrGetSpatialBufferUint16EXT để truy xuất vùng đệm uint16_t.
  • XR_SPATIAL_BUFFER_TYPE_UINT32_EXT . Bạn có thể truyền XrSpatialBufferIdEXT đến xrGetSpatialBufferUint32EXT để truy xuất vùng đệm uint32_t.
  • XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferFloatEXT để truy xuất vùng đệm float.
  • XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferVector2fEXT để truy xuất vùng đệm XrVector2f.
  • XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferVector3fEXT để truy xuất vùng đệm XrVector3f.

Hàm xrGetSpatialBufferStringEXT được định nghĩa như sau:

XrResult xrGetSpatialBufferStringEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    char*                                       buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số ký tự hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng char . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_STRING_EXT bằng cách sử dụng xrGetSpatialBufferStringEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_STRING_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

buffer do thời gian chạy điền phải là một chuỗi UTF-8 kết thúc bằng ký tự rỗng.

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

  • Tiện ích XR_EXT_spatial_entity phải được bật trước khi gọi xrGetSpatialBufferStringEXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là một con trỏ đến một mảng gồm bufferCapacityInput giá trị char

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferUint8EXT được định nghĩa như sau:

XrResult xrGetSpatialBufferUint8EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint8_t*                                    buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng uint8_t . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_UINT8_EXT bằng cách sử dụng xrGetSpatialBufferUint8EXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_UINT8_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Phải bật tiện ích XR_EXT_spatial_entity trước khi gọi xrGetSpatialBufferUint8EXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là con trỏ đến một mảng gồm các giá trị bufferCapacityInput uint8_t

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferUint16EXT được định nghĩa như sau:

XrResult xrGetSpatialBufferUint16EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint16_t*                                   buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng uint16_t . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_UINT16_EXT bằng cách sử dụng xrGetSpatialBufferUint16EXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_UINT16_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Bạn phải bật tiện ích XR_EXT_spatial_entity trước khi gọi xrGetSpatialBufferUint16EXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là con trỏ đến một mảng gồm các giá trị bufferCapacityInput uint16_t

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferUint32EXT được định nghĩa như sau:

XrResult xrGetSpatialBufferUint32EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint32_t*                                   buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng uint32_t . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_UINT32_EXT bằng cách sử dụng xrGetSpatialBufferUint32EXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_UINT32_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Bạn phải bật tiện ích XR_EXT_spatial_entity trước khi gọi xrGetSpatialBufferUint32EXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là con trỏ đến một mảng gồm các giá trị bufferCapacityInput uint32_t

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferFloatEXT được định nghĩa như sau:

XrResult xrGetSpatialBufferFloatEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    float*                                      buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng float . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT bằng cách sử dụng xrGetSpatialBufferFloatEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Phải bật tiện ích XR_EXT_spatial_entity trước khi gọi xrGetSpatialBufferFloatEXT
  • snapshot phải là một tay điều khiển XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là con trỏ đến một mảng gồm các giá trị bufferCapacityInput float

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferVector2fEXT được định nghĩa như sau:

XrResult xrGetSpatialBufferVector2fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector2f*                                 buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng cần thiết trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng XrVector2f . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT bằng cách sử dụng xrGetSpatialBufferVector2fEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Tiện ích XR_EXT_spatial_entity phải được bật trước khi gọi xrGetSpatialBufferVector2fEXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là con trỏ đến một mảng cấu trúc bufferCapacityInput XrVector2f

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

Hàm xrGetSpatialBufferVector3fEXT được định nghĩa như sau:

XrResult xrGetSpatialBufferVector3fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector3f*                                 buffer);

Nội dung mô tả về tham số

  • snapshot là một tay điều khiển cho XrSpatialSnapshotEXT .
  • info lưu giữ thông tin về vùng đệm cần truy vấn.
  • bufferCapacityInput là dung lượng của mảng hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • bufferCountOutput là số phần tử trong mảng buffer hoặc dung lượng bắt buộc trong trường hợp bufferCapacityInput không đủ.
  • buffer là một mảng XrVector3f . Giá trị này có thể là NULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số dung lượng bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước buffer cần thiết.

Ứng dụng có thể lấy dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferType là XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT bằng cách sử dụng xrGetSpatialBufferVector3fEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialBufferTypeEXT cho XrSpatialBufferGetInfoEXT :: bufferId không phải là XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT nếu XrSpatialBufferGetInfoEXT :: bufferId không thuộc về snapshot .

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

  • Tiện ích XR_EXT_spatial_entity phải được bật trước khi gọi xrGetSpatialBufferVector3fEXT
  • snapshot phải là một tên người dùng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến cấu trúc XrSpatialBufferGetInfoEXT hợp lệ
  • bufferCountOutput phải là con trỏ đến giá trị uint32_t
  • Nếu bufferCapacityInput không phải là 0 , thì buffer phải là một con trỏ đến một mảng cấu trúc bufferCapacityInput XrVector3f

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialBufferGetInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialBufferIdEXT    bufferId;
} XrSpatialBufferGetInfoEXT;

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.
  • bufferId một XrSpatialBufferIdEXT cho vùng đệm có dữ liệu cần truy xuất.

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

#define XR_NULL_SPATIAL_BUFFER_ID_EXT 0

XR_NULL_SPATIAL_BUFFER_ID_EXT là một giá trị dành riêng đại diện cho một XrSpatialBufferIdEXT không hợp lệ. Giá trị này có thể được truyền đến và trả về từ các hàm API chỉ khi được cho phép cụ thể.

Tạo ảnh chụp nhanh về bản cập nhật

Hàm xrCreateSpatialUpdateSnapshotEXT được định nghĩa như sau:

XrResult xrCreateSpatialUpdateSnapshotEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialUpdateSnapshotCreateInfoEXT* createInfo,
    XrSpatialSnapshotEXT*                       snapshot);

Nội dung mô tả về tham số

Ứng dụng có thể sử dụng xrCreateSpatialUpdateSnapshotEXT để tạo ảnh chụp nhanh và lấy dữ liệu thành phần mới nhất cho các thực thể cụ thể mà thời gian chạy biết. Ứng dụng có thể cung cấp các tay điều khiển XrSpatialEntityEXT và các loại thành phần mà ứng dụng quan tâm khi tạo ảnh chụp nhanh.

Ứng dụng có thể sử dụng XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes để lọc danh sách các thành phần có dữ liệu phải được đưa vào ảnh chụp nhanh. Nếu ứng dụng cung cấp danh sách hợp lệ các loại thành phần không gian trong XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes , thì thời gian chạy chỉ được đưa các thực thể không gian vào ảnh chụp nhanh có ít nhất một trong các thành phần được cung cấp trong XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes . Ngoài ra, thời gian chạy chỉ được bao gồm dữ liệu cho các thành phần đó trong ảnh chụp nhanh.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT nếu bất kỳ XrSpatialComponentTypeEXT nào trong XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes không được bật cho các chức năng không gian được truyền đến XrSpatialContextCreateInfoEXT :: capabilityConfigs khi tạo spatialContext .

Nếu ứng dụng không cung cấp danh sách các loại thành phần không gian trong XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes , thì thời gian chạy phải bao gồm tất cả các thực thể không gian được liệt kê trong XrSpatialUpdateSnapshotCreateInfoEXT :: entities trong ảnh chụp nhanh và phải bao gồm dữ liệu cho tất cả các thành phần được bật của các chức năng được định cấu hình cho spatialContext .

Thời gian chạy không được bao gồm các thực thể không gian không có trong XrSpatialUpdateSnapshotCreateInfoEXT :: entities trong snapshot .

Ứng dụng có thể tạo số lượng ảnh chụp nhanh tuỳ ý nhưng phải lưu ý đến bộ nhớ được phân bổ cho mỗi ảnh chụp nhanh mới và phải huỷ ảnh chụp nhanh sau khi không cần đến nữa.

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

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialUpdateSnapshotCreateInfoEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            entityCount;
    const XrSpatialEntityEXT*           entities;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
    XrSpace                             baseSpace;
    XrTime                              time;
} XrSpatialUpdateSnapshotCreateInfoEXT;

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.
  • entityCount là một uint32_t mô tả số lượng phần tử trong mảng entities.
  • entities là một mảng XrSpatialEntityEXT mà thời gian chạy phải bao gồm dữ liệu thành phần trong ảnh chụp nhanh.
  • componentTypeCount là một uint32_t mô tả số lượng phần tử trong mảng componentTypes.
  • componentTypes là một mảng XrSpatialComponentTypeEXT mà thời gian chạy phải đưa dữ liệu vào ảnh chụp nhanh.
  • baseSpace là XrSpace tương ứng với tất cả vị trí của XrSpatialSnapshotEXT cập nhật.
  • time là XrTime nơi tất cả vị trí của bản cập nhật XrSpatialSnapshotEXT sẽ được đặt.

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

  • Bạn phải bật tiện ích XR_EXT_spatial_entity trước khi sử dụng XrSpatialUpdateSnapshotCreateInfoEXT
  • type phải là XR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT
  • next phải là NULL hoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
  • entities phải là một con trỏ trỏ đến một mảng gồm entityCount tay điều khiển XrSpatialEntityEXT hợp lệ
  • Nếu componentTypeCount không phải là 0 , thì componentTypes phải là con trỏ đến một mảng gồm các giá trị componentTypeCount hợp lệ của XrSpatialComponentTypeEXT
  • baseSpace phải là một tên người dùng XrSpace hợp lệ
  • Tham số entityCount phải lớn hơn 0
  • Cả baseSpace và các phần tử của entities đều phải được tạo, phân bổ hoặc truy xuất từ cùng một XrSession

Huỷ ảnh chụp nhanh

Hàm xrDestroySpatialSnapshotEXT được định nghĩa như sau:

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

Nội dung mô tả về tham số

Ứng dụng có thể gọi xrDestroySpatialSnapshotEXT để huỷ tay điều khiển XrSpatialSnapshotEXT và các tài nguyên liên quan.

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

Độ an toàn cho chuỗi

  • Quyền truy cập vào snapshot và mọi tay điều khiển con phải được đồng bộ hoá bên ngoài

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Thành phần phổ biến

2D có giới hạn

Dữ liệu thành phần

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

typedef struct XrSpatialBounded2DDataEXT {
    XrPosef        center;
    XrExtent2Df    extents;
} XrSpatialBounded2DDataEXT;

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

  • center là một XrPosef xác định tâm hình học của thành phần 2D có giới hạn.
  • extents là phạm vi của thành phần 2D có giới hạn dọc theo trục x (extents.width), trục y (extents.height), căn giữa trên center .

extents của XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT đề cập đến kích thước của thực thể trong mặt phẳng x-y của hệ toạ độ của mặt phẳng. Một mặt phẳng có vị trí {0, 0, 0}, độ xoay {0, 0, 0, 1} (không xoay) và phạm vi {1, 1} là mặt phẳng 1 mét x 1 mét có tâm tại {0, 0, 0} với vectơ pháp tuyến mặt trước hướng về phía +Z trong không gian của thành phần.

X X Y Y Z Z Chiều cao Chiều cao Y Y Z Z X X Mặt phẳng dọc Mặt phẳng dọc Mặt phẳng ngang Mặt phẳng ngang Chiều rộng Chiều rộng Chiều rộng Chiều rộng Chiều cao Chiều cao

Hình 24. Hệ toạ độ thành phần Bounded2D

Lưu ý

OpenXR sử dụng mặt phẳng X-Y với +Z làm pháp tuyến mặt phẳng, nhưng các API khác có thể sử dụng mặt phẳng X-Z với +Y làm pháp tuyến mặt phẳng. Mặt phẳng X-Y có thể được chuyển đổi thành mặt phẳng X-Z bằng cách xoay -π/2 radian quanh trục +X.

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

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

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

typedef struct XrSpatialComponentBounded2DListEXT {
    XrStructureType               type;
    void*                         next;
    uint32_t                      boundCount;
    XrSpatialBounded2DDataEXT*    bounds;
} XrSpatialComponentBounded2DListEXT;

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.
  • boundCount là một uint32_t mô tả số lượng phần tử trong mảng bounds.
  • bounds là một mảng XrSpatialBounded2DDataEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentBounded2DListEXT 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_BOUNDED_2D_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

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

Nếu xrQuerySpatialComponentDataEXT :: snapshot được tạo từ xrCreateSpatialDiscoverySnapshotCompleteEXT , thì thời gian chạy phải cung cấp XrSpatialBounded2DDataEXT :: center trong XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace và XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time .

Nếu xrQuerySpatialComponentDataEXT :: snapshot được tạo từ xrCreateSpatialUpdateSnapshotEXT , thì thời gian chạy phải cung cấp XrSpatialBounded2DDataEXT :: center trong XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace và XrSpatialUpdateSnapshotCreateInfoEXT :: time .

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

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_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 giá trị 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.

3D có giới hạn

Dữ liệu thành phần

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT sử dụng XrBoxf cho dữ liệu của mình.

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

Cấu trúc XrSpatialComponentBounded3DListEXT được xác định như sau:

typedef struct XrSpatialComponentBounded3DListEXT {
    XrStructureType    type;
    void*              next;
    uint32_t           boundCount;
    XrBoxf*            bounds;
} XrSpatialComponentBounded3DListEXT;

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.
  • boundCount là một uint32_t mô tả số lượng phần tử trong mảng bounds.
  • bounds là một mảng XrBoxf .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentBounded3DListEXT 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_BOUNDED_3D_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

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

Nếu xrQuerySpatialComponentDataEXT :: snapshot được tạo từ xrCreateSpatialDiscoverySnapshotCompleteEXT , thì thời gian chạy phải cung cấp XrBoxf :: center trong XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace tại XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time .

Nếu xrQuerySpatialComponentDataEXT :: snapshot được tạo từ xrCreateSpatialUpdateSnapshotEXT , thì thời gian chạy phải cung cấp XrBoxf :: center trong XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace tại XrSpatialUpdateSnapshotCreateInfoEXT :: time .

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

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_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.

Cha mẹ

Dữ liệu thành phần

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT sử dụng XrSpatialEntityIdEXT cho dữ liệu của mình.

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

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

typedef struct XrSpatialComponentParentListEXT {
    XrStructureType          type;
    void*                    next;
    uint32_t                 parentCount;
    XrSpatialEntityIdEXT*    parents;
} XrSpatialComponentParentListEXT;

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.
  • parentCount là một uint32_t mô tả số lượng phần tử trong mảng parents.
  • parents là một mảng XrSpatialEntityIdEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentParentListEXT 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_PARENT_EXT không có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes .

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

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

  • Phải bật tiện ích XR_EXT_spatial_entity trước khi sử dụng XrSpatialComponentParentListEXT
  • type phải là XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT
  • next phải là NULL hoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
  • parents phải là con trỏ trỏ đến một mảng gồm parentCount giá trị XrSpatialEntityIdEXT
  • Tham số parentCount phải lớn hơn 0
Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_PARENT_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.

Lưới 3D

Dữ liệu thành phần

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

typedef struct XrSpatialMeshDataEXT {
    XrPosef               origin;
    XrSpatialBufferEXT    vertexBuffer;
    XrSpatialBufferEXT    indexBuffer;
} XrSpatialMeshDataEXT;

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

  • origin là một XrPosef xác định gốc của lưới. Tất cả đỉnh của lưới phải tương ứng với gốc này.
  • vertexBuffer là một XrSpatialBufferEXT cung cấp mã nhận dạng cho một vùng đệm đại diện cho vùng đệm đỉnh của thực thể mà thành phần này đang hoạt động. Vị trí của các đỉnh phải tương ứng với origin .
  • indexBuffer là một XrSpatialBufferEXT cung cấp mã nhận dạng cho một vùng đệm đại diện cho một mảng chỉ mục tam giác, chỉ định chỉ mục của các đỉnh lưới trong vertexBuffer . Các chỉ mục tam giác phải được trả về theo thứ tự ngược chiều kim đồng hồ và ba chỉ mục biểu thị một tam giác.

Loại thành phần sử dụng XrSpatialMeshDataEXT phải chỉ định XrSpatialBufferTypeEXT của vertexBuffer và indexBuffer .

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

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

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

typedef struct XrSpatialComponentMesh3DListEXT {
    XrStructureType          type;
    void*                    next;
    uint32_t                 meshCount;
    XrSpatialMeshDataEXT*    meshes;
} XrSpatialComponentMesh3DListEXT;

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.
  • meshCount là một uint32_t mô tả số lượng phần tử trong mảng meshes.
  • meshes là một mảng XrSpatialMeshDataEXT .

Ứng dụng có thể truy vấn thành phần lưới 3D của các thực thể không gian trong XrSpatialSnapshotEXT bằng cách thêm XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT vào XrSpatialComponentDataQueryConditionEXT :: componentTypes và thêm XrSpatialComponentMesh3DListEXT vào chuỗi con trỏ tiếp theo của XrSpatialComponentDataQueryResultEXT .

Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrQuerySpatialComponentDataEXT nếu XrSpatialComponentMesh3DListEXT 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_EXT không được đưa vào XrSpatialComponentDataQueryConditionEXT :: componentTypes .

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

Đối với XrSpatialMeshDataEXT do thời gian chạy điền vào mảng meshes, XrSpatialBufferEXT :: bufferType cho XrSpatialMeshDataEXT :: vertexBuffer phải là XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT và XrSpatialBufferEXT :: bufferType cho XrSpatialMeshDataEXT :: indexBuffer phải là XR_SPATIAL_BUFFER_TYPE_UINT32_EXT .

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

Cấu hình

Nếu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_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 của cấu trúc bắt nguồn từ XrSpatialCapabilityConfigurationBaseHeaderEXT của chức năng hỗ trợ thành phần này.

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.

Bộ lọc trạng thái theo dõi

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

typedef struct XrSpatialFilterTrackingStateEXT {
    XrStructureType                    type;
    const void*                        next;
    XrSpatialEntityTrackingStateEXT    trackingState;
} XrSpatialFilterTrackingStateEXT;

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.
  • trackingState là XrSpatialEntityTrackingStateEXT mà ứng dụng muốn áp dụng bộ lọc.

Ứng dụng có thể sử dụng XrSpatialFilterTrackingStateEXT trong chuỗi tiếp theo của XrSpatialDiscoverySnapshotCreateInfoEXT để giới hạn phạm vi khám phá chỉ cho những thực thể có trạng thái theo dõi là trackingState .

Ứng dụng có thể sử dụng XrSpatialFilterTrackingStateEXT trong chuỗi tiếp theo của XrSpatialComponentDataQueryConditionEXT để chỉ định phạm vi truy vấn dữ liệu thành phần từ một ảnh chụp nhanh chỉ cho các thực thể có trạng thái theo dõi là trackingState .

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

Mã ví dụ

Mức sử dụng ứng dụng

Các ứng dụng thường sử dụng tiện ích thực thể không gian theo mẫu sau:

Khám phá các thực thể không gian và truy vấn dữ liệu thành phần

Đoạn mã ví dụ sau đây minh hoạ cách khám phá các thực thể không gian cho chức năng "Foo" truy vấn dữ liệu thành phần của thực thể đó.

/****************************/
/* Capability definition    */
/****************************/
// Foo capability has the following components -
// - XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
#define XR_SPATIAL_CAPABILITY_FOO ((XrSpatialCapabilityEXT)1000740000U)

#define XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT ((XrStructureType)1000740000U)
// Derives from XrSpatialCapabilityConfigurationBaseHeaderEXT
typedef struct XrSpatialCapabilityConfigurationFooEXT {
  XrStructureType                     type;
  const void* XR_MAY_ALIAS            next;
  XrSpatialCapabilityEXT              capability;
  uint32_t                            enabledComponentCount;
  const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationFooEXT;

/******************************/
/* End capability definition  */
/******************************/

auto waitUntilReady = [](XrFutureEXT future) {
  XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
  XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
  pollInfo.future = future;
  do {
    // sleep(1);
    CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
  } while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};

// Create a spatial spatial context
XrSpatialContextEXT spatialContext{};
{
  const std::array<XrSpatialComponentTypeEXT, 1> enabledComponents = {
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
  };

  // Configure Foo capability for the spatial context
  XrSpatialCapabilityConfigurationFooEXT fooConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT};
  fooConfig.capability = XR_SPATIAL_CAPABILITY_FOO;
  fooConfig.enabledComponentCount = enabledComponents.size();
  fooConfig.enabledComponents = enabledComponents.data();

  std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
  capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&fooConfig));

  XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
  spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
  spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
  XrFutureEXT createContextFuture;
  CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));

  waitUntilReady(createContextFuture);

  XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
  if (completion.futureResult != XR_SUCCESS) {
    return;
  }

  spatialContext = completion.spatialContext;
}

auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
  // We want to look for entities that have the following components.
  std::array<XrSpatialComponentTypeEXT, 1> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT};

  XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
  snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
  snapshotCreateInfo.componentTypes = snapshotComponents.data();
  XrFutureEXT future = XR_NULL_FUTURE_EXT;
  CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &future));

  waitUntilReady(future);

  XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
  completionInfo.baseSpace = localSpace;
  completionInfo.time = time;
  completionInfo.future = future;

  XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
  if (completion.futureResult == XR_SUCCESS) {
    // Query for the bounded2d component data
    XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT;
    XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
    queryCond.componentTypes = &componentToQuery;

    XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
    queryResult.entityIdCapacityInput = 0;
    queryResult.entityIds = nullptr;
    queryResult.entityStateCapacityInput = 0;
    queryResult.entityStates = nullptr;
    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
    std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
    queryResult.entityIdCapacityInput = entityIds.size();
    queryResult.entityIds = entityIds.data();
    queryResult.entityStateCapacityInput = entityStates.size();
    queryResult.entityStates = entityStates.data();

    std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
    XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
    boundsList.boundCount = bounded2d.size();
    boundsList.bounds = bounded2d.data();
    queryResult.next = &boundsList;

    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
      if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
        // 2D extents for entity entityIds[i] is bounded2d[i].extents.
      }
    }

    CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
  }
};

while (1) {
  // ...
  // For every frame in frame loop
  // ...

  XrFrameState frameState;  // previously returned from xrWaitFrame
  const XrTime time = frameState.predictedDisplayTime;

  // Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
  XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
  XrResult result = xrPollEvent(instance, &event);
  if (result == XR_SUCCESS) {
      switch (event.type) {
          case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
              const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata =
                  *reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
              // Discover spatial entities for the context that we received the "discovery
              // recommended" event for.
              discoverSpatialEntities(eventdata.spatialContext, time);
              break;
          }
      }
  }

  // ...
  // Finish frame loop
  // ...
}

CHK_XR(xrDestroySpatialContextEXT(spatialContext));

Dữ liệu vùng đệm truy vấn

Mã ví dụ sau đây minh hoạ cách lấy dữ liệu của một thành phần cung cấp XrSpatialBufferEXT .

/****************************/
/* Component definition     */
/****************************/
// Foo component that provides an XrVector3f buffer
#define XR_SPATIAL_COMPONENT_TYPE_FOO_EXT ((XrSpatialComponentTypeEXT)1000740000U)

#define XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT ((XrStructureType)1000740000U)

// XrSpatialComponentFooListEXT extends XrSpatialComponentDataQueryResultEXT
typedef struct XrSpatialComponentFooListEXT {
    XrStructureType                   type;
    void* XR_MAY_ALIAS                next;
    uint32_t                          fooCount;
    XrSpatialBufferEXT*               foo;
} XrSpatialComponentFooListEXT;

/******************************/
/* End Component definition  */
/******************************/

// Query for the foo component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_FOO_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = 1;
queryCond.componentTypes = &componentToQuery;

XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));

std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();

std::vector<XrSpatialBufferEXT> fooBuffers(queryResult.entityIdCountOutput);
XrSpatialComponentFooListEXT fooList{XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT};
fooList.fooCount = fooBuffers.size();
fooList.foo = fooBuffers.data();
queryResult.next = &fooList;

CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));

for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
  // foo component data for entity entityIds[i]
  if (fooBuffers[i].bufferType == XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT) {
    XrSpatialBufferGetInfoEXT getInfo{XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT};
    getInfo.bufferId = fooBuffers[i].bufferId;
    uint32_t bufferCountOutput;
    CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, 0, &bufferCountOutput, nullptr));
    std::vector<XrVector3f> vertexBuffer(bufferCountOutput);
    CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, bufferCountOutput, &bufferCountOutput, vertexBuffer.data()));

    // XrVertex3f buffer for entity entityIds[i] is now available in vertexBuffer vector.
  }
}

Nguyên tắc về tiện ích bổ sung

  • Nếu một tiện ích đang xác định một XrSpatialComponentTypeEXT mới cung cấp thêm dữ liệu về một thực thể không gian,

  • Tiện ích có thể xác định các cấu trúc mở rộng XrSpatialDiscoverySnapshotCreateInfoEXT để cung cấp thêm bộ lọc cho tính năng khám phá. Các bộ lọc để tạo ảnh chụp nhanh không được ảnh hưởng đến cấu hình của bối cảnh không gian, mà thay vào đó, các bộ lọc này được dùng để cung cấp gợi ý cho thời gian chạy về những thực thể và dữ liệu cần đưa vào ảnh chụp nhanh theo dõi theo cấu hình hiện tại của bối cảnh không gian (và do đó là cấu hình hiện tại của các dịch vụ cơ bản).

  • Nếu một tiện ích xác định XrSpatialCapabilityEXT mới,

  • Nếu một tiện ích xác định XrSpatialCapabilityFeatureEXT mới, thì tiện ích đó cũng phải xác định một cấu trúc cấu hình tương ứng có thể được liên kết với con trỏ tiếp theo của XrSpatialCapabilityConfigurationBaseHeaderEXT mà ứng dụng có thể sử dụng để bật tính năng này khi tạo XrSpatialContextEXT .

  • Một tiện ích xác định XrSpatialCapabilityEXT mới nên tuân theo mẫu này cho quy cách –

    • Tổng quan
    • Hỗ trợ thời gian chạy
    • Cấu hình
    • Thành phần được đảm bảo
    • Mã ví dụ
  • Một tiện ích xác định XrSpatialComponentTypeEXT mới phải tuân theo mẫu này cho quy cách –

    • Dữ liệu thành phần
    • Cấu trúc danh sách thành phần để truy vấn dữ liệu
    • Cấu hình
  • Khi viết một API cung cấp cho ứng dụng một XrSpatialBufferIdEXT , API đó phải đi kèm với một XrSpatialBufferTypeEXT để thông báo cho ứng dụng biết loại dữ liệu của vùng đệm và ứng dụng có thể sử dụng một hàm xrGetSpatialBuffer* thích hợp để truy xuất nội dung thực tế của vùng đệm.

Nguyên tắc về thiết kế và tiện ích nhãn ngữ nghĩa

Mặc dù tiện ích này không xác định bất kỳ thành phần nào để truyền tải thông tin nhãn ngữ nghĩa của một thực thể, nhưng tiện ích này đưa ra các quy tắc và nguyên tắc thiết kế cho mọi tiện ích xác định thành phần đó. Trong văn bản sau, " nên " và " phải " ràng buộc tác giả của chức năng đó, thay vì ràng buộc việc triển khai thời gian chạy hoặc ứng dụng sử dụng API.

  • Nếu một tiện ích đang xác định nhãn ngữ nghĩa cho bất kỳ XrSpatialCapabilityEXT nào, thì tiện ích đó nên xác định một XrSpatialComponentTypeEXT mới cũng như một kiểu liệt kê mới có một tập hợp nhãn ("tập hợp nhãn ngữ nghĩa") làm dữ liệu cho thành phần đó.
  • Một enum đại diện cho một tập hợp nhãn ngữ nghĩa phải có một giá trị để cho biết rằng thực thể không được phân loại vào bất kỳ nhãn nào của tập hợp này. Tên của giá trị liệt kê này phải bao gồm "UNCATEGORIZED", ví dụ: XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT . Giá trị này cho các ứng dụng biết rằng thời gian chạy nhận ra thực thể này, nhưng có các nhóm nhãn ngữ nghĩa khác mà thực thể này được phân loại.
  • Việc liệt kê XrSpatialComponentTypeEXT mới được xác định này trong xrEnumerateSpatialCapabilityComponentTypesEXT ngụ ý rằng thời gian chạy hỗ trợ tập hợp nhãn ngữ nghĩa (và do đó là các nhãn được xác định trong tập hợp) tương ứng với loại thành phần đó.
  • Ứng dụng thể hiện mong muốn khám phá các thực thể có nhãn thuộc tập hợp nhãn ngữ nghĩa này bằng cách đưa XrSpatialComponentTypeEXT tương ứng vào mảng XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents của cấu trúc cấu hình cho chức năng mà loại thành phần được liệt kê.
  • Một thực thể không gian có thể có nhiều thành phần, mỗi thành phần cung cấp cho thực thể đó một nhãn từ tập hợp nhãn ngữ nghĩa riêng. Hãy xem ví dụ sau đây với một số tập hợp nhãn ngữ nghĩa giả định – XrSpatialObjectSemanticLabel , có thể có các giá trị như ghế, ghế sofa, bàn, v.v., XrSpatialSofaBrand , có thể có các giá trị như IKEA, Wayfair, v.v. và XrSpatialIkeaSofa , có thể có tên mẫu ghế sofa cụ thể của IKEA. Trong trường hợp này, cùng một thực thể ghế sofa có cả 3 thành phần (nhãn từ cả 3 tập hợp nhãn ngữ nghĩa), mỗi thành phần cung cấp một mức độ chi tiết khác nhau về thông tin của thực thể.
  • Nếu một tiện ích đang xác định một XrSpatialComponentTypeEXT mới cung cấp một tập hợp nhãn ngữ nghĩa mới chứa nhiều nhãn ngoài nhãn UNCATEGORIZED, thì tiện ích đó nên cân nhắc việc xác định một XrSpatialCapabilityFeatureEXT cho phép các ứng dụng chỉ kích hoạt một nhóm nhỏ các nhãn được xác định trong tập hợp nhãn ngữ nghĩa tương ứng với loại thành phần đó. Tập hợp con này (được cung cấp trong chuỗi tiếp theo của cấu hình chức năng) đóng vai trò là gợi ý để môi trường thời gian chạy tối ưu hoá quy trình theo dõi và chỉ theo dõi tập hợp con được cung cấp. Ví dụ về cấu trúc tính năng như vậy được cung cấp bên dưới .
  • Tiện ích không được thêm nhãn vào tập hợp nhãn ngữ nghĩa hiện có. Thay vào đó, họ phải xác định một kiểu liệt kê mới chứa các giá trị liệt kê tương đương có ngữ nghĩa giống hệt nhau và có giá trị bằng với các giá trị trong tập hợp khác, ngoài các giá trị liệt kê mới được thêm vào. Thông số kỹ thuật của bộ nhãn ngữ nghĩa mới được xác định cũng phải thiết lập mối liên kết giữa bộ nhãn cũ và bộ nhãn mới. Xem ví dụ bên dưới .
Ví dụ về định nghĩa tính năng không gian cho tập hợp con nhãn ngữ nghĩa
// New example semantic label set.
typedef enum XrSpatialExampleSemanticLabelEXT {
  // ... label values
} XrSpatialExampleSemanticLabelEXT;

/*
typedef enum XrSpatialCapabilityFeatureEXT {
  // .. existing values

  // new spatial feature value
  XR_SPATIAL_CAPABILITY_FEATURE_EXAMPLE_SEMANTIC_LABEL_SUBSET_EXT

  // .. existing values
} XrSpatialCapabilityFeatureEXT;
*/

// New spatial feaure configuration structure
typedef struct XrSpatialFeatureExampleSemanticLabelSubsetEXT {
    XrStructureType                             type;
    const void* XR_MAY_ALIAS                    next;
    uint32_t                                    semanticLabelCount;
    const XrSpatialExampleSemanticLabelEXT*     semanticLabels;
} XrSpatialFeatureExampleSemanticLabelSubsetEXT;
Ví dụ về phần mở rộng nhãn ngữ nghĩa không gian
typedef enum XrSpatialExamplePlaneSemanticLabelExtensionEXT {
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_UNCATEGORIZED_EXT = 1,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT = 2,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT = 3,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT = 4,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT = 5,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT = 6,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT = 7,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialExamplePlaneSemanticLabelExtensionEXT;

Hãy xem ví dụ ở trên, trong đó một tiện ích xác định một kiểu liệt kê XrSpatialExamplePlaneSemanticLabelExtensionEXT để mở rộng XrSpatialPlaneSemanticLabelEXT hiện có bằng các giá trị đại diện cho cửa ra vào và cửa sổ. Thông số kỹ thuật cho kiểu liệt kê mới phải bao gồm văn bản cho biểu mẫu sau –

For all non-UNCATEGORIZED label enumerants in elink:XrSpatialPlaneSemanticLabelEXT,
the runtime must: return that enumerant if and only if it returns the corresponding
label enumerant from elink:XrSpatialExamplePlaneSemanticLabelExtensionEXT with the same value
i.e.
the ename:XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT value for that entity must:
correspond with the ename:XR_SPATIAL_COMPONENT_TYPE_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_EXT values
according to the following table -

[width="100%",options="header"]
|====
| XrSpatialExamplePlaneSemanticLabelExtensionEXT                | XrSpatialPlaneSemanticLabelEXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT   | XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT    | XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT   | XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT    | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT  | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
|====

Macro mới

Loại chân bàn mới

  • XrSpatialBufferIdEXT
  • XrSpatialEntityIdEXT

Các loại đối tượng mới

Lệnh mới

Cấu trúc mới

Enum mới

Hằng số enum mới

  • XR_EXT_SPATIAL_ENTITY_EXTENSION_NAME
  • XR_EXT_spatial_entity_SPEC_VERSION
  • Mở rộng XrObjectType :

    • XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXT
    • XR_OBJECT_TYPE_SPATIAL_ENTITY_EXT
    • XR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
  • Mở rộng XrResult :

    • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
    • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • Mở rộng XrStructureType :

    • XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT
    • XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT
    • XR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT
    • XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXT
    • XR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT

Vấn đề

  • Có phải một thực thể luôn chỉ bắt nguồn từ một chức năng duy nhất không?

    • Đã giải quyết
    • Trả lời: Không. Việc này hoàn toàn phụ thuộc vào thời gian chạy dựa trên khả năng theo dõi riêng và cách thời gian chạy muốn biểu thị một thực thể được phát hiện. Thông số kỹ thuật không quy định bất kỳ cách trình bày cụ thể nào về thực thể không gian, ngoại trừ các thành phần được đảm bảo của một chức năng nhất định để đặt ra kỳ vọng tối thiểu. Thời gian chạy có thể hợp nhất các thực thể được phát hiện bằng các chức năng riêng biệt và biểu thị các thực thể đó dưới dạng một thực thể duy nhất có các thành phần được đảm bảo của tất cả chức năng giúp xác định thực thể đó. Ví dụ: cả tính năng theo dõi mặt phẳng và tính năng theo dõi đối tượng đều có thể phát hiện bảng, trong đó tính năng theo dõi mặt phẳng cung cấp thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT trên thực thể và tính năng theo dõi đối tượng cung cấp XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT . Một môi trường thời gian chạy nhất định có thể cung cấp bảng dưới dạng 2 thực thể riêng biệt, mỗi thực thể có một tập hợp thành phần được đảm bảo riêng, trong khi một số môi trường thời gian chạy nhất định có thể chỉ cung cấp 1 thực thể để đại diện cho bảng và có cả XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT và XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT trên cùng một thực thể. Điều quan trọng cần lưu ý ở đây là một thực thể không gian nhất định có thể có tối đa một thành phần của bất kỳ loại thành phần nào. Do đó, nếu dữ liệu thành phần do các chức năng khác nhau tạo ra xung đột với một thực thể nhất định, thì thời gian chạy phải biểu thị các dữ liệu đó dưới dạng 2 thực thể riêng biệt.

Danh sách phiên bản

  • Bản sửa đổi 1, 12/4/2024 (Nihav Jain, Google)

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