XR_EXT_spatial_entity

Name String

XR_EXT_spatial_entity

Uzantı Türü

Örnek uzantısı

Kayıtlı Uzantı Numarası

741

Düzeltme

1

Onay durumu

Onaylanma tarihi

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 temelleri tanıtır. Bu, işlevselliğin ilgili ancak farklı birkaç alanı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 bunlarla etkileşim kurulur. Bu uzantıda bu işlevsel alanlardan herhangi birinin somut tanımları bulunmadığından, resmi spesifikasyon metni biraz soyut olma eğilimindedir. Bu uzantı spesifikasyonu metninde yer alan örnekler, bazen açıklama amacıyla, yakında çıkacak veya varsayımsal bir ilgili uzantıda tanımlanan işlevlere atıfta bulunur ve bu ek işlevleri sınırlamaz ya da belirtmez.

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

  • Mekansal öğeler : İşlevsellik , kendi başlarına çok az işlev sağlayan öğeler etrafında şekillenir.
  • Uzamsal bileşenler : Bu öğeler, veri ve davranış sağlayan bileşenlerle ilişkilidir.
  • Mekansal bileşen türleri : Her mekansal bileşen belirli bir bileşen türündedir ve belirli bir varlık , belirli bir bileşen türünde en fazla tek bir bileşene sahiptir .
  • Mekansal bağlam : Tüm mekansal varlık etkileşimi, ilk kullanıma hazırlama ve yapılandırma aşamasından sonra bağlamda gerçekleşir.
  • Uzamsal özellikler : Uzamsal öğe manipülasyonu, genel olarak özellikler tarafından sağlanır . Bir özellik, işlevselliğin bir birimidir. Örneğin (sınırlama olmaksızın) uygulama tanımlı sabit noktalar, düzlem algılama veya görüntü izleme. Her bir ö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, bu özellik tarafından kullanıma sunulan her öğede bileşenlerin 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 olduğunu ("garantili") belirtir. Aynı uzantı veya diğerleri, 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, hangi özelliğin oluşturduğuna bakılmaksızın aynı şekilde kullanılabilir.
  • Uzamsal özellikler : Ayrıca, bazı özelliklerin yapılandırılması gerekir ve bu nedenle özellikler ile parametrelendirilir .

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

