XR_EXT_spatial_entity

Name String

XR_EXT_spatial_entity

Loại phần mở rộng

Tiện ích Instance

Số máy nhánh đã đăng ký

741

Bản sửa đổi

1

Trạng thái phê chuẩn

Được phê duyệt

Phần mở rộng và các phần phụ thuộc của 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 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 tương đối đồng nhất như được xác định bởi tiện ích này. Vì tiện ích này thiếu định nghĩa cụ thể về bất kỳ lĩnh vực 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. Đôi khi, các ví dụ có trong văn bản đặc tả tiện ích này đề 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 cho mục đích minh hoạ, mà không giới hạn hoặc chỉ định chức năng bổ sung đó.

Sau đây là những phần chung của tiện ích này:

  • Thực thể không gian : Chức năng này tập trung vào các thực thể , bản thân các thực thể này 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 được liên kết với chúng để cung cấp dữ liệu và hành vi.
  • Các 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à mọi thực thể nhất định có tối đa một thành phần thuộc một loại thành phần nhất định .
  • Bối cảnh không gian : Mọi 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 tạo 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 bởi các khả năng . Khả năng là một đơn vị chức năng, ví dụ: (không giới hạn) các neo do ứng dụng xác định, tính năng phát hiện mặt phẳng hoặc tính năng 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 tại thời điểm tạo thực thể như thường lệ) và được bật cho một bối cảnh cụ thể tại thời điểm tạo.
  • Mỗi khả năng được liên kết với một tập hợp các loại thành phầncác thành phần có trên mọi thực thể do khả năng đó hiển thị . Tiện ích xác định một khả năng sẽ chỉ định các loại thành phần bắt buộc đối với khả năng ("đảm bảo"), trong khi tiện ích đó hoặc các tiện ích khác có thể chỉ định các loại thành phần không bắt buộc do một số cách 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ể các thành phần thuộc một loại thành phần nhất định. Các thành phần này có thể sử dụng một cách đồng nhất bất kể khả năng nào đã tạo ra chúng.
  • Các tính năng về khả năng không gian : Ngoài ra, một số khả năng yêu cầu phải có cấu hình, do đó được tham số hoá theo các 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 mỗi khả năng cung cấp được hỗ trợ trên hệ thống hiện tại, cả cá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ố hóa khác nhau cho các khả năng , tiện ích này cung cấp một cơ chế để liệt kê các tính năng 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 trên nhiều chức 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. Chúng có thể là bất kỳ loại nào sau đây:

  • Vật lý (ví dụ: các bề mặt phẳng như tường và sàn nhà, 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 thao tác, 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ực thể-Thành phần . Mỗi thực thể không gian đều 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ể đó.

Các thực thể không gian được biểu thị bằng một nguyên tử XrSpatialEntityIdEXT hoặc một đối tượng XrSpatialEntityEXT, thông tin chi tiết về đối tượng này được cung cấp trong phần Biểu thị 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 Các 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_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;

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 cung cấp: một số loại yêu cầu phải bật các tiện ích bổ sung tại thời điểm tạo phiên bản, như được ghi lại.

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 một lưới 3D cho 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 một lưới 2D cho 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 một đ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, mã nhận dạng và vị trí của điểm đánh dấu. 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 vào)

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 (Do tiện ích XR_EXT_spatial_object_tracking thêm vào)

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 điểm 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 duy trì 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

Một 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 vào)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT

Thành phần cung cấp các vectơ 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 (Do tiện ích XR_EXT_spatial_mesh_tracking thêm vào)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT

Thành phần cung cấp nhãn ngữ nghĩa cho mỗi đỉnh 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à 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 truy cập 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 thực thể của thực thể bao hàm thực thể được đí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 một 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 vật liệu của 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 trạng thái trống của một 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 chỗ trên thực thể được đí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

Một 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 một hình học cảnh đườ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)

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

Các chức năng không gian xác định khả năng của thời gian chạy để khám phá các thực thể có một tập hợp các thành phần được đảm bảo trên đó. Các ứng dụng cho phép các thành phần của một khả 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 đã 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 khả năng nhất định là "nhãn ngữ nghĩa", thì có nghĩa là ứng dụng có thể bật nhãn ngữ nghĩa thông qua cấu hình cho khả 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;

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

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

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT

Có khả năng phát hiện và theo dõi mã QR siêu nhỏ. (Do tiện ích XR_EXT_spatial_marker_tracking thêm vào)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT

Có 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 vào)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT

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

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 chiếu phẳng. (Do tiện ích XR_EXT_spatial_image_tracking thêm vào)

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 vào)

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

