XR_EXT_spatial_entity

Name String

XR_EXT_spatial_entity

Uzantı Türü

Örnek uzantısı

Kayıtlı Dahili Numara

741

Düzeltme

1

Onay Durumu

Onaylandı

Uzantı ve Sürüm Bağımlılıkları

XR_EXT_future

Katkıda bulunanlar

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

Genel Bakış

Bu uzantı, OpenXR'da sahne anlama ve uzamsal akıl yürütme ile ilgili kavramları ve temel bilgileri tanıtır. Bu, birbiriyle ilişkili ancak farklı işlev alanlarını birleştirir. Bu alanlar, bu uzantı tarafından tanımlandığı şekilde genel olarak tek tip bir şekilde numaralandırılır, yapılandırılır ve etkileşime girer. Bu uzantıda bu işlevsel alanlardan herhangi birinin somut tanımları bulunmadığından resmi spesifikasyon metni biraz soyut olma eğilimindedir. Bu uzantı spesifikasyon metninde yer alan örnekler, zaman zaman açıklama amacıyla, yaklaşan veya varsayımsal bir ilgili uzantıda tanımlanan işlevlere atıfta bulunur. Bu tür ek işlevler, doğası gereği sınırlanmaz veya belirtilmez.

Bu uzantının ana parçaları şunlardır:

  • Uzamsal varlıklar : İşlev, tek başına çok az işlevsellik sağlayan varlıklar etrafında şekillenir.
  • Uzamsal bileşenler : Bu varlıkların, veri ve davranış sağlayan ilişkili bileşenleri vardır.
  • Uzamsal bileşen türleri : Her uzamsal bileşen belirli bir bileşen türüne aittir ve herhangi bir varlık , herhangi bir bileşen türünde en fazla bir bileşene sahiptir .
  • Uzamsal bağlam : Tüm uzamsal varlık etkileşimleri, başlatma ve yapılandırma aşamasından sonra bir bağlamda gerçekleşir.
  • Uzamsal özellikler : Uzamsal varlık manipülasyonu, genel olarak özellikler tarafından sağlanır. Yetenek, bir işlev birimidir. Örneğin (sınırlama olmaksızın) uygulama tarafından tanımlanan sabitleyiciler, düzlem algılama veya görüntü izleme. Her özellik genellikle ayrı bir uzantıda tanımlanır (her zamanki gibi örnek oluşturma sırasında etkinleştirilir) ve oluşturma sırasında belirli bir bağlam için etkinleştirilir.
  • Her özellik, bileşenlerin bu özellik tarafından sunulan her varlıkta bulunduğu bir bileşen türleri grubuyla ilişkilendirilir. Bir özelliği tanımlayan uzantı, özellik için hangi bileşen türlerinin zorunlu ("garantili") olduğunu belirtir. Aynı uzantı veya diğer uzantılar, bazı olası uygulamalar tarafından sağlanan isteğe bağlı bileşen türlerini belirtebilir. Herhangi bir sayıda özellik, varlıklara belirli bir bileşen türünün bileşenlerini sağlayabilir. Bu bileşenler, bunları üreten özellik ne olursa olsun tek tip olarak kullanılabilir.
  • Konumsal özellikler : Ayrıca, bazı özellikler yapılandırma gerektirir ve bu nedenle özellikler tarafından parametreleştirilir .

Bu uzantı, mevcut sistemde desteklenen her özellik tarafından sağlanan bileşenleri (hem zorunlu hem de isteğe bağlı bileşenler) listelemek için bir mekanizma sağlar.

Bazı uygulamalar özellikler için farklı derecelerde parametreleştirme gerektirebileceğinden bu uzantı, mevcut sistemde belirli bir özellik ile ilişkili desteklenen özellik işlevlerini listelemek için bir mekanizma sağlar.

Bu uzantı, çok çeşitli özelliklerde kullanılması beklenen birkaç yaygın bileşeni de tanımlar.

Üç Boyutlu Varlık