Bazı uygulamalar capability nesneleri için farklı derecelerde parametrelendirme gerektirebileceğinden bu uzantı , mevcut sistemde belirli bir capability nesnesiyle ilişkili desteklenen capability özelliklerini numaralandırmak 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

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

  • Fiziksel (ör. duvarlar ve zeminler gibi düzlemsel yüzeyler, sandalyeler ve kitaplıklar gibi nesneler vb.)
  • Sanal (ör. başka bir uygulama veya kullanıcı tarafından yerleştirilen ve paylaşılan içerik)
  • Uygulama tarafından tanımlanmış (ör. bir alanı "oturma odası" veya "mutfak" olarak işaretleyen ya da bir noktayı TV'nin yerleştirileceği konum olarak işaretleyen uygulama)

İşlem sistemi aracılığıyla kullanıma sunulan öğeler (ör. kontrol cihazları veya gözle kontrol) uzamsal öğeler olarak modellenmez.

OpenXR'deki uzamsal varlıklar, Varlık-Bileşen sistemi olarak modellenir . Her mekansal öğenin bir bileşenler grubu vardır ve her bileşen, söz konusu öğe için benzersiz bir veri ve davranış grubu sağlar.

Uzamsal öğeler, XrSpatialEntityIdEXT atomu veya XrSpatialEntityEXT tutamacıyla temsil edilir. Bunlarla ilgili ayrıntılar Uzamsal Öğe Temsilleri bölümünde verilmiştir.

Üç Boyutlu Bileşen Türleri

Bir uzamsal varlık, bu varlıkla ilgili veri veya davranış sağlayan bir veya daha fazla bileşene sahiptir. Bu uzantı tarafından tanımlanan bazı yaygın bileşenler için Common Components (Yaygın 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_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;

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

Listelenen bileşen türlerinin tümü bu uzantı tarafından tek başına sağlanmaz. Bazıları, belgelendiği gibi, örnek oluşturma sırasında ek uzantıların etkinleştirilmesini gerektirir.

Numaralandırılmış değerler şunlardır:

Enum Açıklaması

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

Bir mekansal öğenin 2D sınırlarını sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded2DListEXT, ilgili veri yapısı ise XrSpatialBounded2DDataEXT'dir.

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT

Bir uzamsal öğenin 3D sınırlarını sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded3DListEXT, ilgili veri yapısı ise XrBoxf'dir.

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT

Bir mekansal öğe 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

Bir uzamsal varlık için 3D ağ sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DListEXT; ilgili veri yapısı XrSpatialMeshDataEXT

XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT

Bir uzamsal varlık için düzlem hizalama numaralandırmasını sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneAlignmentListEXT; ilgili veri yapısı XrSpatialPlaneAlignmentEXT'dir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenmiştir).

XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT

Bir uzamsal öğe için 2D ağ sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh2DListEXT; ilgili veri yapısı XrSpatialMeshDataEXT (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenmiştir)

XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT

Uzamsal bir öğe için 2 boyutlu sınır poligonu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPolygon2DListEXT; ilgili veri yapısı XrSpatialPolygon2DDataEXT (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT

Bir düzlem için anlamsal etiket sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneSemanticLabelListEXT; ilgili veri yapısı XrSpatialPlaneSemanticLabelEXT (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ı XrSpatialMarkerDataEXT (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT

Bir sahne için anlamsal etiket sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentObjectSemanticLabelListEXT'dir . İlgili veri yapısı XrSpatialObjectSemanticLabelEXT'dir . (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'dir. İ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'dir. İlgili veri yapısı XrSpatialMouseSemanticLabelEXT'dir (XR_EXT_spatial_object_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT

Bir bağlantı için konum sağlayan bileşen. İlgili liste yapısı XrSpatialComponentAnchorListEXT; ilgili veri yapısı XrPosef (XR_EXT_spatial_anchor uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT

Bir uzamsal varlık için kalıcı UUID'yi sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPersistenceListEXT; ilgili veri yapısı XrSpatialPersistenceDataEXT (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'dir . (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT

Bir uzamsal öğenin 3D ağının normallerini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DNormalsListEXT; ilgili veri yapısı XrSpatialBufferEXT (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenmiştir)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT

Bir uzamsal öğenin 3D ağı için köşe başına anlamsal etiketler sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DVertexSemanticLabelsListEXT; 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_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT

Bir uzamsal öğenin 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; karşılık gelen liste yapısı XrSpatialComponentObjectSemanticLabelListANDROID; karşılık gelen veri yapısı XrSpatialObjectSemanticLabelANDROID (XR_ANDROID_spatial_object_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID

Bir varlıkta ışın dökümü isabetinin pozunu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentRaycastResultListANDROID; ilgili veri yapısı XrSpatialRaycastResultDataANDROID'dir (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID

Eklenen varlığı kapsayan varlığın varlık kimliğini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentSubsumedByListANDROID; ilgili veri yapısı XrSpatialEntityIdEXT (XR_ANDROID_spatial_component_subsumed_by uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS

Ayakkabı kutusunun boyutlarını ve oda türünü sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentRoomListANDROIDSYS; karşılık gelen veri yapısı XrSpatialRoomDataANDROIDSYS (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS

Bir sınır yüzeyinin malzeme türünü sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentMaterialTypeListANDROIDSYS; karşılık gelen veri yapısı XrSpatialMaterialTypeANDROIDSYS (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 eklenir)

XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS

Bir odanın boşluğunu sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentRoomEmptinessListANDROIDSYS; karşılık gelen veri yapısı float (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir)

XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1

Ekli öğe üzerindeki doluluk ızgarası hakkında bilgi sağlayan bileşen. İlgili liste yapısı XrSpatialComponentOccupancyGridListANDROIDX1; ilgili veri yapısı XrSpatialOccupancyGridDataANDROIDX1'dir (XR_ANDROIDX1_spatial_occupancy_grid uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID

Dörtgen açıklamasını tanımlayan bir bileşen. İlgili liste yapısı XrSpatialComponentAnnotationQuadListANDROID; ilgili veri yapısı XrSpatialAnnotationQuadDataANDROID'dir (XR_ANDROID_spatial_annotation_tracking uzantısı tarafından eklenir).

XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2

Bir sokak görünümü geometrisinin meta verilerini 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 eklenmiştir)

Uzamsal Özellikler ve Kurulum

Uzamsal özellikler, üzerinde belirli bir bileşen grubu bulunan öğeleri keşfetmek için bir çalışma zamanının yeteneklerini tanımlar. Uygulamalar, XrSpatialContextEXT oluşturulurken uzamsal bir özelliğin bileşenlerini etkinleştirir. Çalışma zamanı ise keşfedilen öğelerde yalnızca etkinleştirilen bileşenleri sağlamalıdır. Örneğin, bir çalışma zamanı belirli bir özelliğin bileşenlerinden birinin "anlamsal etiketler" olduğunu bildiriyorsa uygulama, bu özelliğin yapılandırması aracılığıyla anlamsal etiketleri etkinleştirebilir ve çalışma zamanı, yapılandırılmışsa yalnızca anlamsal etiket bileşenini sağlamalıdır.

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ılmış değerler şunlardır:

Enum Açıklaması

XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT

Uçak takibi (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 izleme (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ANCHOR_EXT

Uzamsal bağlantılar oluşturma özelliği (XR_EXT_spatial_anchor uzantısı tarafından eklenir)

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT

Düzlemsel referans görüntüleri 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 gönderme (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklendi)

XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS

Odayı takip etme özelliği (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir)

XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS

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

XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID

Ek açıklama 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 eklenir)

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, XrInstance için bir tutamaktır .
  • systemId, uzamsal özellikleri listelenecek XrSystemId'dir.
  • capabilityCapacityInput, capabilities dizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.
  • capabilityCountOutput, özelliklerin sayısıdır veya capabilityCapacityInput yetersizse gereken kapasitedir.
  • capabilities, XrSpatialCapabilityEXT dizisidir . capabilityCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli capabilities boyutunun alınmasıyla ilgili 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ı, uzantısı instance için etkinleştirilmeyen uzamsal özellikleri numaralandırmamalıdır.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrEnumerateSpatialCapabilitiesEXT çağrılmadan önce etkinleştirilmelidir.
  • instance geçerli bir XrInstance işleyeni olmalıdır.
  • capabilityCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • capabilityCapacityInput, 0 değilse capabilities, capabilityCapacityInput XrSpatialCapabilityEXT değerleri dizisine yönelik 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, XrInstance için bir tutamaktır .
  • systemId, uzamsal özellik bileşenleri numaralandırılacak XrSystemId'dır.
  • capability, bileşenlerin numaralandırılacağı XrSpatialCapabilityEXT'dir.
  • capabilityComponents , uygulama tarafından ayrılmış bir dizinin doldurulduğu bir giriş/çıkış yapısı olan XrSpatialCapabilityComponentTypesEXT işaretçisidir.

Bu işlev, verilen özelliğin yapılandırıldığı şekilde sistemdeki öğelerinde sağladığı bileşen türlerini numaralandırır.

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

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

Çalışma zamanı, uzantısı instance için etkinleştirilmeyen mekansal bileşen türlerini numaralandırmamalıdır.

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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • componentTypeCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • componentTypeCountOutput, bileşen türlerinin sayısıdır veya componentTypeCapacityInput yetersizse gereken kapasitedir.
  • componentTypes, XrSpatialComponentTypeEXT dizisidir . componentTypeCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli componentTypes boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Geçerli Kullanım (Dolaylı)

Uzamsal yetenek özellikleri

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 sunulan parametreler bulunur. Parametreleştirme/yapılandırılabilirlik ile ilgili bu boyutlar, yetenek özellikleri olarak bilinir. Örneğin, bir resim izleme özelliği için çalışma zamanı, izlenen resimlerin sabit olup olmadığını uygulamanı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 öğelerde (ör. izlenen resimde) bulunan bileşen türleri kümesini 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 numaralandırır .

Her özellik işlevinin etkinleştirilmesi için karşılık gelen bir yapılandırma yapısı vardır. Bu tür yapılandırma yapıları, ilgili capability nesnesi'nin XrSpatialCapabilityConfigurationBaseHeaderEXT :: next öğesine zincirlenmelidir.

Numaralandırılmış değerler şunlardır:

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'dir (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'dir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT

Uygulamaların, çalışma zamanında izlenecek XrSpatialObjectSemanticLabelEXT'deki etiketlerin bir alt kümesini belirtmesine olanak tanıyan uzamsal özellik. İlgili yapılandırma yapısı XrSpatialFeatureObjectSemanticLabelSubsetEXT'dir . (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 boyutunu otomatik olarak tahmin etmeyi destekler. İlgili yapılandırma yapısı XrSpatialImageSizeEXT'dir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT

Çalışma zamanı XrSpatialImageStaticOptimizationEXT'yi destekliyor . İlgili yapılandırma yapısı XrSpatialImageStaticOptimizationEXT'dir . (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'dir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).

XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT

Ortamın su geçirmez ağını izleme özelliği İlgili yapılandırma yapısı XrSpatialFeatureTrackWatertightMeshEXT'dir . (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, XrInstance için bir tutamaktır .
  • systemId, yerleşim özelliği özelliklerinin numaralandırılacağı XrSystemId'dir.
  • capability, özelliklerin numaralandırılacağı XrSpatialCapabilityEXT'dir.
  • capabilityFeatureCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • capabilityFeatureCountOutput, özelliklerin sayısıdır veya capabilityFeatureCapacityInput yetersizse gerekli kapasitedir.
  • capabilityFeatures, XrSpatialCapabilityFeatureEXT dizisidir . capabilityFeatureCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli capabilityFeatures boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, xrEnumerateSpatialCapabilityFeaturesEXT işlevini kullanarak belirli bir sistemin XrSpatialCapabilityEXT için desteklediği özellikleri keşfeder .

Özellikleri kullanıma sunulan yetenekler için uygulama, etkinleştirilecek özelliği veya özellikleri seçer ve XrSpatialContextCreateInfoEXT :: capabilityConfigs içinde yetenek yapılandırma yapılarının bir sonraki zincirinde ilgili yapılandırma yapısını sağlar .

capability , xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılan bir özellik değilse çalışma zamanı mutlaka XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT döndürmelidir .

Çalışma zamanı, uzantısı instance için etkinleştirilmemiş olan uzamsal özelliklerin özelliklerini numaralandırmamalıdır.

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrEnumerateSpatialCapabilityFeaturesEXT çağrılmadan önce etkinleştirilmelidir.
  • instance geçerli bir XrInstance işleyeni olmalıdır.
  • capability geçerli bir XrSpatialCapabilityEXT değeri olmalıdır.
  • capabilityFeatureCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • capabilityFeatureCapacityInput, 0 değilse capabilityFeatures, capabilityFeatureCapacityInput XrSpatialCapabilityFeatureEXT değerleri dizisine yönelik 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_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

Uzamsal Bağlam

Mekansal bağlam oluşturma

XR_DEFINE_HANDLE(XrSpatialContextEXT)

XrSpatialContextEXT işleyici, kullanıcının ortamındaki bir dizi uzamsal öğeyi keşfetme ve güncelleme kaynaklarını temsil eder. Uygulama, bu uzantıdaki diğer işlevleri kullanarak mekansal öğeleri keşfetmek ve güncellemek için bu işleyiciyi 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, mekansal bağlam parametrelerini belirtmek için kullanılan XrSpatialContextCreateInfoEXT'dir.
  • future, XrFutureEXT öğesine yönelik bir işaretçidir .

Uygulama, aşağıdakileri yaparak XrSpatialContextEXT tutacağı oluşturabilir:

Çalışma zamanı, XrSpatialContextCreateInfoEXT ::capabilityConfigCount 0 ise XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir. Bir uzamsal bağlam tanıtıcısı için en az bir capability nesnesi gerekir.

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

Çalışma zamanı, XrSpatialContextCreateInfoEXT :: capabilityConfigs içindeki herhangi bir XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount 0 ise XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT döndürmelidir. Bir özellik yapılandırması, söz konusu özellik için etkinleştirilecek bileşen türlerinin listesi olmadan tamamlanamaz.

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

XrSpatialContextCreateInfoEXT :: capabilityConfigs zincirindeki yapılardan herhangi biri , xrEnumerateSpatialCapabilityFeaturesEXT içinde bu özellik için numaralandırılmamış bir XrSpatialCapabilityFeatureEXT ile eşleşirse çalışma zamanı bu XrSpatialCapabilityFeatureEXT yapısını yoksaymalıdır.

Çalışma zamanı, XrSpatialContextCreateInfoEXT :: capabilityConfigs aynı XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability ile birden fazla yapı içeriyorsa XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT döndürmelidir.

Sistem kaynaklarının optimum şekilde kullanılmasını sağlamak için çalışma zamanı, gelen uzamsal istekler için hazırlanmak üzere XrSpatialContextCreateInfoEXT dizisinde sağlanan yapılandırmaları kullanabilir. Örneğin, düzlem izleme özelliğini destekleyen bir çalışma zamanı, düzlem izleme özelliğini içeren bir uzamsal bağlam işleyicisi uygulama tarafından oluşturulursa düzlem izleme işlem hattını yalnızca bu durumda başlatabilir. Yapılandırılan özelliklerin uzun bir ısınma süresi varsa xrCreateSpatialDiscoverySnapshotAsyncEXT'ye yapılan çağrılar boş bir anlık görüntüyle sonuçlanabilir. Uygulama, temel izleme hizmetlerinin ısındığından emin olmak için xrCreateSpatialDiscoverySnapshotAsyncEXT işlevini kullanmadan önce XrEventDataSpatialDiscoveryRecommendedEXT işlevinin tamamlanmasını bekleyebilir.

Bir çalışma zamanı , XrSpatialContextEXT için yapılandırılan uzamsal özelliklere uygulama erişimini kontrol etmek üzere bir izin sistemi uyguluyorsa bu izinler uygulamaya verilmediyse ç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 ile ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin dönüş değeri yalnızca parametrelerin, eşzamansız işlemin planlanması için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialContextCompleteEXT'dir. Bu işlevden gelen bir gelecek READY durumundayken kullanılabilir. Çıkışlar, tamamlama yapısındaki XrCreateSpatialContextCompletionEXT işleviyle 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

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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • capabilityConfigCount, capabilityConfigs dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • capabilityConfigs, XrSpatialCapabilityConfigurationBaseHeaderEXT işaretçileri dizisine yönelik bir işaretçidir.

XrSpatialContextCreateInfoEXT yapısı, XrSpatialContextEXT tutacı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, uzamsal özellikleri yapılandırmak için alt yapıları XrSpatialContextCreateInfoEXT ile birlikte kullanılabilir.

Üye Açıklamaları

  • type, bu yapının XrStructureType'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • capability, XrSpatialCapabilityEXT'dir .
  • enabledComponentCount, enabledComponents dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • enabledComponents, XrSpatialComponentTypeEXT dizisine yönelik bir işaretçidir .

Çalışma zamanı, capability xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir. Çalışma zamanı, xrEnumerateSpatialCapabilityComponentTypesEXT içinde enabledComponents listesinde yer alan herhangi bir bileşen türü capability için numaralandırılmamışsa XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT 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 . Çalışma zamanı, future hazır durumda değilse XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir. Çalışma zamanı, future tamamlanmış veya iptal edilmişse 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_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ı

Gelecekteki İade Kodları

futureResult değerleri:

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 bir başarı koduysa spatialContext geçerli olmalıdır. spatialContext geçerliyse yalnızca xrCreateSpatialContextAsyncEXT :: session yaşam döngüsü içinde veya uygulama spatialContext öğesini xrDestroySpatialContextEXT ile yok edene kadar (hangisi önce gerçekleşirse) geçerli olmaya devam eder.

Geçerli Kullanım (Dolaylı)

Uzamsal bağlamı kaldırma

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

XrResult xrDestroySpatialContextEXT(
    XrSpatialContextEXT                         spatialContext);

Parametre Açıklamaları

Uygulama, uzamsal öğe 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 geçerli XrSpatialContextEXT yoksa bu çağrı , sistem kaynaklarını korumak için bu özelliklerin gerektirdiği izleme hizmetlerini devre dışı bırakma konusunda çalışma zamanına yönelik bir öneri olarak kullanılır.

Geçerli Kullanım (Dolaylı)

İş Parçacığı Güvenliği (Thread Safety)

  • spatialContext ve tüm alt tutma yerlerine 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

Uzamsal Varlık Kimliği

XR_DEFINE_ATOM(XrSpatialEntityIdEXT)

XrSpatialEntityIdEXT, çalışma zamanı tarafından kullanıcının uzamsal ortamında keşfedilen her türlü öğeyi temsil etmek için kullanılır. Bir XrSpatialEntityIdEXT, keşfedildiği XrSpatialContextEXT için geçerlidir ve çalışma zamanı, aynı XrSpatialContextEXT içindeki farklı öğeler için aynı XrSpatialEntityIdEXT öğesini yeniden kullanmamalıdır . Ayrıca, çalışma zamanı, aynı varlığı veya farklı varlıkları temsil etmesine bakılmaksızın aynı XrSession içindeki birden fazla XrSpatialContextEXT arasında aynı XrSpatialEntityIdEXT öğesini yeniden kullanmamalıdır.

#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 bu işlevlerden döndürülebilir.

Üç Boyutlu Varlık Tanıtıcısı

XR_DEFINE_HANDLE(XrSpatialEntityEXT)

XrSpatialEntityEXT tanıtıcısı, bir uzamsal varlığı temsil eder. Bir uygulama, çalışma zamanına belirli bir varlıkla ilgilendiğini belirtmek için bu tür bir işleyici oluşturabilir.

Kimlikten Mekansal Varlık İşleyici 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 bir XrSpatialEntityEXT tanıtıcısı oluşturmak için xrCreateSpatialEntityFromIdEXT işlevini kullanabilir.

Çalışma zamanı, XrSpatialEntityFromIdCreateInfoEXT :: entityId, spatialContext için geçerli bir kimlik değilse XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT 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_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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de 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 öğenin XrSpatialEntityIdEXT'sidir.

Geçerli Kullanım (Dolaylı)

Destroy Spatial Entity Handle

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

XrResult xrDestroySpatialEntityEXT(
    XrSpatialEntityEXT                          spatialEntity);

Parametre Açıklamaları

Uygulama, bu tutamaç tarafından referans verilen tüzel kişiyle artık ilgilenmediğinde spatialEntity tutamacını serbest bırakmak için xrDestroySpatialEntityEXT işlevini kullanabilir.

Geçerli Kullanım (Dolaylı)

İş Parçacığı Güvenliği (Thread Safety)

  • spatialEntity ve tüm alt tutma yerlerine 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, mekansal öğeleri keşfetmek veya bilinen mekansal öğelerle ilgili bilgilerini güncellemek amacıyla mekansal anlık görüntüler oluşturabilir. XrSpatialSnapshotEXT işleyici, keşfedilen veya güncellenen uzamsal öğeler ve uygulamanın seçtiği bileşenlerin bir alt kümesi için değişmez verileri temsil eder. Mekansal anlık görüntü, öğelerin ve bileşen verilerinin tutarlı bir görünümünü temsil eder. Anlık görüntü oluşturulduktan sonra, geçerli olduğu süre boyunca anlık görüntünün verileri 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.

Bulma 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 öğeleri keşfedebilir .

Bu işlev , eşzamansız bir işlem başlatır ve xrPollFutureEXT ile ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin dönüş değeri yalnızca parametrelerin, eşzamansız işlemin planlanması için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialDiscoverySnapshotCompleteEXT'dir. Bu işlevden gelen bir gelecek , READY durumundayken kullanılabilir. Çıkışlar, tamamlama yapısındaki XrCreateSpatialDiscoverySnapshotCompletionEXT işleviyle doldurulur.

Uygulama, bir önceki işlemin 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ırada işleyip tamamlayabilir. Çalışma süresi, cihazın güç, termal veya diğer politikaları nedeniyle sistem kaynaklarının kullanımını azaltması gerekiyorsa uygulamanın hızını düşürmek için keşif anlık görüntüsünün oluşturulmasının tamamlanmasını geciktirebilir.

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

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

Uygulama, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde bir mekansal bileşen türleri listesi sağlamıyorsa çalışma zamanı, spatialContext için yapılandırılan özellikler için XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents içinde numaralandırılan bileşen kümesine sahip olan tüm mekansal öğeleri anlık görüntüye dahil etmelidir . Çalışma zamanı, spatialContext için yapılandırılan özelliklerin etkinleştirilmiş tüm bileşenlerinin verilerini içermelidir .

future tamamlanmadan önce XrEventDataReferenceSpaceChangePending sıraya alınırsa ve XrEventDataReferenceSpaceChangePending :: poseValid yanlışsa çalışma zamanı, ya 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ı, XrCreateSpatialContextCompletionEXT :: futureResult öğesini XrEventDataReferenceSpaceChangePending nedeniyle 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • componentTypeCount, componentTypes dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • componentTypes, XrSpatialComponentTypeEXT dizisidir .

XrSpatialDiscoverySnapshotCreateInfoEXT yapısı, uzamsal öğeler keşfedilirken XrSpatialSnapshotEXT tutacı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 . Çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future hazır durumda değilse XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir. Çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future zaten tamamlanmış veya iptal edilmişse XR_ERROR_FUTURE_INVALID_EXT 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 , baseSpace konumunda bulunan time içinde gösterilir .

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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • futureResult, uzamsal keşif anlık görüntüsü oluşturma işleminin XrResult'ıdır.
  • snapshot, keşfedilen uzamsal varlıkların bileşen verilerini sorgulamak için kullanılabilen bir XrSpatialSnapshotEXT'dir.

Gelecekteki İade Kodları

futureResult değerleri:

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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • spatialContext, çalışma zamanı tarafından keşfin önerildiği XrSpatialContextEXT'dir.

Uygulama, xrPollEvent kullanarak bu etkinliği alabilir . Uygulama, bu etkinliğin gerçekleşmesini bekleyerek mekansal öğeleri keşfetmek için xrCreateSpatialDiscoverySnapshotAsyncEXT'ye yapılan aşırı çağrıları önleyebilir. Uygulama, iki XrEventDataSpatialDiscoveryRecommendedEXT etkinliği arasında aynı XrSpatialDiscoverySnapshotCreateInfoEXT ile birden fazla keşif anlık görüntüsü oluşturursa sonuçtaki anlık görüntüler aynı öğeleri içerebilir. Bu nedenle, anlık görüntü oluşturma ve veri sorguları gereksiz olur.

Bu etkinliğin beklenmesi, uygulamanın sistemin çalışma zamanının yeni veri döndürmeyebileceği keşif istekleriyle aşırı yüklenmemesini sağlar. Ayrıca, sistem kaynaklarının aşırı kullanılmasından ve cihazın güç veya termal politikaları nedeniyle sınırlandırılmasından kaynaklanan risklerin önlenmesine yardımcı olur. Bu, canlı izleme ile anında uzamsal öğeleri keşfeden çalışma zamanları ile uzamsal öğeleri önceden kaydedilmiş bir durumdan 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ı, bu etkinliği, mevcut uzamsal öğelerin bileşen verilerinde yapılan değişiklikler veya düzenlemeler hakkında uygulamayı bilgilendirmek için kuyruğa almamalıdır. Uygulama, ilgilendiği uzamsal öğeler için bileşen verisi güncellemelerini takip etmek amacıyla xrCreateSpatialUpdateSnapshotEXT'yi kullanabilir.

Bir çalışma zamanı, uygulamanın önce xrCreateSpatialDiscoverySnapshotAsyncEXT işlevini ç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 çevresindeki ortamla ilgili kendi anlayışına (yeni öğelerin keşfi veya mevcut öğelerin kaybı) ya da sistem kaynaklarını aşırı yüklememek için uygulamaya uygun bir keşif isteği sıklığı ipucu vermeye dayandırabilir. Çalışma zamanı, kullanıcının ortamında XrSpatialContextEXT'nin kullanım ömrü boyunca hiçbir öğe bulunmazsa bu etkinliği XrSpatialContextEXT için hiçbir zaman sıraya almamayı seçebilir .

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

Uygulama xrDestroySpatialContextEXT işlevini çağırdıktan sonra çalışma zamanı , söz konusu uzamsal bağlam için başka keşif önerisi etkinliklerini sıraya almamalı ve xrPollEvent işlevinden bu bağlam için bu tür etkinlikler döndürmemelidir .

Geçerli Kullanım (Dolaylı)

Bileşen Verilerini Sorgulama

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 için XrSpatialComponentDataQueryResultEXT :: next öğesine bir liste yapısı ekleyerek anlık görüntüdeki öğelerin bileşen verilerini sorgulamak için xrQuerySpatialComponentDataEXT işlevini kullanabilir .

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

Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde listelenen bileşenlerin yalnızca bir alt kümesine karşılık gelen liste yapılarını eklemeyi seçebilir . Uygulama, yalnızca queryCondition koşulunu karşılayan uzamsal öğelerin kimliklerini ve izleme durumunu bilmek 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ınmışsa ve uygulama, XrSpatialSnapshotEXT'den bileşen verilerini sorgularken XrEventDataReferenceSpaceChangePending :: changeTime geçmişse 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 olan öğelerle doldurmalıdır. XrSpatialComponentDataQueryConditionEXT :: componentTypeCount 0 ise çalışma zamanı, anlık görüntüdeki tüm varlıkları (ve bunların izleme durumlarını) queryResult ile doldurmalıdır. XrSpatialComponentDataQueryConditionEXT :: next öğesine ek sorgu koşulları eklenirse çalışma zamanı, bunları bileşen türlerinin kullanılabilirliğiyle birlikte "AND" olarak değerlendirmelidir. Yani çalışma zamanı, XrSpatialComponentDataQueryResultEXT ::entityIds öğesini yalnızca sağlanan koşulların tümünü karşılayan öğelerle doldurmalıdır. Çalışma zamanı, listedeki yapıların bileşen verilerini XrSpatialComponentDataQueryResultEXT'deki öğelerle aynı sırada doldurmalıdır. entityIds Yani, liste yapısı dizisindeki belirli bir dizinde bulunan bileşen verileri, aynı dizindeki öğeyle eşleşmelidir.

Bir öğenin izleme durumu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT değilse çalışma zamanı , XrSpatialComponentDataQueryResultEXT'ye eklenen liste yapılarında bulunan dizideki söz konusu öğeye 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 öğelerden:

  • 1. ve 2. öğenin XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT ve XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT bileşenleri var
  • 3. ve 4. varlıklar XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşenlerine sahip
  • 5. 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

Metin SVG değil. Gösterilemiyor

Şekil 20. Ö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ı öğelerin uygulamaya döndürülmesine neden olur. Uygulama, sınırlı 2D verilerini almak için XrSpatialComponentBounded2DListEXT yapısının bir parçası olarak XrSpatialBounded2DDataEXT dizisini sonraki XrSpatialComponentDataQueryResultEXT zincirine ekleyebilir.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

5

5

Bounded2D

Bounded2D

entityId #1 için veriler

Veriler için...

entityId #2 için veriler

Veriler için...

entityId #5 için veriler

Veriler için...

entityIds

entityIds

sonraki

sonraki

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Dat...

sınırlar

sınırlar

XrSpatialComponent
Bounded2DListEXT

XrSpatialComponent
Bou... Metin SVG değil. Gösterilemiyor.

Şekil 21. Ö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ı öğelerin uygulamaya döndürülmesine ve uygulamanın, bileşen verilerini almak için sırasıyla XrSpatialComponentBounded3DListEXT ve XrSpatialComponentMesh3DListEXT yapıları kapsamında XrSpatialComponentDataQueryResultEXT'in sonraki zincirine XrBoxf ve XrSpatialMeshDataEXT dizileri eklemesine olanak tanır.

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

3

3

4

4

Bounded3D

Bounded3D

entityId #3 için veriler

Veriler için...

entityId #4 için veriler

Veriler için...

Mesh3D

Mesh3D

entityId #3 için veriler

Veriler için...

entityId #4 için veriler

Veriler için...

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

ağlar Metin SVG değil, görüntülenemiyor

Şekil 22. Ö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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • componentTypeCount, componentTypes dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • componentTypes, anlık görüntüden verilerin alınacağı 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • entityIdCapacityInput, entityIds dizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.
  • entityIdCountOutput , entityIds içindeki XrSpatialEntityIdEXT sayısıdır veya entityIdCapacityInput yetersizse gereken kapasitedir.
  • entityIds, XrSpatialEntityIdEXT dizisidir . entityIdCapacityInput 0 ise sonuç NULL olabilir.
  • entityStateCapacityInput, entityStates dizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.
  • entityStateCountOutput , entityStates içindeki XrSpatialEntityTrackingStateEXT sayısıdır veya entityStateCapacityInput yetersizse gereken kapasitedir. Bu değer her zaman entityIdCountOutput ile aynı olmalıdır .
  • entityStates, XrSpatialEntityTrackingStateEXT dizisidir . entityStateCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli entityIds boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Bir uygulama, düzenli güncellemeler almak istediği öğeler için XrSpatialEntityEXT işleyicileri oluşturmak üzere entityIds ile xrCreateSpatialEntityFromIdEXT'yi kullanabilir. Uygulama daha sonra, sağlanan öğeler 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şturmak üzere xrCreateSpatialUpdateSnapshotEXT ile bu XrSpatialEntityEXT tutamaçlarını kullanabilir.

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ı numaralandırır:

Numaralandırılmış değerler aşağıdaki anlamlara gelir:

Enum Açıklaması

XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT

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

XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT

Çalışma zamanı, bu öğenin izlenmesini duraklattı ancak gelecekte izlemeye devam edebilir.

XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT

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

İZLEME

DURAKLATILDI

DURDURULDU

Şekil 23. XrSpatialEntityTrackingStateEXT

  • Çalışma zamanı, uzamsal öğenin izlenmesini askıya alırsa ancak gelecekte izlemeye devam etme olasılığı varsa uzamsal öğenin durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT'dan XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT'a değiştirebilir. Çalışma zamanının bunu yapabileceği bazı örnekler arasında (ancak bunlarla sınırlı olmamak üzere) uygulamanın giriş odağını kaybetmesi, verilen uzamsal öğenin doğru şekilde izlenemeyecek kadar uzakta olması veya çok fazla öğenin izlenmesi ve çalışma zamanının izleme maliyetini düşürmek istemesi yer alır. XrSpatialEntityTrackingStateEXT, uygulamanın kendisini her çalışma zamanının farklı izleme politikalarından korumasına yardımcı olur.
  • Çalışma zamanı, bir varlığın durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT'den XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT'ye değiştirebilir .
  • Çalışma zamanı, uzamsal varlık kaybolursa ve takibi hiçbir zaman kurtarılıp devam ettirilemezse uzamsal varlığın durumunu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT'den XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT'ye değiştirmelidir. Böyle bir duruma örnek olarak, cihazın izlemeyi kaybetmesi, izleme oturumunu yeniden başlatması ancak ortamında yeniden yerelleşememesi ve bu nedenle bu izleme oturumunda keşfedilen öğeleri yeni öğeler olarak ele alması verilebilir.
  • Bir öğenin izleme durumu XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak ayarlandıktan sonra çalışma zamanı bunu başka bir duruma asla değiştirmemelidir.
  • xrQuerySpatialComponentDataEXT kullanarak bir uzamsal öğenin bileşen verileri sorgulanırken öğe durumu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT ise çalışma zamanı , XrSpatialComponentDataQueryResultEXT zincirinin bir sonraki bölümünde uygulama tarafından sağlanan arabelleklerin içeriğine geçerli veriler ayarlamalıdır . Öğe 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ı

  • bufferId aralığında XrSpatialBufferIdEXT aralığındaki arabellek verileri.
  • bufferType, bufferId içindeki veri türünü belirtmek için kullanılan XrSpatialBufferTypeEXT'dir . Uygulama, arabelleğin gerçek verilerini almak için hangi işlevin kullanılacağını belirlemek üzere bufferTypekullanabilir.

Bazı mekansal bileşenler, değişken boyutlu verilere sahiptir ve bu nedenle verilerini almak için iki çağrılı deyimin kullanılması gerekir. 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 verileri sorgu çağrıları arasındaki farklı bir bufferId, uygulamaya söz konusu bileşenin verilerinin değişmiş olabileceğini gösterir.

Geçerli Kullanım (Dolaylı)

XR_DEFINE_ATOM(XrSpatialBufferIdEXT)

XrSpatialBufferIdEXT, bir uzamsal bileşen için değişken boyutlu verileri temsil etmek amacıyla kullanılır.

Çalışma zamanı, XrSpatialBufferIdEXT ve verilerini, kendisini içeren XrSpatialSnapshotEXT'nin yaşam döngüsü boyunca en azından bellekte tutmalıdır. Çalışma zamanı, uygulamanın daha sonra oluşturduğu anlık görüntülerde aynı kimliği döndürmek için XrSpatialBufferIdEXT ve verilerini XrSpatialSnapshotEXT'nin 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ı, XrSpatialBufferIdEXT ile gösterilen arabelleğin farklı veri türlerini tanımlar .

Numaralandırılmış Değer 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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, karakter sayısıdır veya bufferCapacityInput yeterli değilse gerekli kapasitedir.
  • buffer, char dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_STRING_EXT olduğu durumlarda bir bileşen tarafından sağlanan XrSpatialBufferEXT verilerini xrGetSpatialBufferStringEXT kullanarak alabilir.

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

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Çalışma zamanı tarafından doldurulan buffer, null ile sonlandırılmış bir UTF-8 dizesi olmalıdır.

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferStringEXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info Geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • bufferCapacityInput, 0 değilse buffer, bufferCapacityInput char 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

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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, uint8_t dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

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

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT8_EXT değilse XR_ERROR_VALIDATION_FAILURE döndürmelidir.

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferUint8EXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info Geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • bufferCapacityInput değeri 0 değilse buffer , bufferCapacityInput uint8_t değerlerinden oluşan bir diziye yönelik 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

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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, uint16_t dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

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

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

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferUint16EXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info Geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • bufferCapacityInput değeri 0 değilse buffer , bufferCapacityInput uint16_t değerlerinden oluşan bir diziye yönelik 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

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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, uint32_t dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

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

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

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferUint32EXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info Geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • bufferCapacityInput değeri 0 değilse buffer , bufferCapacityInput uint32_t değerlerinden oluşan bir diziye yönelik 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

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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, float dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

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

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

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferFloatEXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir işaretçi olmalıdır.
  • bufferCapacityInput değeri 0 değilse buffer , bufferCapacityInput float değerlerinden oluşan bir diziye yönelik 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

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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, XrVector2f dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT olduğu durumlarda bir bileşen tarafından sağlanan XrSpatialBufferEXT için xrGetSpatialBufferVector2fEXT kullanarak verileri alabilir .

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT değilse XR_ERROR_VALIDATION_FAILURE döndürmelidir.

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • xrGetSpatialBufferVector2fEXT çağrılmadan önce XR_EXT_spatial_entity uzantısı etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir 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, XrSpatialSnapshotEXT için bir tutamaktır .
  • info, sorgulanacak arabellek hakkındaki bilgileri tutar.
  • bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasitenin alınması için istekte bulunulduğunu belirtmek üzere 0'dır.
  • bufferCountOutput, buffer dizisindeki öğe sayısıdır veya bufferCapacityInput yetersizse gerekli kapasitedir.
  • buffer, XrVector3f dizisidir . bufferCapacityInput 0 ise sonuç NULL olabilir.
  • Gerekli buffer boyutunun alınmasıyla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Uygulama, can, xrGetSpatialBufferVector3fEXT kullanarak XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT olan bir bileşen tarafından sağlanan XrSpatialBufferEXT verilerini alabilir .

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT değilse XR_ERROR_VALIDATION_FAILURE döndürmelidir.

Çalışma zamanı, XrSpatialBufferGetInfoEXT :: bufferId snapshot'ye ait değilse XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT döndürmelidir .

Geçerli Kullanım (Dolaylı)

  • XR_EXT_spatial_entity uzantısı, xrGetSpatialBufferVector3fEXT çağrılmadan önce etkinleştirilmelidir.
  • snapshot geçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
  • info geçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır.
  • bufferCountOutput, uint32_t değerine yönelik bir 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • Verileri alınacak arabellek için bufferId 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 bu işlevlerden 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 belirli öğeler için çalışma zamanı tarafından bilinen en son bileşen verilerini almak üzere xrCreateSpatialUpdateSnapshotEXT işlevini kullanabilir. Uygulamalar, anlık görüntü oluştururken XrSpatialEntityEXT tutamaçlarını ve ilgilendikleri bileşen türlerini sağlayabilir.

Uygulama, verilerinin 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ı, yalnızca XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde sağlanan bileşenlerden en az birine sahip olan uzamsal öğeleri anlık görüntüye dahil etmelidir . Ayrıca, çalışma zamanı yalnızca anlık görüntüdeki bu bileşenlerin verilerini içermelidir.

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

Uygulama, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde bir mekansal bileşen türleri listesi sağlamıyorsa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: entities içinde listelenen tüm mekansal öğeleri anlık görüntüye dahil etmeli ve spatialContext için yapılandırılan özelliklerin etkinleştirilmiş tüm bileşenlerinin verilerini dahil etmelidir .

Çalışma zamanı, snapshot içindeki XrSpatialUpdateSnapshotCreateInfoEXT :: entities içinde listelenmeyen uzamsal öğeler 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • entityCount, entities dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • entities, çalışma zamanının anlık görüntüye bileşen verilerini dahil etmesi gereken XrSpatialEntityEXT dizisidir.
  • componentTypeCount, componentTypes dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • componentTypes, çalışma zamanının anlık görüntüdeki verileri içermesi gereken XrSpatialComponentTypeEXT dizisidir.
  • baseSpace, güncellemenin tüm konumlarının XrSpatialSnapshotEXT yerleştirileceği XrSpace'tir.
  • time, güncellemenin tüm konumlarının XrSpatialSnapshotEXT yerleştirileceği XrTime'dir.

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 zorunlu olarak NULL veya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
  • entities entityCount geçerli XrSpatialEntityEXT tutamaçları dizisine yönelik bir işaretçi olmalıdır.
  • componentTypeCount, 0 değilse componentTypes, geçerli XrSpatialComponentTypeEXT değerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.componentTypeCount
  • baseSpace Geçerli bir XrSpace hesabı olmalıdır.
  • entityCount parametresi değerinden büyük olmalıdır.0
  • Hem baseSpace hem de entities öğeleri aynı XrSession'dan oluşturulmuş, ayrılmış veya alınmış olmalıdır.

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

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

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

Parametre Açıklamaları

Uygulama, XrSpatialSnapshotEXT tutamacını ve bununla ilişkili kaynakları yok etmek için xrDestroySpatialSnapshotEXT'yi çağırabilir.

Geçerli Kullanım (Dolaylı)

İş Parçacığı Güvenliği (Thread Safety)

  • snapshot ve tüm alt tutma yerlerine 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

Yaygın 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ırlanmış 2D bileşenin geometrik merkezini tanımlayan bir XrPosef'dir.
  • extents, sınırlanmış 2D bileşenin x ekseni (extents.width) ve y ekseni (extents.height) boyunca uzantılarıdır ve center üzerinde ortalanmıştır .

extents ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, düzlemin koordinat sisteminin x-y düzlemindeki varlığın boyutunu ifade eder. {0, 0, 0} konumuna, {0, 0, 0, 1} döndürmesine (döndürme yok) ve {1, 1} boyutuna sahip bir düzlem, bileşenin uzayında ön yüzünün normal vektörü +Z yönünü gösteren, {0, 0, 0} merkezli 1 metre x 1 metre boyutlarında bir düzlemi ifade eder.

X X Y Y Z Z Height Height Y Y Z Z X X Vertical plane Vertical plane Horizontal Plane Horizontal Plane Width Width Width Width Height Height

Şekil 24. Sınırlı 2D Bileşen Koordinat Sistemi

Not

OpenXR, düzlem normali olarak +Z ile bir X-Y düzlemi kullanır ancak diğer API'ler düzlem normali olarak +Y ile 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ı)

Verilere sorgu uygulamak 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • boundCount, bounds dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • bounds, XrSpatialBounded2DDataEXT dizisidir .

Çalışma zamanı, XrSpatialComponentBounded2DListEXT, XrSpatialComponentDataQueryResultEXT :: next zincirinde yer alıyorsa ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde yer almıyorsa xrQuerySpatialComponentDataEXT'den XR_ERROR_VALIDATION_FAILURE döndürmelidir.

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

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

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT ile 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

Bazı özellikler için XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde numaralandırılmışsa uygulama, numaralandırılmış değeri XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir. Bu bileşenin, bir 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'i kullanıyor.

Verilere sorgu uygulamak 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • boundCount, bounds dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • bounds, XrBoxf dizisidir .

Çalışma zamanı, XrSpatialComponentBounded3DListEXT, XrSpatialComponentDataQueryResultEXT :: next zincirinde bir sonraki öğe ise ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde yer almıyorsa xrQuerySpatialComponentDataEXT'den XR_ERROR_VALIDATION_FAILURE döndürmelidir.

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

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

xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT ile oluşturulduysa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: time konumunda XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace içinde XrBoxf :: center sağlamalıdır.

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 zorunlu olarak NULL veya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
  • bounds boundCount XrBoxf yapılarından oluşan bir diziye yönelik işaretçi olmalıdır.
  • boundCount parametresi değerinden büyük olmalıdır.0
Yapılandırma

Bazı özellikler için XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde numaralandırılmışsa uygulama, numaralandırmayı XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek özelliği etkinleştirebilir. Bu bileşenin, bir 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ır.

Verilere sorgu uygulamak 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'de veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • parentCount, parents dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • parents, XrSpatialEntityIdEXT dizisidir .

Çalışma zamanı, XrSpatialComponentParentListEXT, XrSpatialComponentDataQueryResultEXT :: next zincirinde yer alıyorsa ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde yer almıyorsa xrQuerySpatialComponentDataEXT'den XR_ERROR_VALIDATION_FAILURE döndürmelidir.

Çalışma zamanı, parentCount değeri XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse xrQuerySpatialComponentDataEXT işlevinden 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 zorunlu olarak NULL veya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
  • parents must be a pointer to an array of parentCount XrSpatialEntityIdEXT values
  • parentCount parametresi değerinden büyük olmalıdır.0
Yapılandırma

Bazı özellikler için XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde numaralandırılmışsa uygulama, numaralandırmayı XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek özelliği etkinleştirebilir. Bu bileşenin, bir sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez .

Örgü 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 başlangıcını tanımlayan bir XrPosef'dir. Ağın tüm köşeleri bu kaynağa 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'dir. Köşelerin konumu origin ile ilişkili olmalıdır .
  • indexBuffer, vertexBuffer içindeki ağ köşelerinin dizinlerini belirten bir üçgen dizinleri dizisini temsil eden arabelleğin kimliğini sağlayan bir XrSpatialBufferEXT'dir . Üçgen indeksleri saat yönünün tersine sırada döndürülmelidir ve üç indeks bir üçgeni gösterir.

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

Geçerli Kullanım (Dolaylı)

Verilere sorgu uygulamak 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'ıdır.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir.
  • meshCount, meshes dizisindeki öğelerin sayısını açıklayan bir uint32_t'dir.
  • meshes, XrSpatialMeshDataEXT dizisidir .

Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içine XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT ekleyerek ve XrSpatialComponentMesh3DListEXT öğesini XrSpatialComponentDataQueryResultEXT öğesinin sonraki işaretçi zincirine ekleyerek XrSpatialSnapshotEXT içindeki uzamsal öğelerin ağ 3D bileşenini sorgulayabilir.

Çalışma zamanı, XrSpatialComponentMesh3DListEXT, XrSpatialComponentDataQueryResultEXT :: next zincirinde yer alıyorsa ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde yer almıyorsa xrQuerySpatialComponentDataEXT işlevinden XR_ERROR_VALIDATION_FAILURE döndürmelidir.

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

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

Geçerli Kullanım (Dolaylı)

Yapılandırma

Bazı özellikler için XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde numaralandırılıyorsa uygulama, numaralandırmayı bu bileşeni destekleyen özelliğin XrSpatialCapabilityConfigurationBaseHeaderEXT türetilmiş yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine dahil ederek etkinleştirebilir.

Bu bileşenin, bir 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 öğelerle sınırlamak için bir sonraki XrSpatialDiscoverySnapshotCreateInfoEXT zincirinde XrSpatialFilterTrackingStateEXT'i kullanabilir .

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

Geçerli Kullanım (Dolaylı)

Örnek kod

Uygulama Kullanımı

Uygulamalar genellikle aşağıdaki düzende mekansal öğe uzantısını kullanır:

Uzamsal öğeleri keşfetme ve bileşen verilerini sorgulama

Aşağıdaki örnek kodda, "Foo" özelliği için uzamsal öğelerin nasıl keşfedileceği 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 kod, XrSpatialBufferEXT sağlayan bir bileşenin verilerinin nasıl alınacağını gösterir .

/****************************/
/* 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 bir öğe 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şturma filtreleri, mekansal bağlamın yapılandırmasını etkilememeli, bunun yerine mekansal 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 öğelerin ve verilerin dahil edileceği konusunda çalışma zamanına ipuçları vermek için kullanılmalıdır.

  • Bir uzantı yeni bir XrSpatialCapabilityEXT tanımlarsa ,

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

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

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

    • Bileşen verileri
    • Verilere sorgu uygulamak için bileşen listesi yapısı
    • Yapılandırma
  • Uygulamaya XrSpatialBufferIdEXT sağlayan bir API yazarken, arabelleğin veri türü hakkında uygulamayı bilgilendirmek için XrSpatialBufferTypeEXT ile birlikte XrSpatialBufferTypeEXT kullanılmalıdır ve uygulama, arabelleğin gerçek içeriğini almak için uygun bir xrGetSpatialBuffer* işlevini kullanabilir.

Anlamsal Etiket Tasarımı ve Uzantı Kuralları

Bu uzantı, bir öğenin anlamsal 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 " (gerekir) ve " must " (zorunlu) ifadeleri, ç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 anlamsal etiketler tanımlıyorsa bunu, yeni bir XrSpatialComponentTypeEXT ve bu bileşenin verileri olacak bir dizi etiket içeren yeni bir numaralandırma ("anlamsal etiket grubu") tanımlayarak yapmalıdır.
  • Anlamsal etiket grubunu temsil eden bir numaralandırma, varlığın bu grubun etiketlerinden herhangi birine göre sınıflandırılmadığını belirten bir değere sahip olmalıdır. Bu numaralandırılmış değerin adı "UNCATEGORIZED" ifadesini içermelidir (ör. XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT). Bu değer, uygulamalara çalışma zamanının bu öğeyi tanıdığını ancak bu öğenin sınıflandırıldığı başka anlamsal etiket kümeleri olduğunu gösterir.
  • xrEnumerateSpatialCapabilityComponentTypesEXT içinde bu yeni tanımlanan 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ığı capability nesnesi için yapılandırma yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents dizisine karşılık gelen XrSpatialComponentTypeEXT'yi ekleyerek bu anlamsal etiket grubuna ait etiketlere sahip varlıkları keşfetme isteğini belirtir.
  • Tek bir mekansal öğe, üzerinde birden fazla bileşene sahip olabilir. Bu bileşenlerin her biri, kendi anlamsal etiket kümesinden bir etiket sağlar. Bazı varsayımsal anlamsal etiket kümeleriyle ilgili aşağıdaki örneği inceleyin: XrSpatialObjectSemanticLabel. Bu küme, sandalye, kanepe, masa gibi değerlere sahip olabilir. XrSpatialSofaBrand (ör. IKEA, Wayfair gibi değerlere sahip olabilir) ve XrSpatialIkeaSofa (ör. IKEA'nın belirli kanepe modellerinin adlarını içerebilir). Bu senaryoda, aynı kanepe öğesinde 3 bileşenin tümü (3 anlamsal etiket grubunun tümünden etiketler) bulunur. Bu bileşenlerin 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 anlamsal etiket grubu sağlayan yeni bir XrSpatialComponentTypeEXT tanımlıyorsa uzantı, uygulamaların bu bileşen türüne karşılık gelen anlamsal etiket grubunda tanımlanan etiketlerin yalnızca bir alt kümesini etkinleştirmesine olanak tanıyan bir XrSpatialCapabilityFeatureEXT tanımlamayı düşünmelidir. Özellik yapılandırmasının sonraki zincirinde sağlanan bu alt küme, çalışma zamanlarının izleme işlem hatlarını optimize etmesi ve yalnızca sağlanan alt kümeyi izlemesi için ipucu görevi görür. Bu tür bir özellik yapısına örnek aşağıda verilmiştir .
  • Uzantılar, mevcut semantik etiket kümesi numaralandırmasına etiket eklememelidir. Bunun yerine, yeni eklenen numaralandırılmış değerlerin yanı sıra aynı anlamsal yapıya sahip ve diğer gruptaki değerlere eşit değerler 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 Mekansal Ö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 Spatial Semantic Label Extension
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;

Yukarıdaki örneği ele alalım. Bu örnekte, bir uzantı, mevcut XrSpatialPlaneSemanticLabelEXT numaralandırmasını kapıları ve pencereleri temsil eden değerlerle genişletmek için bir numaralandırma XrSpatialExamplePlaneSemanticLabelExtensionEXT tanımlıyor. Yeni numaralandırma için belirtilenler aşağıdaki biçimdeki metni 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 Taban Türleri

  • XrSpatialBufferIdEXT
  • XrSpatialEntityIdEXT

Yeni Nesne Türleri

Yeni Komutlar

Yeni Yapılar

Yeni Sıralamalar

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 uzatma :

    • 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 capability nesnesinden mi türetilir?

    • Çözüldü
    • Cevap: Hayır. Bu tamamen, kendi izleme özelliklerine ve algılanan bir varlığı nasıl temsil etmek istediğine bağlı olarak çalışma zamanına kalmıştır. Spesifikasyon, minimum beklenti belirlemek için belirli bir capability nesnesinin garantili bileşenleri dışında, uzamsal varlıkların belirli bir gösterimini zorunlu kılmaz. Çalışma zamanı, ayrı özellikler tarafından algılanan öğeleri birleştirebilir ve bunları, tanımlanmasına yardımcı olan tüm özelliklerin garantili bileşenleriyle tek bir öğe olarak temsil edebilir. Buna örnek olarak, tabloların hem düzlem izleme hem de nesne izleme özelliğiyle algılanabilmesi verilebilir. Düzlem izleme, öğede XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT bileşenini sağlarken nesne izleme XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT bileşenini sağlar. Belirli bir çalışma zamanı, tabloyu her biri kendi garantili bileşen kümesine sahip 2 ayrı öğe olarak sağlayabilir. Belirli çalışma zamanları ise tabloyu temsil etmek için yalnızca 1 öğe sağlayabilir ve hem XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT hem de XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT aynı öğede bulunabilir. Burada dikkat edilmesi gereken nokta, belirli bir uzamsal varlığın herhangi bir bileşen türünden en fazla tek bir bileşene sahip olabileceğidir . Bu nedenle, farklı özellikler tarafından üretilen bileşen verileri belirli bir öğe için çakışıyorsa çalışma zamanı bunları 2 ayrı öğe olarak göstermelidir.

Sürüm Geçmişi

  • 1. düzeltme, 12.04.2024 (Nihav Jain, Google)

    • İlk uzantı açıklaması