Truyền tia dựa trên bộ nhớ đệ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 một 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 của 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 học cảnh quan đường phố (Do tiện ích XR_ANDROIDX2_geospatial_streetscape thêm vào)

Hàm xrEnumerateSpatialCapabilitiesEXT được xác định 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 handle cho XrInstance .
  • systemIdXrSystemId 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ểNULL nếu capabilityCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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 .

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 đối tượ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ị XrSpatialCapabilityEXT của capabilityCapacityInput

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • 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 xác định như sau:

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

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

  • instance là một handle cho XrInstance .
  • systemIdXrSystemId mà các thành phần chức năng không gian sẽ được liệt kê.
  • capabilityXrSpatialCapabilityEXT mà các thành phần sẽ được liệt kê.
  • capabilityComponents là một con trỏ đến XrSpatialCapabilityComponentTypesEXT , đây là một cấu trúc đầu vào/đầu ra mà trong đó một 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à khả năng đã cho cung cấp trên các thực thể của khả năng đó trong hệ thống như đã định cấu hình.

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

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

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

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • 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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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ểNULL nếu componentTypeCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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.

Sử dụng hợp lệ (Ngầm ẩn)

Các 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 thời gian chạy tính toán dữ liệu thành phần. Những phương diện tham số hoá/khả năng định cấu hình này được gọi là các tính năng. Ví dụ: đối với khả năng theo dõi hình ảnh, một 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ể được liên kết, chẳng hạn như 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 khả 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 khả năng cho phép ứng dụng chỉ định kích thước cho các đ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 các đ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 tập hợp con 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 vào)

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 phải có cấu trúc cấu hình trong quá trình tạo bối cảnh không gian. (Do tiện ích XR_ANDROID_spatial_discovery_bounds thêm vào)

XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID

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

XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID

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

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT

Thời gian chạy hỗ trợ tự động suy luận kích thước thực 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 (Do tiện ích XR_EXT_spatial_image_tracking thêm vào)

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 vào)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT

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 về khả năng theo dõi một 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 vào)

Hàm xrEnumerateSpatialCapabilityFeaturesEXT được xác định 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 handle cho XrInstance .
  • systemIdXrSystemId mà các tính năng về khả năng không gian sẽ được liệt kê.
  • capabilityXrSpatialCapabilityEXT 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ểNULL nếu capabilityFeatureCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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 sẽ 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 những khả năng có các tính năng được hiển thị, ứng dụng sẽ chọn (các) tính năng cần bật và cung cấp cấu trúc cấu hình tương ứng trong chuỗi cấu trúc cấu hình khả năng tiếp theo trong XrSpatialContextCreateInfoEXT :: capabilityConfigs .

Nếu capability không phải là một khả 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ả năng không gian mà tiện ích của tính năng đó không được bật cho instance .

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 xrEnumerateSpatialCapabilityFeaturesEXT
  • instance phải là một đối tượng XrInstance hợp lệ
  • capability phải là 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 gồm các giá trị XrSpatialCapabilityFeatureEXT của capabilityFeatureCapacityInput

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • 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

Ngữ cảnh không gian

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

XR_DEFINE_HANDLE(XrSpatialContextEXT)

Xử lý 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ể dùng mã nhận dạng này để khám phá và cập nhật các thực thể không gian bằng cách sử dụng các hàm khác trong tiện ích này.

Hàm xrCreateSpatialContextAsyncEXT được xác định như sau:

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

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

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

Ứng dụng có thể tạo một đối tượng 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 tay cầm ngữ 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 xrEnumerateSpatialCapabilitiesEXT không liệt kê bất kỳ khả năng nào trong mảng XrSpatialContextCreateInfoEXT :: capabilityConfigs .

Thời gian chạy phải trả về XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT nếu có XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount trong XrSpatialContextCreateInfoEXT :: capabilityConfigs là 0. Cấu hình khả 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 khả năng đó.

Thời gian chạy phải trả về XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT nếu mọi loại thành phần đượ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 khả 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 thời gian chạy hỗ trợ khả 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 cầm ngữ cảnh không gian có chứa khả 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 dài, thì các lệnh gọi đến xrCreateSpatialDiscoverySnapshotAsyncEXT có thể dẫn đến một ảnh chụp nhanh trống. Ứng dụng có thể đợi XrEventDataSpatialDiscoveryRecommendedEXT trước khi 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 những 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 ra một XrFutureEXT tương ứng , có thể 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 thao tác không đồng bộ hay không. Hàm hoàn tất tương ứng là xrCreateSpatialContextCompleteEXT , có thể dùng khi một hàm trong tương lai từ hàm này ở trạng thái READY, với các đầu ra do hàm đó điền vào cấu trúc hoàn tất XrCreateSpatialContextCompletionEXT .

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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

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

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 đối tượng XrSpatialContextEXT.