Uzamsal varlıklar, belirli bir alanda bulunan ve bileşenler halinde düzenlenmiş çeşitli ilişkili verilere sahip varlıklardır. Aşağıdakilerden herhangi biri olabilir:

  • Fiziksel (ör. duvar ve zemin gibi düz yüzeyler, sandalye ve kitaplık gibi nesneler)
  • Sanal (ör. başka bir uygulama veya kullanıcı tarafından yerleştirilen ve paylaşılan içerik)
  • Uygulama tarafından tanımlanan (ör. uygulamanın bir alanı "Living Room" veya "mutfak" olarak işaretlemesi ya da bir noktayı TV'nin yerleştirileceği konum olarak işaretlemesi vb.)

Kumandalar veya göz bakışı gibi işlem sistemi aracılığıyla sunulan öğelerin uzamsal varlıklar olarak modellenmesi amaçlanmamıştır.

OpenXR'daki uzamsal varlıklar, Varlık-Bileşen sistemi olarak modellenir. Her uzamsal varlığın bir dizi bileşeni vardır ve her bileşen, söz konusu varlık için benzersiz bir veri ve davranış kümesi sağlar.

Uzamsal varlıklar, XrSpatialEntityIdEXT atomu veya XrSpatialEntityEXT tutma yeri ile temsil edilir. Bunlarla ilgili ayrıntılar Uzamsal Varlık Temsilleri bölümünde verilmiştir.

Üç Boyutlu Bileşen Türleri

Uzamsal varlıklar, ilgili varlık için veri veya davranış sağlayan bir ya da daha fazla bileşene sahiptir. Bu uzantı tarafından tanımlanan bazı yaygın bileşenler için Ortak Bileşenler bölümüne bakın.

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

XrSpatialComponentTypeEXT numaralandırması, çalışma zamanının destekleyebileceği farklı bileşen türlerini tanımlar.

Listelenen tüm bileşen türleri bu uzantı tarafından tek başına sağlanmaz. Bazıları için örnek oluşturma sırasında ek uzantıların etkinleştirilmesi gerekir.

Numaralandırıcılar aşağıdaki değerlere sahiptir:

Enum Açıklaması

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

Uzamsal bir varlık için 2D sınırları sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded2DListEXT, ilgili veri yapısı ise XrSpatialBounded2DDataEXT'tir.

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT

Uzamsal bir varlık için 3D sınırları sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded3DListEXT, ilgili veri yapısı ise XrBoxf'tir.

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT

Uzamsal bir varlık için üst öğenin XrSpatialEntityIdEXT değerini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentParentListEXT; ilgili veri yapısı XrSpatialEntityIdEXT

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT

Üç boyutlu bir varlık için 3D mesh sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DListEXT, ilgili veri yapısı ise XrSpatialMeshDataEXT'tir.

XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT

Uzamsal bir varlık için düzlem hizalama enum'unu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneAlignmentListEXT, ilgili veri yapısı ise XrSpatialPlaneAlignmentEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT

Uzamsal bir varlık için 2D ağ sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh2DListEXT, ilgili veri yapısı ise XrSpatialMeshDataEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT

Uzamsal bir varlık için 2D sınır poligonu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPolygon2DListEXT, ilgili veri yapısı ise XrSpatialPolygon2DDataEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT

Bir düzlem için semantik etiket sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneSemanticLabelListEXT, ilgili veri yapısı ise XrSpatialPlaneSemanticLabelEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT

İşaretçi türünü, kimliğini ve konumunu açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentMarkerListEXT, ilgili veri yapısı ise XrSpatialMarkerDataEXT şeklindedir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT

Bir sahne için semantik etiket sağlayan bileşen. İlgili liste yapısı XrSpatialComponentObjectSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialObjectSemanticLabelEXT'tir. (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT

Klavye için semantik etiket sağlayan bileşen. Karşılık gelen liste yapısı XrSpatialComponentKeyboardSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialKeyboardSemanticLabelEXT'dir (XR_EXT_spatial_object_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT

Fare için semantik etiket sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentMouseSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialMouseSemanticLabelEXT'tir (XR_EXT_spatial_object_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT

Bir sabitleme noktasının konumunu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentAnchorListEXT, ilgili veri yapısı ise XrPosef'dir (XR_EXT_spatial_anchor uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT

Uzamsal varlık için kalıcı UUID sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPersistenceListEXT, ilgili veri yapısı ise XrSpatialPersistenceDataEXT'tir (XR_EXT_spatial_persistence uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT

Düzlemsel görüntü türünü açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentImage2DListEXT, ilgili veri yapısı ise XrSpatialImageSizeEXT'tir. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT

Üç boyutlu öğelerin 3D mesh'i için normalleri sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DNormalsListEXT, ilgili veri yapısı ise XrSpatialBufferEXT'tir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT

Üç boyutlu bir öğenin 3D mesh'i için köşe başına anlamsal etiketler sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DVertexSemanticLabelsListEXT'tir. İlgili veri yapısı XrSpatialBufferEXT'tir. Arabellekteki veriler XrSpatialMeshSemanticLabelEXT ile eşlenir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT

Uzamsal bir varlığın 3D ağı için üçgen yüz başına anlamsal etiketler sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT; ilgili veri yapısı XrSpatialBufferEXT; arabellekteki veriler XrSpatialMeshSemanticLabelEXT ile eşlenir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID

Bir nesne için semantik etiket sağlayan bileşen; İlgili liste yapısı XrSpatialComponentObjectSemanticLabelListANDROID; İlgili veri yapısı XrSpatialObjectSemanticLabelANDROID (XR_ANDROID_spatial_object_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID

Bir varlık üzerindeki ışın çarpmasının pozunu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentRaycastResultListANDROID; ilgili veri yapısı XrSpatialRaycastResultDataANDROID (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID

Ekli varlığı kapsayan varlığın kimliğini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentSubsumedByListANDROID, ilgili veri yapısı ise XrSpatialEntityIdEXT (XR_ANDROID_spatial_component_subsumed_by uzantısı tarafından eklendi) şeklindedir.

XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS

Bir ayakkabı kutusunun boyutlarını ve oda türünü sağlayan bileşen; İlgili liste yapısı XrSpatialComponentRoomListANDROIDSYS; İlgili veri yapısı XrSpatialRoomDataANDROIDSYS (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS

Sınır yüzeyinin malzeme türünü sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMaterialTypeListANDROIDSYS, ilgili veri yapısı ise XrSpatialMaterialTypeANDROIDSYS'tir (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS

İzlenebilir bir öğenin güvenini sağlayan bileşen; Karşılık gelen liste yapısı XrSpatialComponentConfidenceListANDROIDSYS; Karşılık gelen veri yapısı float (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS

Bir odanın boş olup olmadığını belirten bileşen. İlgili liste yapısı XrSpatialComponentRoomEmptinessListANDROIDSYS, ilgili veri yapısı ise float şeklindedir (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1

Ekli varlıktaki doluluk ızgarası hakkında bilgi sağlayan bileşen. İlgili liste yapısı XrSpatialComponentOccupancyGridListANDROIDX1, ilgili veri yapısı ise XrSpatialOccupancyGridDataANDROIDX1 (XR_ANDROIDX1_spatial_occupancy_grid uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID

Dörtgen ek açıklamayı açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentAnnotationQuadListANDROID, ilgili veri yapısı ise XrSpatialAnnotationQuadDataANDROID'dir (XR_ANDROID_spatial_annotation_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2

Sokak görünümü geometrisi için meta verileri sağlayan bileşen; Karşılık gelen liste yapısı XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2; Karşılık gelen veri yapısı XrSpatialStreetscapeGeometryMetadataANDROIDX2 (XR_ANDROIDX2_geospatial_streetscape uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID

Bir varlığı geometri noktası olarak tanımlayan bileşen. Bu bileşen türü için karşılık gelen bir liste veya veri yapısı yok. Bu bileşenin varlığı, yalnızca bir varlığın bir sabite eklenebileceğini gösterir. (XR_ANDROID_spatial_geometry_point uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1

Varlığın kalıcı olduğu kalıcılık kapsamlarını açıklayan bir bileşen. Çalışma zamanı XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT'yi destekliyorsa bu bileşeni de desteklemesi gerekir. İlgili veri yapısı XrSpatialBufferEXT'tir. İlgili liste yapısı XrSpatialComponentPersistenceScopeDataListANDROIDX1 . (XR_ANDROIDX1_spatial_anchor_cloud_sharing uzantısı tarafından eklendi)

Uzamsal Özellikler ve Kurulum

Uzamsal özellikler, çalışma zamanının belirli bir bileşen grubuna sahip varlıkları keşfetme yeteneklerini tanımlar. Uygulamalar, XrSpatialContextEXT oluştururken uzamsal özelliğin bileşenlerini etkinleştirir ve çalışma zamanı, keşfedilen varlıklarda yalnızca etkinleştirilen bileşenleri sağlamalıdır. Örneğin, bir çalışma zamanı belirli bir özellik için bileşenlerden birinin "semantik etiketler" olduğunu bildirirse bu, uygulamanın ilgili özelliğin yapılandırması aracılığıyla semantik etiketleri etkinleştirebileceği ve çalışma zamanının yalnızca yapılandırılmışsa semantik etiket bileşenini sağlaması gerektiği anlamına gelir.

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;

XrSpatialCapabilityEXT numaralandırması, çalışma zamanının destekleyebileceği farklı özellik türlerini tanımlar.

Numaralandırıcılar aşağıdaki değerlere sahiptir:

Enum Açıklaması

XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT

Uçak izleme (XR_EXT_spatial_plane_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT

QR kodlarını algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT

Mikro QR kodlarını algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT

ArUco işaretçilerini algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT

AprilTag'leri algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT

Nesne dosyası (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ANCHOR_EXT

Üç boyutlu yer işaretleri oluşturma özelliği (XR_EXT_spatial_anchor uzantısı tarafından eklenir)

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT

Düzlemsel referans görselleri algılama ve izleme özelliği. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT

Bir ortamın ağını izleme özelliği. (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID

Nesne izleme (XR_ANDROID_spatial_object_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID

Derinlik arabelleğine karşı ışın dökümü (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS

Bir odayı takip etme özelliği (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS

Oda sınırını izleme özelliği (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID

Not izleme (XR_ANDROID_spatial_annotation_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2

Sokak görünümü geometrisi (XR_ANDROIDX2_geospatial_streetscape uzantısı tarafından eklendi)

xrEnumerateSpatialCapabilitiesEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • instance, bir XrInstance için herkese açık kullanıcı adıdır.
  • systemId, uzamsal özellikleri numaralandırılacak XrSystemId değeridir.
  • capabilityCapacityInput, capabilities dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • capabilityCountOutput, özelliklerin sayısı veya capabilityCapacityInput yetersiz olduğunda gereken kapasitedir.
  • capabilities, XrSpatialCapabilityEXT dizisidir. capabilityCapacityInput 0 ise NULL olabilir.
  • Gerekli capabilities boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrEnumerateSpatialCapabilitiesEXT kullanarak belirli bir XrSystemId tarafından desteklenen uzamsal özelliklerin listesini numaralandırabilir.

Çalışma zamanı, instance için uzantısı etkinleştirilmemiş uzamsal özellikleri listelememelidir.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrEnumerateSpatialCapabilitiesEXT çağrılmadan önce etkinleştirilmelidir.
  • instance geçerli bir XrInstance herkese açık kullanıcı adı olmalıdır
  • capabilityCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • capabilityCapacityInput, 0 değilse capabilities, capabilityCapacityInput XrSpatialCapabilityEXT değerlerinden oluşan bir diziye işaret eden bir işaretçi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • 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

xrEnumerateSpatialCapabilityComponentTypesEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • instance, bir XrInstance için herkese açık kullanıcı adıdır.
  • systemId, uzamsal özellik bileşenleri numaralandırılacak XrSystemId değeridir.
  • capability, bileşenlerin numaralandırılacağı XrSpatialCapabilityEXT'dir.
  • capabilityComponents, uygulama tarafından ayrılan bir dizinin doldurulduğu giriş/çıkış yapısı olan XrSpatialCapabilityComponentTypesEXT'ye işaret eden bir göstergedir.

Bu işlev, belirli bir özelliğin sistemdeki varlıklarında sağladığı bileşen türlerini yapılandırıldığı şekilde listeler.

Uygulama, systemId tarafından capability için desteklenen tüm bileşenleri anlamak amacıyla XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listelenen bileşen türlerini kullanabilir ve bu listeyi kullanarak capability için XrSpatialContextEXT oluştururken geçerli bir yapılandırmanın ne olduğunu belirleyebilir.

capability, xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).

Çalışma zamanı, uzantısı instance için etkinleştirilmemiş uzamsal bileşen türlerini listelememelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • 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

XrSpatialCapabilityComponentTypesEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • componentTypeCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • componentTypeCountOutput, bileşen türlerinin sayısı veya componentTypeCapacityInput değerinin yetersiz olması durumunda gereken kapasitedir.
  • componentTypes, XrSpatialComponentTypeEXT dizisidir. componentTypeCapacityInput 0 ise NULL olabilir.
  • Gerekli componentTypes boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Geçerli Kullanım (Dolaylı)

Uzamsal özellikler

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;

Bazı özelliklerde, bileşen verilerinin çalışma zamanı tarafından nasıl hesaplanacağını yapılandırmak için uygulamaya gösterilen parametreler bulunur. Parametreleştirme/yapılandırılabilirlik boyutları, yetenek özellikleri olarak bilinir. Örneğin, bir görüntü izleme özelliği için çalışma zamanı, uygulamanın izlenen görüntülerin sabit olup olmadığını belirtmesine olanak tanıyan bir özelliği destekleyebilir.

Bu bilgilerin bir yapılandırma yapısı aracılığıyla çalışma zamanına sağlanması, ilişkili varlıklarda (ör. izlenen resimde) bulunan bileşen türleri grubunu değiştirmemelidir. Ancak çalışma zamanı, örneğin görüntü izleme özelliğinin izleme yeteneklerini optimize edebilir ve uygulamaya daha iyi bir deneyim sunabilir.

Bu tür özellikler XrSpatialCapabilityFeatureEXT ile temsil edilir ve uygulama bunları xrEnumerateSpatialCapabilityFeaturesEXT kullanarak listeler.

Her özellik, etkinleştirilmesi için karşılık gelen bir yapılandırma yapısına sahiptir. Bu tür yapılandırma yapıları, ilgili özelliğin XrSpatialCapabilityConfigurationBaseHeaderEXT :: next öğesine zincirlenmelidir (must).

Numaralandırıcılar aşağıdaki değerlere sahiptir:

Enum Açıklaması

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT

Uygulamaların işaretçilerin boyutunu belirtmesine olanak tanıyan özellik. İlgili yapılandırma yapısı XrSpatialMarkerSizeEXT'tir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT

Uygulamaların, işaretçilerin statik olup olmadığını belirtmesine olanak tanıyan özellik. İlgili yapılandırma yapısı XrSpatialMarkerStaticOptimizationEXT'tir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT

Uygulamaların, çalışma zamanının izlemesi için XrSpatialObjectSemanticLabelEXT'ten bir etiket alt kümesi belirtmesine olanak tanıyan uzamsal özellik. İlgili yapılandırma yapısı XrSpatialFeatureObjectSemanticLabelSubsetEXT şeklindedir. (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID

Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsSpherefANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID

Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsBoxfANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID

Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsFrustumfANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT

Çalışma zamanı, algılanan ve izlenen resimlerin fiziksel boyutunun otomatik olarak çıkarılmasını destekler. İlgili yapılandırma yapısı XrSpatialImageSizeEXT'tir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT

Çalışma zamanı, XrSpatialImageStaticOptimizationEXT'yi destekler. İlgili yapılandırma yapısı XrSpatialImageStaticOptimizationEXT şeklindedir. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT

Çalışma zamanı XrSpatialImageSizeEXT'yi destekler. İlgili yapılandırma yapısı XrSpatialImageSizeEXT'tir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT

Ortamın su geçirmez bir ağını izleme özelliği. İlgili yapılandırma yapısı XrSpatialFeatureTrackWatertightMeshEXT'tir. (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklendi)

xrEnumerateSpatialCapabilityFeaturesEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • instance, bir XrInstance için herkese açık kullanıcı adıdır.
  • systemId, uzamsal özelliklerinin numaralandırılacağı XrSystemId değeridir.
  • capability, özelliklerin numaralandırılacağı XrSpatialCapabilityEXT'dir.
  • capabilityFeatureCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • capabilityFeatureCountOutput, özelliklerin sayısı veya capabilityFeatureCapacityInput yetersiz olduğunda gereken kapasitedir.
  • capabilityFeatures, XrSpatialCapabilityFeatureEXT dizisidir. capabilityFeatureCapacityInput 0 ise NULL olabilir.
  • Gerekli capabilityFeatures boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrEnumerateSpatialCapabilityFeaturesEXT kullanarak belirli bir sistemin XrSpatialCapabilityEXT için desteklediği özellikleri bulur.

Uygulama, özellikleri gösterilen özellikler için etkinleştirilecek özellikleri seçer ve XrSpatialContextCreateInfoEXT :: capabilityConfigs içindeki özellik yapılandırma yapılarının bir sonraki zincirinde ilgili yapılandırma yapısını sağlar.

capability, xrEnumerateSpatialCapabilitiesEXT tarafından listelenen bir özellik değilse çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).

Çalışma zamanı, instance için uzantısı etkinleştirilmemiş uzamsal özellik işlevlerini listelememelidir.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrEnumerateSpatialCapabilityFeaturesEXT çağrılmadan önce etkinleştirilmelidir.
  • instance geçerli bir XrInstance herkese açık kullanıcı adı olmalıdır
  • capability geçerli bir XrSpatialCapabilityEXT değeri olmalıdır
  • capabilityFeatureCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • capabilityFeatureCapacityInput, 0 değilse capabilityFeatures, capabilityFeatureCapacityInput XrSpatialCapabilityFeatureEXT değerlerinden oluşan bir diziye işaretçi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • 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

Uzamsal Bağlam

Üç boyutlu bağlam oluşturma

XR_DEFINE_HANDLE(XrSpatialContextEXT)

XrSpatialContextEXT tanıtıcısı, kullanıcının ortamındaki belirli sayıda uzamsal varlığı keşfetme ve güncelleme kaynaklarını temsil eder. Uygulama, bu uzantıdaki diğer işlevleri kullanarak uzamsal varlıkları keşfetmek ve güncellemek için bu herkese açık kullanıcı adını kullanabilir.

xrCreateSpatialContextAsyncEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • session, uzamsal bağlamın etkin olacağı bir XrSession'dır.
  • createInfo, uzamsal bağlam parametrelerini belirtmek için kullanılan XrSpatialContextCreateInfoEXT'tir.
  • future, bir XrFutureEXT işaretçisidir.

Uygulama, aşağıdaki yöntemlerle XrSpatialContextEXT herkese açık anahtarı oluşturabilir:

XrSpatialContextCreateInfoEXT ::capabilityConfigCount 0 ise çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must). Mekansal bağlam tutamağının en az bir özelliği olmalıdır.

XrSpatialContextCreateInfoEXT :: capabilityConfigs dizisindeki herhangi bir özellik xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).

XrSpatialContextCreateInfoEXT :: capabilityConfigs içindeki herhangi bir XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount 0 ise çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must). Yetenek yapılandırması, ilgili yetenek için etkinleştirilecek bileşen türlerinin listesi olmadan tamamlanamaz.

XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents içinde listelenen herhangi bir bileşen türü xrEnumerateSpatialCapabilityComponentTypesEXT içinde XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability için numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT değerini döndürmelidir.

XrSpatialContextCreateInfoEXT :: capabilityConfigs sonraki zincirindeki yapılardan herhangi biri, xrEnumerateSpatialCapabilityFeaturesEXT içinde bu özellik için listelenmeyen bir XrSpatialCapabilityFeatureEXT öğesine karşılık geliyorsa çalışma zamanı bu XrSpatialCapabilityFeatureEXT yapısını yoksaymalıdır.

XrSpatialContextCreateInfoEXT :: capabilityConfigs, aynı XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability değerine sahip birden fazla yapı içeriyorsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must).

Sistem kaynaklarının en iyi şekilde kullanılmasını sağlamak için çalışma zamanı, gelecek uzamsal isteklere hazırlanmak amacıyla XrSpatialContextCreateInfoEXT dizisinde sağlanan yapılandırmaları kullanabilir. Örneğin, düzlem izleme özelliğini destekleyen bir çalışma zamanı, yalnızca uygulama tarafından düzlem izleme özelliğini içeren bir uzamsal bağlam tutma yeri oluşturulursa düzlem izleme ardışık düzenini başlatabilir. Yapılandırılan özelliklerin ısınma süresi uzunsa xrCreateSpatialDiscoverySnapshotAsyncEXT çağrıları boş bir anlık görüntüyle sonuçlanabilir. Uygulama, xrCreateSpatialDiscoverySnapshotAsyncEXT'yi kullanmadan önce XrEventDataSpatialDiscoveryRecommendedEXT'yi bekleyerek temel izleme hizmetlerinin hazır olduğundan emin olabilir.

Çalışma zamanı, XrSpatialContextEXT için yapılandırılan uzamsal özelliklere uygulama erişimini kontrol etmek amacıyla bir izin sistemi uyguluyorsa bu izinler uygulamaya verilmediğinde çalışma zamanı XR_ERROR_PERMISSION_INSUFFICIENT değerini döndürmelidir.

Bu işlev, eşzamansız bir işlem başlatır ve xrPollFutureEXT ve ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin döndürdüğü değer, yalnızca parametrelerin eşzamansız işlemi planlamak için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialContextCompleteEXT'tir. Bu işlevden gelen bir gelecek, HAZIR durumdayken kullanılabilir ve çıkışlar, tamamlama yapısında XrCreateSpatialContextCompletionEXT bu işlev tarafından doldurulur.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_TIME_INVALID (XR_ANDROID_spatial_annotation_tracking etkinse)

XrSpatialContextCreateInfoEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • capabilityConfigCount, capabilityConfigs dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • capabilityConfigs, XrSpatialCapabilityConfigurationBaseHeaderEXT işaretçilerinden oluşan bir dizinin işaretçisidir.

XrSpatialContextCreateInfoEXT yapısı, XrSpatialContextEXT herkese açık kullanıcı adını oluşturmak için gereken bilgileri açıklar.

Geçerli Kullanım (Dolaylı)

XrSpatialCapabilityConfigurationBaseHeaderEXT yapısı şu şekilde tanımlanır:

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

Bu yapı doğrudan API'de kullanılmaz. Bunun yerine, alt yapıları XrSpatialContextCreateInfoEXT ile birlikte kullanılarak uzamsal özellikler yapılandırılabilir.

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • capability, bir XrSpatialCapabilityEXT'tir.
  • enabledComponentCount, enabledComponents dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • enabledComponents, XrSpatialComponentTypeEXT dizisine işaret eden bir göstergedir.

capability, xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must). enabledComponents içinde listelenen herhangi bir bileşen türü, xrEnumerateSpatialCapabilityComponentTypesEXT içinde capability için numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT değerini döndürmelidir.

Geçerli Kullanım (Dolaylı)

xrCreateSpatialContextCompleteEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT tarafından başlatılan eşzamansız işlemi tamamlar. future hazır durumda değilse çalışma zamanı XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir (must). future zaten tamamlanmış veya iptal edilmişse çalışma zamanı XR_ERROR_FUTURE_INVALID_EXT değerini döndürmelidir (must).

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrCreateSpatialContextCompletionEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • futureResult, uzamsal bağlam oluşturma işleminin XrResult değeridir.
  • spatialContext, xrCreateSpatialContextAsyncEXT :: createInfo içindeki veriler ve yapılandırma kullanılarak oluşturulan bir XrSpatialContextEXT'tir.

Gelecekteki İade Kodları

futureResult değer:

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

futureResult başarılı bir kodsa spatialContext geçerli olmalıdır. spatialContext geçerliyse yalnızca xrCreateSpatialContextAsyncEXT :: session yaşam döngüsü içinde veya uygulama xrDestroySpatialContextEXT ile spatialContext öğesini yok edene kadar (hangisi önce gerçekleşirse) geçerli kalır.

Geçerli Kullanım (Dolaylı)

Üç boyutlu bağlamı yok etme

xrDestroySpatialContextEXT işlevi şu şekilde tanımlanır:

XrResult xrDestroySpatialContextEXT(
    XrSpatialContextEXT                         spatialContext);

Parametre Açıklamaları

Uygulama, uzamsal varlık keşfi ve güncelleme görevleri tamamlandığında spatialContext tutamacını ve temel kaynakları serbest bırakmak için xrDestroySpatialContextEXT işlevini çağırabilir. spatialContext ile aynı uzamsal özelliklerle oluşturulmuş başka bir geçerli XrSpatialContextEXT yoksa bu çağrı, sistem kaynaklarından tasarruf etmek için çalışma zamanına bu özellikler için gereken izleme hizmetlerini devre dışı bırakma önerisi olarak hizmet eder.

Geçerli Kullanım (Dolaylı)

İleti Dizisi Güvenliği

  • spatialContext ve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Uzamsal Varlık Temsilleri

Mekansal Varlık Kimliği

XR_DEFINE_ATOM(XrSpatialEntityIdEXT)

XrSpatialEntityIdEXT, kullanıcının uzamsal ortamında çalışma zamanı tarafından keşfedilen her türlü varlığı temsil etmek için kullanılır. XrSpatialEntityIdEXT, keşfedildiği XrSpatialContextEXT için geçerlidir ve çalışma zamanı, aynı XrSpatialContextEXT içindeki farklı varlıklar için aynı XrSpatialEntityIdEXT'yi yeniden kullanmamalıdır. Ayrıca çalışma zamanı, aynı XrSession içindeki birden fazla XrSpatialContextEXT'te aynı XrSpatialEntityIdEXT değerini yeniden kullanmamalıdır. Bu kural, aynı veya farklı varlıkları temsil etmesinden bağımsız olarak geçerlidir.

#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0

XR_NULL_SPATIAL_ENTITY_ID_EXT, geçersiz bir XrSpatialEntityIdEXT değerini temsil eden ayrılmış bir değerdir. Yalnızca özel olarak izin verildiğinde API işlevlerine iletilebilir ve API işlevlerinden döndürülebilir.

Üç Boyutlu Öğe Tutma Yeri

XR_DEFINE_HANDLE(XrSpatialEntityEXT)

XrSpatialEntityEXT herkese açık anahtarı, uzamsal bir varlığı temsil eder. Uygulamalar, belirli bir varlığa olan ilgisini çalışma zamanına bildirmek için bu tür bir tutma yeri oluşturabilir.

Kimlikten Uzamsal Varlık Tanıtıcısı Oluşturma

xrCreateSpatialEntityFromIdEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

Uygulama, kullanıcının ortamında bulunan bir varlığa referans olan XrSpatialEntityEXT herkese açık kullanıcı adını oluşturmak için xrCreateSpatialEntityFromIdEXT işlevini kullanabilir.

XrSpatialEntityFromIdCreateInfoEXT :: entityId, spatialContext için geçerli bir kimlik değilse çalışma zamanı XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT değerini döndürmelidir (must).

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrSpatialEntityFromIdCreateInfoEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • entityId, uygulamanın herkese açık kullanıcı adı oluşturmak istediği varlığın XrSpatialEntityIdEXT değeridir.

Geçerli Kullanım (Dolaylı)

Üç Boyutlu Öğe Tanıtıcısını Yok Etme

xrDestroySpatialEntityEXT işlevi şu şekilde tanımlanır:

XrResult xrDestroySpatialEntityEXT(
    XrSpatialEntityEXT                          spatialEntity);

Parametre Açıklamaları

Uygulama, bu tutma yerinin referans verdiği varlıkla artık ilgilenmediğinde spatialEntity tutma yerini serbest bırakmak için xrDestroySpatialEntityEXT'yi kullanabilir.

Geçerli Kullanım (Dolaylı)

İleti Dizisi Güvenliği

  • spatialEntity ve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Uzamsal Anlık Görüntü

XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)

Uygulama, uzamsal varlıkları keşfetmek veya bilinen uzamsal varlıklarla ilgili bilgilerini güncellemek amacıyla uzamsal anlık görüntüler oluşturabilir. XrSpatialSnapshotEXT herkese açık kullanıcı adı, keşfedilen veya güncellenen uzamsal varlıklar için sabit verileri ve uygulama tarafından seçilen bileşenlerinin bir alt kümesini temsil eder. Mekansal anlık görüntü, varlıkların ve bileşen verilerinin tutarlı bir görünümünü temsil eder. Anlık görüntü oluşturulduktan sonra, anlık görüntünün verileri geçerli olduğu sürece sabit kalmalıdır.

Uygulama istediği sayıda anlık görüntü oluşturabilir ancak her yeni anlık görüntü için ayrılan belleğe dikkat etmeli ve artık ihtiyaç duymadığı anlık görüntüleri silmelidir.

Keşif anlık görüntüsü oluşturma

xrCreateSpatialDiscoverySnapshotAsyncEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

Uygulama, xrCreateSpatialDiscoverySnapshotAsyncEXT kullanarak bir keşif anlık görüntüsü oluşturarak uzamsal varlıkları keşfedebilir.

Bu işlev, eşzamansız bir işlem başlatır ve xrPollFutureEXT ve ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin döndürdüğü değer, yalnızca parametrelerin eşzamansız işlemi planlamak için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialDiscoverySnapshotCompleteEXT'tir. Bu işlevden gelen bir gelecek, HAZIR durumdayken kullanılabilir ve çıkışlar, tamamlama yapısındaki XrCreateSpatialDiscoverySnapshotCompletionEXT işlevi tarafından doldurulur.

Uygulama, önceki isteğin tamamlanmasını beklemeden birden fazla keşif anlık görüntüsü oluşturma isteği gönderebilir. Çalışma zamanı, anlık görüntü oluşturma işlemini herhangi bir sırayla işleyip tamamlayabilir. Çalışma zamanı, cihazın güç, termal veya diğer politikaları nedeniyle sistem kaynaklarının kullanımını azaltması gerekiyorsa uygulamayı kısıtlamak için keşif anlık görüntüsü oluşturma işleminin tamamlanmasını geciktirebilir.

Uygulama, çalışma zamanının anlık görüntüye dahil etmesi gereken verileri içeren bileşenlerin ve varlıkların listesini filtrelemek için XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes kullanabilir. Uygulama, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde geçerli bir uzamsal bileşen türleri listesi sağlıyorsa çalışma zamanı, anlık görüntüye yalnızca XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde sağlanan bileşenlerden en az birine sahip uzamsal öğeleri dahil etmelidir. Ayrıca çalışma zamanı, yalnızca anlık görüntüdeki bileşenlerin verilerini içermelidir.

spatialContext oluşturulurken XrSpatialContextCreateInfoEXT :: capabilityConfigs öğesine iletilen uzamsal özellikler için XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içindeki XrSpatialComponentTypeEXT öğelerinden herhangi biri etkinleştirilmemişse çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT değerini döndürmelidir .

Uygulama, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde uzamsal bileşen türlerinin listesini sağlamazsa çalışma zamanı, spatialContext için yapılandırılan özellikler için XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents içinde listelenen bileşen grubuna sahip olan anlık görüntüdeki tüm uzamsal varlıkları içermelidir. Çalışma zamanı, spatialContext için yapılandırılan özelliklerin tüm etkin bileşenlerine ait verileri içermelidir.

XrEventDataReferenceSpaceChangePending, future tamamlanmadan önce sıraya alınırsa ve XrEventDataReferenceSpaceChangePending :: poseValid yanlışsa çalışma zamanı, içinde öğe olmayan bir XrSpatialSnapshotEXT oluşturabilir veya XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace içinde artık bulunamayan öğelerin XrSpatialEntityTrackingStateEXT değerini XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time konumunda XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak ayarlayabilir. Çalışma zamanı, XrEventDataReferenceSpaceChangePending nedeniyle XrCreateSpatialContextCompletionEXT :: futureResult değerini bir hata koduna ayarlamamalıdır.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrSpatialDiscoverySnapshotCreateInfoEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • componentTypeCount, componentTypes dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • componentTypes, XrSpatialComponentTypeEXT dizisidir.

XrSpatialDiscoverySnapshotCreateInfoEXT yapısı, uzamsal varlıkları keşfederken XrSpatialSnapshotEXT herkese açık kullanıcı adını oluşturmak için gereken bilgileri açıklar.

Geçerli Kullanım (Dolaylı)

xrCreateSpatialDiscoverySnapshotCompleteEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT tarafından başlatılan eşzamansız işlemi tamamlar. XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future hazır durumda değilse çalışma zamanı XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir (must). XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future zaten tamamlanmış veya iptal edilmişse çalışma zamanı XR_ERROR_FUTURE_INVALID_EXT değerini döndürmelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrCreateSpatialDiscoverySnapshotCompletionInfoEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

Oluşturulan anlık görüntüye dahil edilen çeşitli bileşen verilerindeki konumlar, time konumundaki baseSpace içinde temsil edilir.

Geçerli Kullanım (Dolaylı)

XrCreateSpatialDiscoverySnapshotCompletionEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • futureResult, uzamsal keşif anlık görüntüsü oluşturma işleminin XrResult değeridir.
  • snapshot, keşfedilen uzamsal varlıkların bileşen verilerini sorgulamak için kullanılabilen bir XrSpatialSnapshotEXT'tir.

Gelecekteki İade Kodları

futureResult değer:

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

Geçerli Kullanım (Dolaylı)

Keşif Önerisi Etkinliği

XrEventDataSpatialDiscoveryRecommendedEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • spatialContext, çalışma zamanı tarafından keşfin önerildiği XrSpatialContextEXT'tir.

Uygulama, xrPollEvent kullanarak bu etkinliği alabilir. Uygulama, bu etkinliği bekleyerek uzamsal varlıkları keşfetmek için xrCreateSpatialDiscoverySnapshotAsyncEXT'e aşırı çağrı yapılmasını önleyebilir. Uygulama, iki XrEventDataSpatialDiscoveryRecommendedEXT etkinliği arasında aynı XrSpatialDiscoverySnapshotCreateInfoEXT ile birden fazla keşif anlık görüntüsü oluşturursa elde edilen anlık görüntüler aynı varlıkları içerebilir. Bu nedenle, anlık görüntü oluşturma ve veri sorguları gereksiz olur.

Yeni bir keşif anlık görüntüsü oluşturmak için bu etkinliğin beklenmesi, uygulamanın, çalışma zamanının yeni veri döndürmeyebileceği keşif istekleriyle sistemi aşırı yüklememesini sağlar. Ayrıca sistem kaynaklarının aşırı kullanımı ve cihazın güç veya termal politikaları nedeniyle kısıtlanma riskini önlemeye yardımcı olur. Bu, canlı izleme ile anında uzamsal varlıkları keşfeden çalışma zamanları ile daha önce kaydedilmiş bir durumdan uzamsal varlıklar sağlayan çalışma zamanları arasında eşitlik oluşturmaya da yardımcı olur (çalışma zamanı, keşif önerisi etkinliğini her XrSpatialContextEXT için yalnızca bir kez sıraya alabilir).

Çalışma zamanı, mevcut uzamsal varlıkların bileşen verilerinde yapılan değişiklikler veya düzenlemeler hakkında uygulamayı bilgilendirmek için bu etkinliği sıraya almamalıdır. Uygulama, ilgilendiği uzamsal varlıkların bileşen verisi güncellemelerini takip etmek için xrCreateSpatialUpdateSnapshotEXT'yi kullanabilir.

Çalışma zamanı, uygulamanın önce xrCreateSpatialDiscoverySnapshotAsyncEXT'yi çağırmasını beklemeden bir keşif önerisi etkinliğini sıraya alabilir. Örneğin, bir çalışma zamanı, keşif önerisi etkinliğini sıraya alma kararını XrSpatialContextEXT yapılandırmasına, kullanıcının etrafındaki ortamı kendi anlayışına (yeni varlıkların keşfi veya mevcut varlıkların kaybı) ya da sistem kaynaklarını aşırı yüklememek için uygulamaya uygun bir keşif isteği sıklığı önermeye dayandırabilir. Çalışma zamanı, XrSpatialContextEXT'nin kullanım ömrü boyunca kullanıcının ortamında hiçbir varlık bulunmazsa bu etkinliği hiçbir zaman XrSpatialContextEXT için sıraya almamayı seçebilir.

Uygulama, xrCreateSpatialContextCompleteEXT kullanarak oluşturma işlemini tamamlayana kadar çalışma zamanı, belirli bir spatialContext için bu etkinliği sıraya almamalıdır.

Uygulama xrDestroySpatialContextEXT'i çağırdıktan sonra çalışma zamanı, söz konusu uzamsal bağlam için daha fazla keşif önerisi etkinliğini sıraya almamalı ve xrPollEvent'ten bu bağlam için bu tür etkinlikler döndürmemelidir.

Geçerli Kullanım (Dolaylı)

Sorgu Bileşeni Verileri

xrQuerySpatialComponentDataEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içindeki her XrSpatialComponentTypeEXT öğesine karşılık gelen XrSpatialComponentDataQueryResultEXT :: next öğesine bir liste yapısı ekleyerek anlık görüntüdeki varlıkların bileşen verilerini sorgulamak için xrQuerySpatialComponentDataEXT işlevini kullanabilir.

Uygulama, XrSpatialComponentDataQueryResultEXT :: next öğesine XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde listelenen bileşenlerin hiçbirine karşılık gelmeyen bir liste yapısı eklerse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .

Uygulama, yalnızca XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde listelenen bileşenlerin bir alt kümesine karşılık gelen liste yapılarını eklemeyi seçebilir. Uygulama, yalnızca queryCondition koşulunu karşılayan uzamsal varlıkların kimliklerini ve izleme durumunu öğrenmek istiyorsa liste yapılarını tamamen atlamayı seçebilir. Çalışma zamanı, XrSpatialComponentDataQueryResultEXT :: next zincirinde liste yapılarının olmamasını hata olarak değerlendirmemelidir.

XrEventDataReferenceSpaceChangePending sıraya alınırsa ve uygulama bir XrSpatialSnapshotEXT'ten bileşen verilerini sorgularken XrEventDataReferenceSpaceChangePending :: changeTime geçerse uygulama, pozları buna göre ayarlamak için etkinlik verilerini kullanabilir.

Çalışma zamanı, XrSpatialComponentDataQueryResultEXT :: entityIds öğesini yalnızca XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde belirtilen tüm bileşenlere sahip varlıklarla doldurmalıdır (must). XrSpatialComponentDataQueryConditionEXT :: componentTypeCount 0 ise çalışma zamanı, queryResult öğesini anlık görüntüdeki tüm varlıklarla (ve bunların izleme durumlarıyla) doldurmalıdır. XrSpatialComponentDataQueryConditionEXT :: next öğesine ek sorgu koşulları eklenirse çalışma zamanı, bunları bileşen türlerinin kullanılabilirliğiyle birlikte "VE" olarak değerlendirmelidir. Yani çalışma zamanı, XrSpatialComponentDataQueryResultEXT ::entityIds öğesini yalnızca sağlanan tüm koşulları karşılayan varlıklarla doldurmalıdır. Çalışma zamanı, liste yapılarındaki bileşen verilerini XrSpatialComponentDataQueryResultEXT :: entityIds içindeki varlıklarla aynı sırada doldurmalıdır. Yani liste yapısı dizisindeki belirli bir dizinde bulunan bileşen verileri, aynı dizindeki varlığa karşılık gelmelidir.

Bir varlığın izleme durumu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT değilse çalışma zamanı, XrSpatialComponentDataQueryResultEXT'ye ekli liste yapılarında bulunan dizideki bu varlığa karşılık gelen dizindeki verileri değiştirmemelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

Örneğin, uygulama 5 öğe içeren bir XrSpatialSnapshotEXT oluşturur. Bu öğeler şunlardır:

  • 1 ve 2 numaralı varlıklar XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT ve XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT bileşenlerine sahip
  • 3 ve 4 numaralı varlıkların XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşenleri var.
  • 5 numaralı varlıkta XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşenleri var.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

3

3

4

4

5

5

Bounded2D

Bounded2D

Evet

Evet

Evet

Evet

Hayır

Hayır

Hayır

Hayır

Evet

Evet

Ebeveyn

Ebeveyn

Evet

Evet

Evet

Evet

Hayır

Hayır

Hayır

Hayır

Hayır

Hayır

Mesh3D

Mesh3D

Hayır

Hayır

Hayır

Hayır

Evet

Evet

Evet

Evet

Evet

Evet

Bounded3D

Bounded3D

Hayır

Hayır

Hayır

Hayır

Evet

Evet

Evet

Evet

Hayır

Hayır Metin SVG değil, görüntülenemiyor

20. şekil. Örnek anlık görüntü

Sorgu koşulunda XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT listelenen yukarıdaki anlık görüntüde xrQuerySpatialComponentDataEXT, 1, 2 ve 5 numaralı varlıkların uygulamaya döndürülmesine neden olur. Uygulama, bounded2D verilerini almak için XrSpatialComponentDataQueryResultEXT'nin bir sonraki zincirine XrSpatialComponentBounded2DListEXT yapısının bir parçası olarak bir XrSpatialBounded2DDataEXT dizisi ekleyebilir.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

5

5

Bounded2D

Bounded2D

#1 numaralı entityId için veriler

Tüzel kişi verileri...

2 numaralı entityId için veriler

Tüzel kişi verileri...

entityId #5 için veriler

Tüzel kişi verileri...

entityIds

entityIds

sonraki

sonraki

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Dat...

sınırlar

sınırlar

XrSpatialComponent
Bounded2DListEXT

XrSpatialComponent
Bou... Metin SVG değil, görüntülenemiyor

21. şekil. Örnek sorgu sonucu

Sorgu koşulunda listelenen XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşenleriyle yukarıdaki anlık görüntüde xrQuerySpatialComponentDataEXT, 3 ve 4 numaralı varlıkların uygulamaya döndürülmesine neden olur. Uygulama, bileşen verilerini almak için sırasıyla XrSpatialComponentBounded3DListEXT ve XrSpatialComponentMesh3DListEXT yapılarının bir parçası olarak XrBoxf ve XrSpatialMeshDataEXT dizilerini bir sonraki XrSpatialComponentDataQueryResultEXT zincirine ekleyebilir.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

3

3

4

4

Bounded3D

Bounded3D

entityId #3 için veriler

Tüzel kişi verileri...

entityId #4 için veriler

Tüzel kişi verileri...

Mesh3D

Mesh3D

entityId #3 için veriler

Tüzel kişi verileri...

entityId #4 için veriler

Tüzel kişi verileri...

entityIds

entityIds

sonraki

sonraki

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Da...

sınırlar

sınırlar

sonraki

sonraki

XrSpatialComponent
Bounded3DListEXT

XrSpatialComponent
Bo...

XrSpatialComponent
Mesh3DListEXT

XrSpatialComponent
Me...

ağlar

meshes Text is not SVG - cannot display

22. şekil. Örnek sorgu sonucu

XrSpatialComponentDataQueryConditionEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • componentTypeCount, componentTypes dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • componentTypes, anlık görüntüden verileri alınacak XrSpatialComponentTypeEXT dizisidir.

Geçerli Kullanım (Dolaylı)

XrSpatialComponentDataQueryResultEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • entityIdCapacityInput, entityIds dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • entityIdCountOutput, entityIds içindeki XrSpatialEntityIdEXT sayısı veya entityIdCapacityInput yetersiz olduğunda gereken kapasitedir.
  • entityIds, XrSpatialEntityIdEXT dizisidir. entityIdCapacityInput 0 ise NULL olabilir.
  • entityStateCapacityInput, entityStates dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • entityStateCountOutput, entityStates içindeki XrSpatialEntityTrackingStateEXT sayısı veya entityStateCapacityInput yetersizse gerekli kapasitedir. Bu, her zaman entityIdCountOutput ile aynı olmalıdır.
  • entityStates, XrSpatialEntityTrackingStateEXT dizisidir. entityStateCapacityInput 0 ise NULL olabilir.
  • Gerekli entityIds boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulamalar, düzenli güncellemeler almak istediği öğeler için XrSpatialEntityEXT tanıtıcıları oluşturmak üzere xrCreateSpatialEntityFromIdEXT ile entityIds kullanabilir. Uygulama daha sonra bu XrSpatialEntityEXT tanıtıcılarını xrCreateSpatialUpdateSnapshotEXT ile kullanarak, sağlanan varlıklar için bileşenlerin çalışma zamanının bilinen en son verilerini içeren bir güncelleme anlık görüntüsü oluşturabilir.

Geçerli Kullanım (Dolaylı)

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, olası uzamsal öğe izleme durumlarını listeler:

Numaralandırmalar aşağıdaki anlamlara sahiptir:

Enum Açıklaması

XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT

Çalışma zamanı, bu varlığı izlemeyi durdurdu ve izlemeye devam etmeyecek.

XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT

Çalışma zamanı bu varlığı izlemeyi duraklattı ancak gelecekte izlemeye devam edebilir.

XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT

Çalışma zamanı şu anda bu varlığı izliyor ve bileşen verileri geçerli.

İZLEME

DURAKLATILDI

DURDURULDU

23. şekil XrSpatialEntityTrackingStateEXT

  • Çalışma zamanı, uzamsal öğenin takibini askıya alırsa ancak gelecekte takibini devam ettirme olasılığı varsa uzamsal öğenin durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT yerine XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT olarak değiştirebilir. Çalışma zamanının bunu yapabileceği durumlara örnek olarak (ancak bunlarla sınırlı olmamak üzere) uygulamanın giriş odağını kaybetmesi, belirli bir uzamsal varlığın kullanıcıdan doğru şekilde izlenemeyecek kadar uzakta olması veya izlenen çok fazla varlık olması ve çalışma zamanının izleme maliyetini azaltmak istemesi verilebilir. XrSpatialEntityTrackingStateEXT, uygulamanın her çalışma zamanının farklı izleme politikalarından etkilenmemesine yardımcı olur.
  • Çalışma zamanı, bir varlığın durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT iken XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak değiştirebilir.
  • Çalışma zamanı, uzamsal varlık kaybolursa ve takibi hiçbir zaman kurtarılamayacak veya devam ettirilemeyecekse uzamsal varlığın durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT yerine XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak değiştirmelidir. Örneğin, cihaz izlemeyi kaybeder, izleme oturumunu yeniden başlatır ancak ortamında yeniden yerelleştirme yapamaz ve bu nedenle bu izleme oturumunun keşfedilen varlıklarını yeni varlıklar olarak değerlendirir.
  • Bir varlığın izleme durumu XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak ayarlandıktan sonra çalışma zamanı bunu başka bir durumla değiştirmemelidir.
  • xrQuerySpatialComponentDataEXT kullanarak bir uzamsal varlığın bileşen verilerini sorgularken, varlık durumu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT ise çalışma zamanı, sonraki XrSpatialComponentDataQueryResultEXT zincirinde uygulama tarafından sağlanan arabelleklerin içeriğinde geçerli veriler ayarlamalıdır (must). Varlık durumu XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT ise çalışma zamanı, arabelleklerin içeriğini değiştirmemelidir.

Bileşen verileri için iki çağrılı deyim

XrSpatialBufferEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • Tampon verilerin XrSpatialBufferIdEXT değerini bufferId.
  • bufferType, bufferId içindeki veri türünü belirtmek için kullanılan XrSpatialBufferTypeEXT değeridir. Uygulama, arabelleğin gerçek verilerini almak için hangi işlevin kullanılacağını belirlemek üzere bufferType kullanabilir.

Bazı uzamsal bileşenler değişken boyutlu verilere sahiptir ve bu nedenle verilerini almak için iki çağrılı deyimin kullanılmasını gerektirir. Bu gibi durumlarda, uzamsal bileşen veri yapısı, bileşenin verilerinde gereken her değişken boyutlu arabellek için bir XrSpatialBufferEXT sağlar.

Aynı bufferId için çalışma zamanı, bir bileşen veri sorgusundan diğerine, hatta bir anlık görüntüden diğerine aynı verileri sağlamalıdır. Bileşen veri sorgusu çağrıları arasında farklı bir bufferId, uygulamaya ilgili bileşenin verilerinin değişmiş olabileceğini gösterir.

Geçerli Kullanım (Dolaylı)

XR_DEFINE_ATOM(XrSpatialBufferIdEXT)

XrSpatialBufferIdEXT, uzamsal bir bileşen için her türlü değişken boyutlu veriyi temsil etmek amacıyla kullanılır.

Çalışma zamanı, XrSpatialBufferIdEXT ve verilerini en azından onu içeren XrSpatialSnapshotEXT'nin yaşam döngüsü boyunca bellekte tutmalıdır. Çalışma zamanı, uygulamanın daha sonra oluşturduğu anlık görüntülerin bir parçası olarak aynı kimliği döndürmek için XrSpatialBufferIdEXT ve verilerini XrSpatialSnapshotEXT yaşam döngüsünden daha uzun süre bellekte tutabilir. Aynı XrSpatialBufferIdEXT için çalışma zamanı, uygun xrGetSpatialBuffer* işlevi aracılığıyla her zaman aynı verileri döndürmelidir.

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;

XrSpatialBufferTypeEXT numaralandırması, temsil edilen arabelleğin farklı veri türlerini tanımlar XrSpatialBufferIdEXT .

Numaralandırma Açıklamaları

xrGetSpatialBufferStringEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, karakter sayısı veya bufferCapacityInput'in yetersiz olması durumunda gereken kapasitedir.
  • buffer, char dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferStringEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_STRING_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_STRING_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Çalışma zamanı tarafından doldurulan buffer, boş değerle sonlandırılmış bir UTF-8 dizesi olmalıdır.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferStringEXT çağrılmadan önce etkinleştirilmelidir.
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput karakter değerlerinden oluşan bir diziye işaretçi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferUint8EXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, uint8_t dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferUint8EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT8_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferUint8EXT çağrılmadan önce etkinleştirilmelidir.
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput uint8_t değerlerinden oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferUint16EXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, uint16_t dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferUint16EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT16_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT16_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferUint16EXT çağrılmadan önce etkinleştirilmelidir.
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput uint16_t değerlerinden oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferUint32EXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tanıtıcıdır.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, uint32_t dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferUint32EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT değeridir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferUint32EXT çağrılmadan önce etkinleştirilmelidir
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput uint32_t değerlerinden oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferFloatEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, float dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferFloatEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferFloatEXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmiş olmalıdır.
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput float değerlerinden oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferVector2fEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, XrVector2f dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferVector2fEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT verilerini alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferVector2fEXT çağrılmadan önce etkinleştirilmelidir
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput XrVector2f yapılarından oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

xrGetSpatialBufferVector3fEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

  • snapshot, bir XrSpatialSnapshotEXT için tanıtıcıdır.
  • info, sorgulanacak arabellekle ilgili bilgileri içerir.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısı veya bufferCapacityInput yetersiz olduğunda gereken kapasitedir.
  • buffer, XrVector3f dizisidir. bufferCapacityInput 0 ise NULL olabilir.
  • Gerekli buffer boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrGetSpatialBufferVector3fEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT değerindedir.

XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).

XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferVector3fEXT çağrılmadan önce etkinleştirilmeli.
  • snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
  • info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır.
  • bufferCountOutput, bir uint32_t değerine işaretçi olmalıdır
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput XrVector3f yapılarından oluşan bir dizinin işaretçisi olmalıdır.

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrSpatialBufferGetInfoEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • Verileri alınacak arabellek için bufferId bir XrSpatialBufferIdEXT.

Geçerli Kullanım (Dolaylı)

#define XR_NULL_SPATIAL_BUFFER_ID_EXT 0

XR_NULL_SPATIAL_BUFFER_ID_EXT, geçersiz bir XrSpatialBufferIdEXT değerini temsil eden ayrılmış bir değerdir. Yalnızca özel olarak izin verildiğinde API işlevlerine iletilebilir ve API işlevlerinden döndürülebilir.

Güncelleme Anlık Görüntüsü Oluşturma

xrCreateSpatialUpdateSnapshotEXT işlevi şu şekilde tanımlanır:

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

Parametre Açıklamaları

Uygulama, anlık görüntü oluşturmak ve çalışma zamanı tarafından bilinen belirli varlıklar için en son bileşen verilerini almak üzere xrCreateSpatialUpdateSnapshotEXT işlevini kullanabilir. Uygulamalar, anlık görüntüyü oluştururken XrSpatialEntityEXT herkese açık kullanıcı adlarını ve ilgilendikleri bileşen türlerini sağlayabilir.

Uygulama, verileri anlık görüntüye dahil edilmesi gereken bileşenlerin listesini filtrelemek için XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes kullanabilir. Uygulama, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde geçerli bir uzamsal bileşen türleri listesi sağlıyorsa çalışma zamanı, anlık görüntüye yalnızca XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde sağlanan bileşenlerden en az birine sahip uzamsal öğeleri dahil etmelidir. Ayrıca çalışma zamanı, yalnızca anlık görüntüdeki bileşenlerin verilerini içermelidir.

XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içindeki XrSpatialComponentTypeEXT öğelerinden herhangi biri, spatialContext oluşturulurken XrSpatialContextCreateInfoEXT :: capabilityConfigs öğesine iletilen uzamsal özellikler için etkinleştirilmemişse çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT değerini döndürmelidir (must).

Uygulama, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde uzamsal bileşen türlerinin listesini sağlamazsa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: entities içinde listelenen tüm uzamsal varlıkları anlık görüntüye dahil etmelidir ve spatialContext için yapılandırılan özelliklerin tüm etkin bileşenlerinin verilerini içermelidir.

Çalışma zamanı, snapshot içinde XrSpatialUpdateSnapshotCreateInfoEXT :: entities bölümünde listelenmeyen uzamsal varlıkları içermemelidir.

Uygulama istediği sayıda anlık görüntü oluşturabilir ancak her yeni anlık görüntü için ayrılan belleğe dikkat etmeli ve artık ihtiyaç duymadığı anlık görüntüleri silmelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrSpatialUpdateSnapshotCreateInfoEXT yapısı şu şekilde tanımlanır:

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;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • entityCount, entities dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • entities, çalışma zamanının anlık görüntüye bileşen verilerini eklemesi gereken bir XrSpatialEntityEXT dizisidir.
  • componentTypeCount, componentTypes dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • componentTypes, çalışma zamanının anlık görüntüye verileri eklemesi gereken bir XrSpatialComponentTypeEXT dizisidir.
  • baseSpace, güncellemenin tüm konumlarının XrSpatialSnapshotEXT bulunacağı XrSpace'tir.
  • time, XrSpatialSnapshotEXT güncellemesinin tüm konumlarının bulunacağı XrTime değeridir.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, XrSpatialUpdateSnapshotCreateInfoEXT kullanılmadan önce etkinleştirilmelidir.
  • type XR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT olmalıdır
  • next, NULL veya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
  • entities, entityCount geçerli XrSpatialEntityEXT tutma yerinden oluşan bir dizinin işaretçisi olmalıdır.
  • componentTypeCount, 0 değilse componentTypes, componentTypeCount geçerli XrSpatialComponentTypeEXT değerinden oluşan bir dizinin işaretçisi olmalıdır.
  • baseSpace geçerli bir XrSpace hesabı olmalıdır
  • entityCount parametresi 0 değerinden büyük olmalıdır.
  • baseSpace ve entities öğelerinin her ikisi de aynı XrSession'dan oluşturulmuş, ayrılmış veya alınmış olmalıdır.

Anlık görüntüyü sil

xrDestroySpatialSnapshotEXT işlevi şu şekilde tanımlanır:

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

Parametre Açıklamaları

Uygulama, XrSpatialSnapshotEXT herkese açık kullanıcı adını ve bununla ilişkili kaynakları yok etmek için xrDestroySpatialSnapshotEXT'yi çağırabilir.

Geçerli Kullanım (Dolaylı)

İleti Dizisi Güvenliği

  • snapshot ve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Ortak Bileşenler

Sınırlı 2D

Bileşen verileri

XrSpatialBounded2DDataEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • center, sınırlı 2D bileşenin geometrik merkezini tanımlayan bir XrPosef'dir.
  • extents, sınırlı 2D bileşenin x ekseni (extents.width) ve y ekseni (extents.height) boyunca uzantılarıdır ve center üzerinde ortalanır.

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT öğesinin extents, düzlemin koordinat sisteminin x-y düzlemindeki varlığın boyutunu ifade eder. Konumu {0, 0, 0}, dönüşü {0, 0, 0, 1} (dönüş yok) ve boyutu {1, 1} olan bir düzlem, bileşenin alanında +Z yönünü gösteren ön yüz normal vektörüyle {0, 0, 0} merkezli 1 metre x 1 metrelik bir düzlemi ifade eder.

X X Y Y Z Z Yükseklik Yükseklik Y Y Z Z X X Dikey düzlem Dikey düzlem Yatay düzlem Yatay düzlem Genişlik Genişlik Genişlik Genişlik Yükseklik Yükseklik

24. şekil. Bounded2D Bileşen Koordinat Sistemi

Not

OpenXR, düzlem normali +Z olan bir X-Y düzlemi kullanır ancak diğer API'ler, düzlem normali +Y olan bir X-Z düzlemi kullanabilir. X-Y düzlemi, +X ekseni etrafında -π/2 radyan döndürülerek X-Z düzlemine dönüştürülebilir.

Geçerli Kullanım (Dolaylı)

Verileri sorgulamak için bileşen listesi yapısı

XrSpatialComponentBounded2DListEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • boundCount, bounds dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • bounds, XrSpatialBounded2DDataEXT dizisidir.

XrSpatialComponentBounded2DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.

boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialDiscoverySnapshotCompleteEXT'ten oluşturulduysa çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace ve XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time içinde XrSpatialBounded2DDataEXT :: center sağlamalıdır.

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT'ten oluşturulduysa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace ve XrSpatialUpdateSnapshotCreateInfoEXT :: time içinde XrSpatialBounded2DDataEXT :: center sağlamalıdır.

Geçerli Kullanım (Dolaylı)

Yapılandırma

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum değerini XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir. Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.

Sınırlı 3D

Bileşen verileri

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, verileri için XrBoxf kullanıyor.

Verileri sorgulamak için bileşen listesi yapısı

XrSpatialComponentBounded3DListEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • boundCount, bounds dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • bounds, XrBoxf dizisidir.

XrSpatialComponentBounded3DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .

boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialDiscoverySnapshotCompleteEXT'ten oluşturulduysa çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time konumundaki XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace içinde XrBoxf :: center değerini sağlamalıdır (must).

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT'ten oluşturulduysa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: time konumundaki XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace içinde XrBoxf :: center sağlamalıdır (must).

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, XrSpatialComponentBounded3DListEXT kullanılmadan önce etkinleştirilmelidir
  • type XR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT olmalıdır
  • next, NULL veya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
  • bounds, boundCount XrBoxf yapılarından oluşan bir diziye işaretçi olmalıdır.
  • boundCount parametresi 0 değerinden büyük olmalıdır.
Yapılandırma

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum'u XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir . Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.

Ebeveyn

Bileşen verileri

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, verileri için XrSpatialEntityIdEXT kullanıyor.

Verileri sorgulamak için bileşen listesi yapısı

XrSpatialComponentParentListEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • parentCount, parents dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • parents, XrSpatialEntityIdEXT dizisidir.

XrSpatialComponentParentListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .

parentCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.

Geçerli Kullanım (Dolaylı)

  • XrSpatialComponentParentListEXT kullanılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir
  • type XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT olmalıdır
  • next, NULL veya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
  • parents, parentCount XrSpatialEntityIdEXT değerlerinden oluşan bir dizinin işaretçisi olmalıdır
  • parentCount parametresi 0 değerinden büyük olmalıdır.
Yapılandırma

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum'u XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir . Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.

Mesh 3D

Bileşen verileri

XrSpatialMeshDataEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • origin, ağın kaynağını tanımlayan bir XrPosef'dir. Ağın tüm köşeleri bu orijine göre olmalıdır.
  • vertexBuffer, bu bileşenin bulunduğu varlığın köşe arabelleğini temsil eden bir arabelleğin kimliğini sağlayan bir XrSpatialBufferEXT'tir. Köşe noktalarının konumu origin ile ilişkili olmalıdır.
  • indexBuffer, vertexBuffer içindeki ağ köşelerinin dizinlerini belirten üçgen dizinleri dizisini temsil eden bir arabelleğin kimliğini sağlayan bir XrSpatialBufferEXT'dir. Üçgen dizinleri saat yönünün tersine döndürülmeli ve üç dizin bir üçgeni belirtmelidir.

XrSpatialMeshDataEXT kullanan bileşen türü, vertexBuffer ve indexBuffer için XrSpatialBufferTypeEXT değerini belirtmelidir.

Geçerli Kullanım (Dolaylı)

Verileri sorgulamak için bileşen listesi yapısı

XrSpatialComponentMesh3DListEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.
  • meshCount, meshes dizisindeki öğe sayısını açıklayan bir uint32_t değeridir.
  • meshes, XrSpatialMeshDataEXT dizisidir.

Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içine XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT ekleyerek ve XrSpatialComponentDataQueryResultEXT'nin sonraki işaretçi zincirine XrSpatialComponentMesh3DListEXT ekleyerek XrSpatialSnapshotEXT'teki uzamsal varlıkların 3D ağ bileşenini sorgulayabilir.

XrSpatialComponentMesh3DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .

meshCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.

Çalışma zamanı tarafından meshes dizisinde doldurulan XrSpatialMeshDataEXT için XrSpatialMeshDataEXT :: vertexBuffer için XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT olmalıdır ve XrSpatialMeshDataEXT :: indexBuffer için XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT olmalıdır.

Geçerli Kullanım (Dolaylı)

Yapılandırma

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, bu bileşeni destekleyen özelliğin XrSpatialCapabilityConfigurationBaseHeaderEXT türetilmiş yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine enum'u ekleyerek bu özelliği etkinleştirebilir.

Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.

İzleme durumu filtreleri

XrSpatialFilterTrackingStateEXT yapısı şu şekilde tanımlanır:

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

Üye Açıklamaları

Uygulama, keşfi yalnızca izleme durumu trackingState olan varlıklarla sınırlamak için XrSpatialDiscoverySnapshotCreateInfoEXT'nin sonraki zincirinde XrSpatialFilterTrackingStateEXT'yi kullanabilir.

Uygulama, bir anlık görüntüden bileşen veri sorgusunu yalnızca izleme durumu trackingState olan varlıklarla sınırlamak için sonraki XrSpatialComponentDataQueryConditionEXT zincirinde XrSpatialFilterTrackingStateEXT'yi kullanabilir.

Geçerli Kullanım (Dolaylı)

Örnek kod

Uygulama Kullanımı

Uygulamalar genellikle uzamsal varlık uzantısını aşağıdaki kalıpta kullanır:

Uzamsal varlıkları keşfetme ve bileşen verilerini sorgulama

Aşağıdaki örnek kodda, "Foo" özelliği için uzamsal varlıkların nasıl bulunacağı ve bileşen verilerinin nasıl sorgulanacağı gösterilmektedir.

/****************************/
/* 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));

Sorgu arabelleği verileri

Aşağıdaki örnek kodda, XrSpatialBufferEXT sağlayan bir bileşenin verilerinin nasıl alınacağı gösterilmektedir.

/****************************/
/* 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.
  }
}

Uzantı yönergeleri

  • Bir uzantı, uzamsal varlık hakkında ek veriler sağlayan yeni bir XrSpatialComponentTypeEXT tanımlıyorsa

  • Uzantılar, keşif için ek filtreler sağlamak üzere XrSpatialDiscoverySnapshotCreateInfoEXT'yi genişleten yapılar tanımlayabilir. Anlık görüntüyü oluşturmak için kullanılan filtreler, uzamsal bağlamın yapılandırmasını etkilememelidir. Bunun yerine, uzamsal bağlamın mevcut yapılandırması (ve dolayısıyla temel hizmetlerin mevcut yapılandırması) tarafından izlenen anlık görüntüye hangi varlıkların ve verilerin dahil edileceği konusunda çalışma zamanına ipuçları sağlamak için kullanılmalıdır.

  • Bir uzantı yeni bir XrSpatialCapabilityEXT tanımlıyorsa

  • Bir uzantı yeni bir XrSpatialCapabilityFeatureEXT tanımlıyorsa XrSpatialCapabilityConfigurationBaseHeaderEXT'in sonraki işaretçisine zincirlenebilecek ve uygulamanın XrSpatialContextEXT oluştururken özelliği etkinleştirmek için kullanabileceği karşılık gelen bir yapılandırma yapısı da tanımlamalıdır.

  • Yeni bir XrSpatialCapabilityEXT tanımlayan uzantı, spesifikasyon için bu şablonu kullanmalıdır:

    • Genel Bakış
    • Çalışma zamanı desteği
    • Yapılandırma
    • Garantili bileşenler
    • Örnek Kod
  • Yeni bir XrSpatialComponentTypeEXT tanımlayan uzantı, spesifikasyon için bu şablonu kullanmalıdır:

    • Bileşen verileri
    • Verileri sorgulamak için bileşen listesi yapısı
    • Yapılandırma
  • Uygulamaya XrSpatialBufferIdEXT sağlayan bir API yazarken, uygulamaya arabelleğin veri türünü bildirmek için API'ye XrSpatialBufferTypeEXT eşlik etmelidir. Uygulama, arabelleğin gerçek içeriğini almak için uygun bir xrGetSpatialBuffer* işlevi kullanabilir.

Semantik Etiket Tasarımı ve Uzantı Kuralları

Bu uzantı, bir varlığın semantik etiket bilgilerini iletmek için herhangi bir bileşen tanımlamasa da bu tür bir bileşeni tanımlayan tüm uzantılar için tasarım kurallarını ve yönergelerini belirler. Aşağıdaki metinde " should " ve " must " kelimeleri, çalışma zamanı uygulamasını veya API'yi kullanan bir uygulamayı kısıtlamak yerine bu tür işlevlerin yazarlarını kısıtlar.

  • Bir uzantı, herhangi bir XrSpatialCapabilityEXT için semantik etiketler tanımlıyorsa bunu yeni bir XrSpatialComponentTypeEXT ve bu bileşenin verileri olacak bir dizi etiket ("semantik etiket grubu") içeren yeni bir numaralandırma tanımlayarak yapması gerekir.
  • Anlamsal etiket grubunu temsil eden bir sıralama, varlığın bu gruptaki etiketlerden hiçbirine dahil edilmediğini belirtmek için bir değere sahip olmalıdır. Bu numaralandırmanın adı "UNCATEGORIZED" ifadesini içermelidir (ör. XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT). Bu değer, uygulamalara çalışma zamanının bu varlığı tanıdığını ancak bu varlığın kategorize edildiği başka anlamsal etiket kümeleri olduğunu gösterir.
  • xrEnumerateSpatialCapabilityComponentTypesEXT içinde yeni tanımlanan bu XrSpatialComponentTypeEXT'nin numaralandırılması, çalışma zamanının bu bileşen türüne karşılık gelen semantik etiket grubunu (ve dolayısıyla grupta tanımlanan etiketleri) desteklediği anlamına gelir.
  • Uygulamalar, bileşen türünün numaralandırıldığı özelliğin yapılandırma yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents dizisine ilgili XrSpatialComponentTypeEXT'yi ekleyerek bu semantik etiket grubuna ait etiketleri olan varlıkları keşfetme isteklerini ifade eder.
  • Tek bir uzamsal varlığın üzerinde birden fazla bileşen bulunabilir ve her bileşen, kendi semantik etiket grubundan bir etiket sağlayabilir. Sandalye, koltuk, masa gibi değerlere sahip olabilecek bazı varsayımsal semantik etiket kümeleri (XrSpatialObjectSemanticLabel) içeren aşağıdaki örneği inceleyin. XrSpatialSofaBrand (IKEA, Wayfair vb. değerler içerebilir) ve XrSpatialIkeaSofa (IKEA'nın belirli koltuk modeli adlarını içerebilir). Bu senaryoda, aynı koltuk öğesi 3 bileşenin tümüne (3 anlamsal etiket grubunun tümünden etiketler) sahiptir ve her biri öğe hakkında farklı ayrıntı düzeyinde bilgi verir.
  • Bir uzantı, UNCATEGORIZED etiketine ek olarak birden fazla etiket içeren yeni bir semantik etiket grubu sağlayan yeni bir XrSpatialComponentTypeEXT tanımlıyorsa uzantı, uygulamaların yalnızca ilgili bileşen türüne karşılık gelen semantik etiket grubunda tanımlanan etiketlerin bir alt kümesini etkinleştirmesine olanak tanıyan bir XrSpatialCapabilityFeatureEXT tanımlamayı düşünmelidir. Özellik yapılandırmasının bir sonraki zincirinde sağlanan bu alt küme, çalışma zamanlarının izleme ardışık düzenlerini optimize etmesi ve yalnızca sağlanan alt kümeyi izlemesi için bir ipucu görevi görür. Bu tür bir özellik yapısına örnek aşağıda verilmiştir.
  • Uzantılar, mevcut anlamsal etiket grubu listesine etiket eklememelidir. Bunun yerine, yeni eklenen numaralandırıcıların yanı sıra aynı semantiğe ve diğer kümedeki değerlere eşit değerlere sahip eşdeğer numaralandırıcılar içeren yeni bir numaralandırma tanımlamaları gerekir. Yeni tanımlanan anlamsal etiket grubunun spesifikasyonu, eski etiket grubu ile yeni etiket grubu arasındaki eşlemeyi de oluşturmalıdır. Aşağıdaki örneğe bakın.
Anlamsal Etiket Alt Kümesi İçin Örnek Uzamsal Özellik Tanımı
// 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;
Örnek Mekansal Anlamsal Etiket Uzantısı
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;

Mevcut XrSpatialPlaneSemanticLabelEXT'yi kapı ve pencereleri temsil eden değerlerle genişletmek için bir uzantının XrSpatialExamplePlaneSemanticLabelExtensionEXT numaralandırmasını tanımladığı yukarıdaki örneği ele alalım. Yeni sıralamanın spesifikasyonu, aşağıdaki form için metin içermelidir:

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
|====

Yeni Makrolar

Yeni Temel Türler

  • XrSpatialBufferIdEXT
  • XrSpatialEntityIdEXT

Yeni nesne türleri

Yeni Komutlar

Yeni Yapılar

Yeni Enum Veri Türleri

Yeni Enum Sabitleri

  • XR_EXT_SPATIAL_ENTITY_EXTENSION_NAME
  • XR_EXT_spatial_entity_SPEC_VERSION
  • XrObjectType'i genişletme:

    • XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXT
    • XR_OBJECT_TYPE_SPATIAL_ENTITY_EXT
    • XR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
  • XrResult'ı genişletme:

    • 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
  • XrStructureType'ı genişletme:

    • 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

Sayılar

  • Tek bir varlık her zaman yalnızca tek bir yetenekten mi türetilir?

    • Çözüldü
    • Cevap: Hayır. Bu tamamen çalışma zamanının kendi izleme özelliklerine ve algılanan bir varlığı nasıl temsil etmek istediğine bağlıdır. Spesifikasyon, minimum beklentiyi belirlemek için belirli bir özelliğin garanti edilen bileşenleri dışında, uzamsal varlığın belirli bir temsilini zorunlu kılmaz. Çalışma zamanı, ayrı özellikler tarafından algılanan varlıkları birleştirebilir ve bunları, tanımlanmasına yardımcı olan tüm özelliklerin garantili bileşenleriyle tek bir varlık olarak temsil edebilir. Örneğin, masalar hem düzlem izleme özelliği hem de nesne izleme özelliğiyle algılanabilir. Düzlem izleme, öğe üzerinde XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT bileşenini, nesne izleme ise XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT bileşenini sağlar. Belirli bir çalışma zamanı, tabloyu her biri kendi garantili bileşen grubuna sahip 2 ayrı varlık olarak sağlayabilir. Diğer çalışma zamanları ise tabloyu temsil etmek için yalnızca 1 varlık sağlayabilir ve aynı varlıkta hem XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT hem de XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT bulunabilir. Burada dikkat edilmesi gereken nokta, belirli bir uzamsal varlığın herhangi bir bileşen türünde en fazla tek bir bileşene sahip olabileceğidir. Bu nedenle, farklı özellikler tarafından üretilen bileşen verileri belirli bir varlık için çakışıyorsa çalışma zamanı bunları 2 ayrı varlık olarak temsil etmelidir.

Sürüm Geçmişi

  • Düzeltme 1, 12.04.2024 (Nihav Jain, Google)

    • İlk uzantı açıklaması