Sử dụng hợp lệ (Ngầm ẩn)

Cấu trúc XrSpatialCapabilityConfigurationBaseHeaderEXT được xác định 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 mà thay vào đó, 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ả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 xrEnumerateSpatialCapabilitiesEXT liệt kê . 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 .

Sử dụng hợp lệ (Ngầm ẩn)

Hàm xrCreateSpatialContextCompleteEXT được xác định 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ỷ.

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • futureResultXrResult của thao tác tạo bối cảnh không gian.
  • spatialContext là một XrSpatialContextEXT được tạo bằ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

Thất bại

  • 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ì trạng thái này sẽ chỉ duy trì 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 đến trước.

Sử dụng hợp lệ (Ngầm ẩn)

Hủy bỏ ngữ cảnh không gian

Hàm xrDestroySpatialContextEXT được xác định 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 đối tượng spatialContext và các tài nguyên cơ bản khi hoàn tất các tác 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ác chức năng không gian giống 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.

Sử dụng hợp lệ (Ngầm ẩn)

Độ an toàn cho luồng

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

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • 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 có hiệu lực đối với XrSpatialContextEXT mà trong đó XrSpatialEntityIdEXT được phát hiện và thời gian chạy không được 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 dùng lại cùng một XrSpatialEntityIdEXT trên nhiều XrSpatialContextEXT trong cùng một XrSession, bất kể XrSpatialEntityIdEXT đó đại diện cho cùng một thực thể hay nhiều thực thể.

#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0

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

Xử lý thực thể không gian

XR_DEFINE_HANDLE(XrSpatialEntityEXT)

Xử lý XrSpatialEntityEXT đại diện cho một thực thể không gian. Một ứng dụng có thể tạo một đối tượng như vậy để thể hiện sự quan tâm của mình đối với một thực thể cụ thể trong thời gian chạy.

Tạo Spatial Entity Handle từ mã nhận dạng

Hàm xrCreateSpatialEntityFromIdEXT được xác định như sau:

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

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

Ứng dụng có thể dùng xrCreateSpatialEntityFromIdEXT để tạo một giá trị nhận dạng XrSpatialEntityEXT. Đây là một giá trị tham 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 .

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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.
  • entityIdXrSpatialEntityIdEXT của thực thể mà ứng dụng muốn tạo một đối tượng xử lý.

Sử dụng hợp lệ (Ngầm ẩn)

Huỷ Spatial Entity Handle

Hàm xrDestroySpatialEntityEXT được xác định 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 giá trị nhận dạng spatialEntity khi không còn quan tâm đến thực thể mà giá trị nhận dạng này tham chiếu nữa.

Sử dụng hợp lệ (Ngầm ẩn)

Độ an toàn cho luồng

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

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • 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. Xử lý XrSpatialSnapshotEXT đại diện cho dữ liệu bất biến của các thực thể không gian đã phát hiện hoặc cập nhật và một tập hợp con 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 cảnh nhất quán về các thực thể và dữ liệu thành phần của chúng. Sau khi được tạo, dữ liệu của ảnh chụp nhanh phải giữ nguyên trong thời gian ảnh chụp nhanh còn hiệu lực.

Ứng dụng có thể tạo bao nhiêu ả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 hủy bỏ ảnh chụp nhanh khi không còn cần đến.

Tạo ảnh chụp nhanh dữ liệu khám phá

Hàm xrCreateSpatialDiscoverySnapshotAsyncEXT được xác định 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 cách sử dụng xrCreateSpatialDiscoverySnapshotAsyncEXT .

Hàm này bắt đầu một thao tác không đồng bộ và tạo ra một XrFutureEXT tương ứng , có thể 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 thao tác không đồng bộ hay không. Hàm hoàn tất tương ứng là xrCreateSpatialDiscoverySnapshotCompleteEXT , có thể dùng khi một hàm trong tương lai từ hàm này ở trạng thái READY, với các đầu ra do hàm đó điền vào cấu trúc hoàn tất 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 quá trình tạo ảnh chụp 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 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 các thực thể và thành phần mà thời gian chạy phải đưa dữ liệu vào ảnh chụp nhanh. Nếu ứng dụng cung cấp một 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 phải chỉ bao gồm các thực thể không gian trong ả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 các 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 đã bật của những chức năng được định cấu hình cho spatialContext .

Nếu XrEventDataReferenceSpaceChangePending được xếp hàng đợi trước khi hoàn tất futureXrEventDataReferenceSpaceChangePending :: poseValid là false, thì thời gian chạy có thể tạo XrSpatialSnapshotEXT không có thực thể hoặc đặt XrSpatialEntityTrackingStateEXT của các thực thể không còn đị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 .

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 đối tượng XrSpatialSnapshotEXT khi khám phá các thực thể không gian.

Sử dụng hợp lệ (Ngầm ẩn)

Hàm xrCreateSpatialDiscoverySnapshotCompleteEXT được xác định 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ỷ.

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định như sau:

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

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

Các 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ị bằng baseSpace , nằm ở time .

Sử dụng hợp lệ (Ngầm ẩn)

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

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • futureResultXrResult của thao tác tạo ảnh chụp nhanh về việc khám phá không gian.
  • snapshot là một XrSpatialSnapshotEXT mà bạn có thể dùng để truy vấn dữ liệu thành phần của các thực thể không gian đã phát hiện.

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

Giá trị futureResult:

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

Sử dụng hợp lệ (Ngầm ẩn)

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

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

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • spatialContextXrSpatialContextEXT mà thời gian chạy đang đề 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 gọi quá nhiều lần đế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ì các ảnh chụp nhanh kết quả có thể chứa cùng một thực thể và do đó, việc tạo ảnh chụp nhanh và truy vấn dữ liệu sẽ lãng phí.

Việc chờ sự kiện này để tạo một ảnh chụp nhanh khám phá mới đảm bảo rằng ứ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 và giúp tránh nguy cơ sử dụng quá nhiều tài nguyên hệ thống, cũng như bị điều tiết do chính sách về nguồn hoặc nhiệt của thiết bị. Điều này cũng giúp tạo 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 ngay lập tức 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ỉ xếp hàng sự kiện đề xuất khám phá một lần cho mỗi XrSpatialContextEXT).

Thời gian chạy không được xếp hàng sự kiện này để thông báo cho ứng dụng về những 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ể dùng xrCreateSpatialUpdateSnapshotEXT để theo dõi các bản cập nhật dữ liệu thành phần cho những thực thể không gian mà ứng dụng quan tâm.

Thời gian chạy có thể xếp hàng một sự kiện đề xuất khám phá mà không cần đợi ứng dụng gọi trước xrCreateSpatialDiscoverySnapshotAsyncEXT . Ví dụ: thời gian chạy có thể dựa trên quyết định xếp hàng sự kiện đề xuất khám phá theo cấu hình của XrSpatialContextEXT, sự hiểu biết của chính nó 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á phù 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 tồn tại của XrSpatialContextEXT đó .

Thời gian chạy không được xếp hàng sự kiện này 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 xếp hàng thêm bất kỳ sự kiện đề xuất khám phá nào cho ngữ cảnh không gian đó cũng như không trả về bất kỳ sự kiện nào như vậy cho ngữ cảnh đó từ xrPollEvent .

Sử dụng hợp lệ (Ngầm ẩn)

Truy vấn dữ liệu thành phần

Hàm xrQuerySpatialComponentDataEXT được xác định 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 một cấu trúc danh sách vào XrSpatialComponentDataQueryResultEXT :: next tương ứng với từng 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ỏ các thành phần có trong XrSpatialComponentDataQueryConditionEXT :: componentTypes . Ứng dụng có thể chọn bỏ qua hoàn toàn các 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à một lỗi.

Nếu XrEventDataReferenceSpaceChangePending được xếp 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 chỉ điền XrSpatialComponentDataQueryResultEXT :: entityIds bằng 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 sẵ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 những đ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 chỉ điền XrSpatialComponentDataQueryResultEXT ::entityIds bằng những 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ác cấu trúc danh sách theo cùng một thứ tự như 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ác cấu trúc danh sách được đính kèm vào XrSpatialComponentDataQueryResultEXT .

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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_EXTXR_SPATIAL_COMPONENT_TYPE_PARENT_EXT
  • Thực thể 3 và 4 có các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
  • Thực thể 5 có các thành phần XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT .

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

3

3

4

4

5

5

Bounded2D

Bounded2D

Không

Không

Không

Không

Cha mẹ

Cha mẹ

Không

Không

Không

Không

Không

Không

Mesh3D

Mesh3D

Không

Không

Không

Không

Bounded3D

Bounded3D

Không

Không

Không

Không

Không

Không có 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 với 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ề cho ứng dụng và ứng dụng có thể đính kèm một mảng XrSpatialBounded2DDataEXT trong cấu trúc XrSpatialComponentBounded2DListEXT vào chuỗi XrSpatialComponentDataQueryResultEXT tiếp theo để 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 thể...

Dữ liệu cho entityId #2

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

Dữ liệu cho entityId #5

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

entityIds

entityIds

tiếp theo

tiếp theo

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Dat...

bounds

bounds

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_EXTXR_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ề cho ứng dụng và ứng dụng có thể đính kèm các mảng XrBoxfXrSpatialMeshDataEXT trong XrSpatialComponentBounded3DListEXTXrSpatialComponentMesh3DListEXT tương ứng với chuỗi XrSpatialComponentDataQueryResultEXT tiếp theo để lấy dữ liệu thành phần.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

3

3

4

4

Bounded3D

Bounded3D

Dữ liệu cho entityId số 3

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

Dữ liệu cho entityId #4

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

Mesh3D

Mesh3D

Dữ liệu cho entityId số 3

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

Dữ liệu cho entityId #4

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

entityIds

entityIds

tiếp theo

tiếp theo

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Da...

bounds

bounds

tiếp theo

tiếp theo

XrSpatialComponent
Bounded3DListEXT

XrSpatialComponent
Bo...

XrSpatialComponent
Mesh3DListEXT

XrSpatialComponent
Me...

lưới

meshes Text is not SVG - cannot display

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

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

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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.

Sử dụng hợp lệ (Ngầm ẩn)

Cấu trúc XrSpatialComponentDataQueryResultEXT được xác định 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ả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 bắt buộc trong trường hợp entityIdCapacityInput không đủ.
  • entityIds là một mảng XrSpatialEntityIdEXT . Giá trị này có thể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 cần thiết 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ểNULL nếu entityStateCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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.

Một ứng dụng có thể dùng entityIds với xrCreateSpatialEntityFromIdEXT để tạo các đối tượng XrSpatialEntityEXT cho những 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 đối tượng XrSpatialEntityEXT này với xrCreateSpatialUpdateSnapshotEXT để tạo một ảnh chụp nhanh cập nhật có dữ liệu mới nhất mà thời gian chạy biết về các thành phần cho những thực thể được cung cấp.

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ể có:

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ể đó.

XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT

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 thực thể này trong tương lai.

XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT

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 việc 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ề thời điểm mà thời gian chạy có thể thực hiện việc này (nhưng không giới hạn ở) là 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ự cách ly 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à không bao giờ khôi phục hoặc tiếp tục theo dõi được. Ví dụ về trường hợp như vậy là khi thiết bị mất khả 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ị. Do đó, thiết bị sẽ coi các thực thể được phát hiện trong phiên theo dõi này là các 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 bao giờ đượ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 các 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 các 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 xác định như sau:

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

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

  • bufferId XrSpatialBufferIdEXT của dữ liệu bộ đệm.
  • bufferTypeXrSpatialBufferTypeEXT để 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 với kích thước thay đổi và do đó, bạn cần sử dụng cấu trúc hai lệnh gọi để truy xuất dữ liệu của các thành phần đó. 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 một XrSpatialBufferEXT cho mỗi vùng đệm có kích thước biến đổi 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 của thành phần này sang truy vấn dữ liệu của thành phần khác, ngay cả khi chuyển từ thông tin tổng quan nhanh này sang thông tin tổng quan nhanh khác. Một bufferId khác giữa các lệnh gọi truy vấn dữ liệu thành phần cho biết cho ứng dụng rằng dữ liệu cho thành phần đó có thể đã thay đổi.

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 thay đổ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 vòng đời của XrSpatialSnapshotEXT chứa dữ liệu đó. 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 như một phần của ả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;

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ề các phần tử liệt kê

  • XR_SPATIAL_BUFFER_TYPE_STRING_EXT . Bạn có thể truyền XrSpatialBufferIdEXT can đến xrGetSpatialBufferStringEXT để truy xuất một vùng đệm chuỗi.
  • XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferUint8EXT để truy xuất một vùng đệm uint8_t.
  • XR_SPATIAL_BUFFER_TYPE_UINT16_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferUint16EXT để truy xuất một vùng đệm uint16_t.
  • XR_SPATIAL_BUFFER_TYPE_UINT32_EXT . XrSpatialBufferIdEXT có thể được truyền đến xrGetSpatialBufferUint32EXT để truy xuất vùng đệm uint32_t.
  • XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT . Bạn có thể truyền XrSpatialBufferIdEXT đến xrGetSpatialBufferFloatEXT để truy xuất mộ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 một vùng đệm XrVector3f.

Hàm xrGetSpatialBufferStringEXT được xác định 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 giá trị nhận dạng 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ố lượng 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ểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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.

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 xrGetSpatialBufferStringEXT
  • snapshot phải là một đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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 char

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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ểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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 .

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 xrGetSpatialBufferUint8EXT
  • snapshot phải là một đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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 uint16_t . Giá trị này có thểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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 .

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 đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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ểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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 .

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 đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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ểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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 :: bufferTypeXR_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 .

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 xrGetSpatialBufferFloatEXT
  • snapshot phải là một đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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 XrVector2f . Giá trị này có thểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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 .

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 xrGetSpatialBufferVector2fEXT
  • snapshot phải là một đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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 bufferCapacityInput cấu trúc XrVector2f

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định 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 giá trị nhận dạng 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ố lượng 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 XrVector3f . Giá trị này có thểNULL nếu bufferCapacityInput là 0.
  • Hãy xem phần Tham số kích thước 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ể nhận dữ liệu cho XrSpatialBufferEXT do một thành phần cung cấp, trong đó XrSpatialBufferEXT :: bufferTypeXR_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 .

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 đối tượng XrSpatialSnapshotEXT hợp lệ
  • info phải là con trỏ đến một 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 bufferCapacityInput cấu trúc XrVector3f

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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.

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 XrSpatialBufferIdEXT không hợp lệ . Bạn có thể truyền và trả về giá trị này từ các hàm API chỉ khi được cho phép cụ thể.

Tạo ảnh chụp nhanh về thông tin cập nhật

Hàm xrCreateSpatialUpdateSnapshotEXT được xác định như sau:

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

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

Ứng dụng có thể dùng xrCreateSpatialUpdateSnapshotEXT để tạo một ảnh chụp nhanh và nhận dữ liệu thành phần mới nhất cho các thực thể cụ thể theo thời gian chạy. Các ứng dụng có thể cung cấp các đối tượng XrSpatialEntityEXT và các loại thành phần mà chú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 mà dữ liệu phải được đưa vào ảnh chụp nhanh. Nếu ứng dụng cung cấp một 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 bao gồm các thực thể không gian trong ả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 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 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 đã 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 bao nhiêu ả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 hủy bỏ ảnh chụp nhanh khi không còn cần đến.

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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 xác định 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ả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 bao gồm dữ liệu trong thông tin tổng quan nhanh.
  • baseSpaceXrSpace mà theo đó, tất cả vị trí của XrSpatialSnapshotEXT sẽ được đặt.
  • timeXrTime mà tất cả các vị trí của bản cập nhật XrSpatialSnapshotEXT sẽ được đặt.

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ảiXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT
  • next phảiNULL 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à con trỏ đến một mảng gồm entityCount giá trị nhận dạng 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 componentTypeCount giá trị XrSpatialComponentTypeEXT hợp lệ
  • baseSpace phải là một đối tượ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 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 xác định như sau:

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

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

Ứng dụng có thể gọi xrDestroySpatialSnapshotEXT để hủy bỏ handle XrSpatialSnapshotEXT và các tài nguyên liên kết với handle đó.

Sử dụng hợp lệ (Ngầm ẩn)

Độ an toàn cho luồng

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

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Thành phần chung

2D có đường viền

Dữ liệu thành phần

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

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

Nội dung mô tả 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ó ranh giới.
  • extents là phạm vi của thành phần 2D có ranh giới dọc theo trục x (extents.width), trục y (extents.height), được đặt ở giữa 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}, hướng xoay {0, 0, 0, 1} (không xoay) và kích thước {1, 1} đề cập đến một mặt phẳng có kích thước 1 mét x 1 mét, được đặt ở tâm tại {0, 0, 0} với vectơ pháp tuyến của mặt trước hướng về hướng +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 xung quanh trục +X.

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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 bằng 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 :: baseSpaceXrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: 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 :: baseSpaceXrSpatialUpdateSnapshotCreateInfoEXT :: time .

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ố khả 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 để được đưa vào chuỗi tiếp theo của XrSpatialCapabilityConfigurationBaseHeaderEXT .

3D có ranh giới

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ả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 bằng 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 .

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ố khả năng, thì ứng dụng có thể bật khả 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 để được đưa vào chuỗi tiếp theo của XrSpatialCapabilityConfigurationBaseHeaderEXT .

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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 bằng 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 .

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 XrSpatialComponentParentListEXT
  • type phảiXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT
  • next phảiNULL 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ỏ đến một mảng gồm các giá trị parentCount 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ố khả năng, thì ứng dụng có thể bật khả 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 để được đưa vào chuỗi tiếp theo của XrSpatialCapabilityConfigurationBaseHeaderEXT .

Lưới 3D

Dữ liệu thành phần

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

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

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

  • origin là một XrPosef xác định nguồn gốc của lưới. Tất cả các đỉnh của lưới phải có liên quan đến nguồn 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 nằm trên đó. 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ỉ số tam giác, chỉ định chỉ số của các đỉnh lưới trong vertexBuffer . Bạn phải trả về chỉ mục tam giác theo chiều ngược chiều kim đồng hồ và 3 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 vertexBufferindexBuffer .

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 xác định như sau:

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con 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 3D dạng lưới 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 bằng 0 và XR_SPATIAL_COMPONENT_TYPE_MESH_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 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ảiXR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXTXrSpatialBufferEXT :: bufferType cho XrSpatialMeshDataEXT :: indexBuffer phảiXR_SPATIAL_BUFFER_TYPE_UINT32_EXT .

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ố khả năng, thì ứng dụng có thể bật khả năng đó bằng cách đưa enum vào danh sách XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents của cấu trúc phái sinh XrSpatialCapabilityConfigurationBaseHeaderEXT của khả 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 để được đưa vào chuỗi tiếp theo của XrSpatialCapabilityConfigurationBaseHeaderEXT .

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

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

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

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • trackingStateXrSpatialEntityTrackingStateEXT 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 để giới hạn phạm vi truy vấn dữ liệu thành phần từ một ảnh chụp nhanh chỉ cho những thực thể có trạng thái theo dõi là trackingState .

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:

  • Trước tiên, một ứng dụng sẽ liệt kê các chức năng không gian của hệ thống bằng cách sử dụng xrEnumerateSpatialCapabilitiesEXT . Sau đó, ứng dụng sẽ kiểm tra mảng XrSpatialCapabilityEXT được trả về và liệt kê các thành phần cũng như tính năng được hỗ trợ cho từng chức năng đó bằng cách sử dụng lần lượt xrEnumerateSpatialCapabilityComponentTypesEXTxrEnumerateSpatialCapabilityFeaturesEXT. Điều này giúp ứng dụng có được bức tranh toàn cảnh về những thành phần mà ứng dụng có thể bật và những cấu hình mà chức năng này chấp nhận.
  • Sau đó, ứng dụng sẽ tạo một hoặc nhiều đối tượng XrSpatialContextEXT với các cấu hình khả năng không gian cụ thể, trong đó các cấu hình này cho phép và định cấu hình một khả năng cụ thể trong bối cảnh không gian, đồng thời cho phép và định cấu hình các thành phần cho những khả năng đó.
  • Đối với mỗi XrSpatialContextEXT , ứng dụng sẽ đợi nhận các sự kiện XrEventDataSpatialDiscoveryRecommendedEXT cho XrSpatialContextEXT đó trước khi sử dụng xrCreateSpatialDiscoverySnapshotAsyncEXT để khám phá các thực thể không gian. Sau khi thao tác không đồng bộ này hoàn tất, ứng dụng sẽ nhận được một mã nhận dạng XrSpatialSnapshotEXT.
  • Ứng dụng truy vấn các thực thể và dữ liệu thành phần có trong XrSpatialSnapshotEXT này bằng cách sử dụng xrQuerySpatialComponentDataEXT . Ứng dụng sẽ đọc dữ liệu thành phần mới nhất của các thực thể được truy vấn từ các cấu trúc được đính kèm vào 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 có những thực thể cụ thể mà ứng dụng xác định là thú vị và muốn nhận thông tin cập nhật theo thời gian, thì ứng dụng sẽ tạo các đối tượng XrSpatialEntityEXT cho những thực thể đó bằng cách sử dụng xrCreateSpatialEntityFromIdEXT . Ứng dụng nhận được thông tin cập nhật cho những thực thể thú vị như vậy bằng cách sử dụng xrCreateSpatialUpdateSnapshotEXT và sử dụng cùng một hàm xrQuerySpatialComponentDataEXT trên XrSpatialSnapshotEXT mới tạo để nhận dữ liệu thành phần mới nhất cho những thực thể đó.

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

Đoạn mã ví dụ sau đây minh hoạ cách khám phá các thực thể không gian cho truy vấn khả năng "Foo" 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));

Truy vấn dữ liệu bộ đệm

Đoạ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

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

  • Các tiện ích có thể xác định các cấu trúc mở rộng XrSpatialDiscoverySnapshotCreateInfoEXT để cung cấp các bộ lọc bổ sung cho hoạt động khám phá. Bộ lọc để tạo ảnh chụp nhanh không được ảnh hưởng đến cấu hình của ngữ cảnh không gian, mà thay vào đó, được dùng để cung cấp gợi ý cho thời gian chạy về những thực thể và dữ liệu sẽ được đưa vào ảnh chụp nhanh theo dõi bằng cấu hình hiện tại của ngữ 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ể dùng để bật tính năng này khi tạo XrSpatialContextEXT .

  • Tiện ích xác định XrSpatialCapabilityEXT mới phải 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ụ
  • Phần mở rộng xác định một 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 kiểu dữ liệu của bộ đệ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 bộ đệm.

Nguyên tắc về thiết kế và tiện ích của 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 nó đặt ra các quy tắc và nguyên tắc thiết kế cho mọi tiện ích xác định một thành phần như vậy. Trong văn bản sau, " nên " và " phải " sẽ hạn chế các tác giả của chức năng đó, thay vì hạn chế việc triển khai thời gian chạy hoặc một ứ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 thực hiện việc này bằng cách xác định một XrSpatialComponentTypeEXT mới cũng như một giá trị liệt kê mới với 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 phép liệt kê đạ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 trong tập hợp này. Tên của giá trị liệt kê này phải có chứa "UNCATEGORIZED", ví dụ: XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT. Giá trị này cho biết cho các ứng dụng rằng thời gian chạy có nhận dạng thực thể này, nhưng có những tập hợp 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 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 đó, các nhãn được xác định trong tập hợp) tương ứng với loại thành phần đó.
  • Các ứng dụng thể hiện mong muốn khám phá những 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 enabledComponents của XrSpatialCapabilityConfigurationBaseHeaderEXT :: cấu trúc cấu hình cho khả năng mà loại thành phần được liệt kê.
  • Có thể một thực thể không gian duy nhất có nhiều thành phần trên đó, mỗi thành phần cung cấp cho thực thể đó một nhãn từ bộ nhãn ngữ nghĩa riêng. Hãy xem xét ví dụ sau 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 cụ thể của ghế sofa IKEA. Trong trường hợp này, thực thể ghế sofa có cả 3 thành phần (nhãn từ cả 3 bộ nhãn ngữ nghĩa) trên đó, mỗi thành phần cung cấp một mức độ chi tiết khác nhau về thực thể.
  • Nếu một tiện ích đang xác định 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 XrSpatialCapabilityFeatureEXT cho phép các ứng dụng chỉ kích hoạt một tập hợp con của 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 khả năng, đóng vai trò là một gợi ý cho thời gian chạy để tối ưu hoá các 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 đối tượng như vậy được cung cấp bên dưới .
  • Các tiện ích không được thêm nhãn vào chế độ liệt kê 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 phần tử 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 phần tử trong tập hợp khác, ngoài các phần tử liệt kê mới được thêm. Quy cách của bộ nhãn ngữ nghĩa mới 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 đối tượ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ề tiện ích 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 xét ví dụ trên, trong đó một tiện ích xác định một phép 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ổ. Quy cách cho giá trị 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

Các loại châ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ể duy nhất 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 tuỳ thuộc vào thời gian chạy dựa trên khả năng theo dõi của chính thời gian chạy và cách thời gian chạy muốn biểu thị một thực thể được phát hiện. Quy cách này không quy định bất kỳ cách biểu diễn cụ thể nào của thực thể không gian, ngoại trừ các thành phần được đảm bảo của một khả năng nhất định để đặt 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ị chúng dưới dạng một thực thể duy nhất với các thành phần được đảm bảo của tất cả các chức năng đã giúp xác định thực thể đó. Ví dụ: các bảng có thể được phát hiện bằng cả khả năng theo dõi mặt phẳng và khả năng theo dõi đối tượng, trong đó khả 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à khả năng theo dõi đối tượng cung cấp XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT . Một số thời gian chạy 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 nhóm thành phần được đảm bảo riêng, trong khi một số thời gian chạy có thể chỉ cung cấp 1 thực thể để biểu thị bảng và có cả XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTXR_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 thuộc một loại thành phần nhất định . 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 đối 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, ngày 12 tháng 4 năm 2024 (Nihav Jain, Google)

    • Nội dung mô tả ban đầu của tiện ích