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 listelenecekXrSystemId'dir.capabilityCapacityInput,capabilitiesdizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.capabilityCountOutput, özelliklerin sayısıdır veyacapabilityCapacityInputyetersizse gereken kapasitedir.capabilities, XrSpatialCapabilityEXT dizisidir .capabilityCapacityInput0 ise sonuçNULLolabilir.- Gerekli
capabilitiesboyutunun 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_entityuzantısı, xrEnumerateSpatialCapabilitiesEXT çağrılmadan önce etkinleştirilmelidir. -
instancegeçerli bir XrInstance işleyeni olmalıdır. -
capabilityCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
capabilityCapacityInput,0değilsecapabilities,capabilityCapacityInputXrSpatialCapabilityEXT değerleri dizisine yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_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ılacakXrSystemId'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ı)
- xrEnumerateSpatialCapabilityComponentTypesEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
instancegeçerli bir XrInstance işleyeni olmalıdır. -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır. -
capabilityComponentsXrSpatialCapabilityComponentTypesEXT yapısına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_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,NULLveya 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 veyacomponentTypeCapacityInputyetersizse gereken kapasitedir.componentTypes, XrSpatialComponentTypeEXT dizisidir .componentTypeCapacityInput0 ise sonuçNULLolabilir.- Gerekli
componentTypesboyutunun 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ı)
- XrSpatialCapabilityComponentTypesEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
componentTypeCapacityInputdeğeri0değilsecomponentTypes,componentTypeCapacityInputXrSpatialComponentTypeEXT değerleri dizisine yönelik bir işaretçi olmalıdır.
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 veyacapabilityFeatureCapacityInputyetersizse gerekli kapasitedir.capabilityFeatures, XrSpatialCapabilityFeatureEXT dizisidir .capabilityFeatureCapacityInput0 ise sonuçNULLolabilir.- Gerekli
capabilityFeaturesboyutunun 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_entityuzantısı, xrEnumerateSpatialCapabilityFeaturesEXT çağrılmadan önce etkinleştirilmelidir. -
instancegeçerli bir XrInstance işleyeni olmalıdır. -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır. -
capabilityFeatureCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
capabilityFeatureCapacityInput,0değilsecapabilityFeatures,capabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT değerleri dizisine yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_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:
- XrSpatialCapabilityConfigurationBaseHeaderEXT türetilmiş yapılarını XrSpatialContextCreateInfoEXT ::
capabilityConfigsiçinde sağlayarak özellikleri ve bu özelliğe ait bileşenleri etkinleştirme. - Özellikleri, XrSpatialCapabilityFeatureEXT'nin ilgili yapılandırma yapılarıyla yapılandırma .
Ç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ı)
- xrCreateSpatialContextAsyncEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
sessiongeçerli bir XrSession işleyeni olmalıdır. -
createInfogeçerli bir XrSpatialContextCreateInfoEXT yapısına yönelik bir işaretçi olmalıdır. -
future,XrFutureEXTdeğerine yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_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,NULLveya 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,capabilityConfigsdizisindeki öğelerin sayısını açıklayan biruint32_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ı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialContextCreateInfoEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTolmalıdır. -
nextmust beNULLor a valid pointer to the next structure in a structure chain . Ayrıca bkz: XrSpatialContextPersistenceConfigEXT -
capabilityConfigscapabilityConfigCountgeçerli XrSpatialCapabilityConfigurationBaseHeaderEXT tabanlı yapı dizisine yönelik bir işaretçi olmalıdır. Ayrıca bkz: XrSpatialCapabilityConfigurationAnchorEXT , XrSpatialCapabilityConfigurationAprilTagEXT , XrSpatialCapabilityConfigurationArucoMarkerEXT , XrSpatialCapabilityConfigurationDepthRaycastANDROID , XrSpatialCapabilityConfigurationImageTrackingEXT , XrSpatialCapabilityConfigurationMeshTrackingEXT , XrSpatialCapabilityConfigurationMicroQrCodeEXT , XrSpatialCapabilityConfigurationObjectTrackingANDROID , XrSpatialCapabilityConfigurationObjectTrackingEXT , XrSpatialCapabilityConfigurationPlaneTrackingEXT , XrSpatialCapabilityConfigurationQrCodeEXT , XrSpatialCapabilityConfigurationRoomBoundaryTrackingANDROIDSYS , XrSpatialCapabilityConfigurationRoomTrackingANDROIDSYS , XrSpatialCapabilityConfigurationStreetscapeGeometryANDROIDX2 -
capabilityConfigCountparametresi değerinden büyük olmalıdır.0
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,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.capability, XrSpatialCapabilityEXT'dir .enabledComponentCount,enabledComponentsdizisindeki öğelerin sayısını açıklayan biruint32_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ı)
- XrSpatialCapabilityConfigurationBaseHeaderEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır. -
enabledComponentsenabledComponentCountgeçerli XrSpatialComponentTypeEXT değerlerinden oluşan bir dizinin işaretçisi olmalıdır. -
enabledComponentCountparametresi değerinden büyük olmalıdır.0
xrCreateSpatialContextCompleteEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialContextCompleteEXT(
XrSession session,
XrFutureEXT future,
XrCreateSpatialContextCompletionEXT* completion);
Parametre Açıklamaları
session, daha önce xrCreateSpatialContextAsyncEXT ::sessionişlevine iletilen XrSession'dır .future, xrCreateSpatialContextAsyncEXT işlevinden alınanXrFutureEXTdeğeridir .completion, XrCreateSpatialContextCompletionEXT işaretçisidir .
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ı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialContextCompleteEXT çağrılmadan önce etkinleştirilmelidir. -
sessiongeçerli bir XrSession işleyeni olmalıdır. -
completionXrCreateSpatialContextCompletionEXT yapısına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrCreateSpatialContextCompletionEXT yapısı şu şekilde tanımlanır:
typedef struct XrCreateSpatialContextCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialContextEXT spatialContext;
} XrCreateSpatialContextCompletionEXT;
Üye Açıklamaları
type, bu yapının XrStructureType'ıdır.next,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.futureResult, uzamsal bağlam oluşturma işleminin XrResult değeridir.spatialContext, xrCreateSpatialContextAsyncEXT ::createInfoiçindeki veriler ve yapılandırma kullanılarak oluşturulan bir XrSpatialContextEXT'dir .
Gelecekteki İade Kodları
futureResult değerleri:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_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ı)
- XrCreateSpatialContextCompletionEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
futureResultgeçerli bir XrResult değeri olmalıdır. -
spatialContext, XR_NULL_HANDLE değilsespatialContext, geçerli bir XrSpatialContextEXT tutma yeri olmalıdır.
Uzamsal bağlamı kaldırma
xrDestroySpatialContextEXT işlevi şu şekilde tanımlanır:
XrResult xrDestroySpatialContextEXT(
XrSpatialContextEXT spatialContext);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialContextAsyncEXT tarafından oluşturulmuş bir XrSpatialContextEXT'dir .
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ı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialContextEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContextgeçerli bir XrSpatialContextEXT işleyeni olmalıdır.
İş Parçacığı Güvenliği (Thread Safety)
spatialContextve tüm alt tutma yerlerine erişim, harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_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ı
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'dir .createInfo, XrSpatialEntityFromIdCreateInfoEXT yapısına yönelik bir işaretçidir.spatialEntity, döndürülen XrSpatialEntityEXT tutma yeridir.
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ı)
- xrCreateSpatialEntityFromIdEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
spatialContextgeçerli bir XrSpatialContextEXT işleyeni olmalıdır. -
createInfogeçerli bir XrSpatialEntityFromIdCreateInfoEXT yapısına yönelik bir işaretçi olmalıdır. -
spatialEntityXrSpatialEntityEXT tutacına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_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,NULLveya 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 öğeninXrSpatialEntityIdEXT'sidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialEntityFromIdCreateInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
Destroy Spatial Entity Handle
xrDestroySpatialEntityEXT işlevi şu şekilde tanımlanır:
XrResult xrDestroySpatialEntityEXT(
XrSpatialEntityEXT spatialEntity);
Parametre Açıklamaları
spatialEntity, daha önce xrCreateSpatialEntityFromIdEXT gibi bir işlev tarafından oluşturulan XrSpatialEntityEXT öğesinin herkese açık kullanıcı adıdır .
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ı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialEntityEXT çağrılmadan önce etkinleştirilmelidir. -
spatialEntitygeçerli bir XrSpatialEntityEXT işleyeni olmalıdır.
İş Parçacığı Güvenliği (Thread Safety)
spatialEntityve tüm alt tutma yerlerine erişim, harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_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ı
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'dir .createInfo, XrSpatialDiscoverySnapshotCreateInfoEXT işaretçisidir .future,XrFutureEXTöğesine yönelik bir işaretçidir .
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ı)
- xrCreateSpatialDiscoverySnapshotAsyncEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
spatialContextgeçerli bir XrSpatialContextEXT işleyeni olmalıdır. -
createInfogeçerli bir XrSpatialDiscoverySnapshotCreateInfoEXT yapısına yönelik bir işaretçi olmalıdır. -
future,XrFutureEXTdeğerine yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_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,NULLveya 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,componentTypesdizisindeki öğelerin sayısını açıklayan biruint32_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ı)
- XrSpatialDiscoverySnapshotCreateInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTolmalıdır. -
nextmust beNULLor a valid pointer to the next structure in a structure chain . Ayrıca: XrSpatialBoundsBoxfANDROID , XrSpatialBoundsFrustumfANDROID , XrSpatialBoundsSpherefANDROID , XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialDiscoveryRoomBoundaryFilterANDROIDSYS , XrSpatialDiscoveryUniqueEntitiesFilterANDROID , XrSpatialFilterTrackingStateEXT , XrSpatialRaycastInfoANDROID -
componentTypeCount,0değilsecomponentTypes, geçerli XrSpatialComponentTypeEXT değerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.componentTypeCount
xrCreateSpatialDiscoverySnapshotCompleteEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
XrSpatialContextEXT spatialContext,
const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialDiscoverySnapshotAsyncEXT ::spatialContextişlevine iletilen XrSpatialContextEXT'tir .createSnapshotCompletionInfo, keşif anlık görüntüsü oluşturma isteğinin tamamlanmasıyla ilgili bilgileri sağlayan bir XrCreateSpatialDiscoverySnapshotCompletionInfoEXT işaretçisidir.completion, XrCreateSpatialDiscoverySnapshotCompletionEXT işaretçisidir .
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ı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialDiscoverySnapshotCompleteEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContextgeçerli bir XrSpatialContextEXT işleyeni olmalıdır. -
createSnapshotCompletionInfogeçerli bir XrCreateSpatialDiscoverySnapshotCompletionInfoEXT yapısına yönelik bir işaretçi olmalıdır. -
completionXrCreateSpatialDiscoverySnapshotCompletionEXT yapısına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_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ı
type, bu yapının XrStructureType'ıdır.next,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.baseSpace, keşif XrSpatialSnapshotEXT'nin tüm konumlarının yer alacağı XrSpace'tir.time, keşif XrSpatialSnapshotEXT'nin tüm konumlarının bulunacağıXrTime'dir.future, xrCreateSpatialDiscoverySnapshotAsyncEXT işlevinden alınanXrFutureEXT
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ı)
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
baseSpaceGeçerli bir XrSpace hesabı olmalıdır.
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,NULLveya 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:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, XrCreateSpatialDiscoverySnapshotCompletionEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
futureResultgeçerli bir XrResult değeri olmalıdır. -
snapshot, XR_NULL_HANDLE değilsesnapshot, geçerli bir XrSpatialSnapshotEXT tutma yeri olmalıdır.
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,NULLveya 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ı)
- XrEventDataSpatialDiscoveryRecommendedEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
Bileşen Verilerini Sorgulama
xrQuerySpatialComponentDataEXT işlevi şu şekilde tanımlanır:
XrResult xrQuerySpatialComponentDataEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialComponentDataQueryConditionEXT* queryCondition,
XrSpatialComponentDataQueryResultEXT* queryResult);
Parametre Açıklamaları
snapshot, daha önce xrCreateSpatialDiscoverySnapshotCompleteEXT veya xrCreateSpatialUpdateSnapshotEXT tarafından sağlanan bir XrSpatialSnapshotEXT'dir .queryCondition, XrSpatialComponentDataQueryConditionEXT yapısına yönelik bir işaretçidir.queryResult, XrSpatialComponentDataQueryResultEXT yapısına yönelik bir işaretçidir.
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ı)
-
XR_EXT_spatial_entityuzantısı, xrQuerySpatialComponentDataEXT çağrılmadan önce etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
queryConditiongeçerli bir XrSpatialComponentDataQueryConditionEXT yapısına yönelik bir işaretçi olmalıdır. -
queryResultXrSpatialComponentDataQueryResultEXT yapısına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_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_EXTveXR_SPATIAL_COMPONENT_TYPE_PARENT_EXTbileşenleri var - 3. ve 4. varlıklar
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTveXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTbileşenlerine sahip - 5. varlıkta
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTveXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTbileş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,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.componentTypeCount,componentTypesdizisindeki öğelerin sayısını açıklayan biruint32_t'dir.componentTypes, anlık görüntüden verilerin alınacağı XrSpatialComponentTypeEXT dizisidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialComponentDataQueryConditionEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTolmalıdır. -
nextmust beNULLor a valid pointer to the next structure in a structure chain . Ayrıca: XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialFilterArchetypeEXT , XrSpatialFilterTrackingStateEXT -
componentTypeCount,0değilsecomponentTypes, geçerli XrSpatialComponentTypeEXT değerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.componentTypeCount
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,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.entityIdCapacityInput,entityIdsdizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.entityIdCountOutput,entityIdsiçindekiXrSpatialEntityIdEXTsayısıdır veyaentityIdCapacityInputyetersizse gereken kapasitedir.entityIds,XrSpatialEntityIdEXTdizisidir .entityIdCapacityInput0 ise sonuçNULLolabilir.entityStateCapacityInput,entityStatesdizisinin kapasitesidir veya gerekli kapasitenin alınması için istek olduğunu belirtmek üzere 0'dır.entityStateCountOutput,entityStatesiçindeki XrSpatialEntityTrackingStateEXT sayısıdır veyaentityStateCapacityInputyetersizse gereken kapasitedir. Bu değer her zamanentityIdCountOutputile aynı olmalıdır .entityStates, XrSpatialEntityTrackingStateEXT dizisidir .entityStateCapacityInput0 ise sonuçNULLolabilir.- Gerekli
entityIdsboyutunun 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ı)
- XrSpatialComponentDataQueryResultEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTolmalıdır. -
nextmust beNULLor a valid pointer to the next structure in a structure chain . Ayrıca bkz: XrSpatialComponentAnchorListEXT , XrSpatialComponentAnnotationQuadListANDROID , XrSpatialComponentBounded2DListEXT , XrSpatialComponentBounded3DListEXT , XrSpatialComponentConfidenceListANDROIDSYS , XrSpatialComponentImage2DListEXT , XrSpatialComponentKeyboardSemanticLabelListEXT , XrSpatialComponentMarkerListEXT , XrSpatialComponentMaterialTypeListANDROIDSYS , XrSpatialComponentMesh2DListEXT , XrSpatialComponentMesh3DListEXT , XrSpatialComponentMesh3DNormalsListEXT , XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT , XrSpatialComponentMesh3DVertexSemanticLabelsListEXT , XrSpatialComponentMouseSemanticLabelListEXT , XrSpatialComponentObjectSemanticLabelListANDROID , XrSpatialComponentObjectSemanticLabelListEXT , XrSpatialComponentOccupancyGridListANDROIDX1 , XrSpatialComponentParentListEXT , XrSpatialComponentPersistenceListEXT , XrSpatialComponentPlaneAlignmentListEXT , XrSpatialComponentPlaneSemanticLabelListEXT , XrSpatialComponentPolygon2DListEXT , XrSpatialComponentRaycastResultListANDROID , XrSpatialComponentRoomEmptinessListANDROIDSYS , XrSpatialComponentRoomListANDROIDSYS , XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 , XrSpatialComponentSubsumedByListANDROID -
entityIdCapacityInputdeğeri0değilseentityIds,entityIdCapacityInputXrSpatialEntityIdEXTdeğerlerinden oluşan bir diziye yönelik işaretçi olmalıdır. -
entityStateCapacityInput,0değilseentityStates,entityStateCapacityInputXrSpatialEntityTrackingStateEXT değerleri dizisine yönelik bir işaretçientityStatesolmalıdır.
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'danXR_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'denXR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTveyaXR_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_EXTveyaXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT'denXR_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_EXTolarak 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_EXTise ç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 durumuXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTveyaXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTise ç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ı
bufferIdaralığındaXrSpatialBufferIdEXTaralığındaki arabellek verileri.bufferType,bufferIdiç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 üzerebufferType'ı kullanabilir.
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ı)
- XrSpatialBufferEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
bufferTypegeçerli bir XrSpatialBufferTypeEXT değeri olmalıdır.
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ı
XR_SPATIAL_BUFFER_TYPE_STRING_EXT. Dize arabelleği almak içinXrSpatialBufferIdEXTcan, xrGetSpatialBufferStringEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT8_EXT.XrSpatialBufferIdEXTcan,uint8_tarabelleğini almak için xrGetSpatialBufferUint8EXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT16_EXT.XrSpatialBufferIdEXTcan,uint16_tarabelleğini almak için xrGetSpatialBufferUint16EXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT32_EXT.XrSpatialBufferIdEXT,uint32_tarabelleğini almak için xrGetSpatialBufferUint32EXT'ye aktarılabilir.XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT.XrSpatialBufferIdEXTcan,floatarabelleğini almak için xrGetSpatialBufferFloatEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT.XrSpatialBufferIdEXTcan, XrVector2f arabelleğini almak için xrGetSpatialBufferVector2fEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT.XrSpatialBufferIdEXT, XrVector3f arabelleğini almak için xrGetSpatialBufferVector3fEXT'ye aktarılabilir.
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 veyabufferCapacityInputyeterli değilse gerekli kapasitedir.buffer,chardizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infoGeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputchar değerlerinden oluşan bir dizinin işaretçisi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer,uint8_tdizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infoGeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInputdeğeri0değilsebuffer,bufferCapacityInputuint8_tdeğerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer,uint16_tdizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infoGeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInputdeğeri0değilsebuffer,bufferCapacityInputuint16_tdeğerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer,uint32_tdizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infoGeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInputdeğeri0değilsebuffer,bufferCapacityInputuint32_tdeğerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer,floatdizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infogeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInputdeğeri0değilsebuffer,bufferCapacityInputfloatdeğerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer, XrVector2f dizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infogeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputXrVector2f yapılarından oluşan bir dizinin işaretçisi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,bufferdizisindeki öğe sayısıdır veyabufferCapacityInputyetersizse gerekli kapasitedir.buffer, XrVector3f dizisidir .bufferCapacityInput0 ise sonuçNULLolabilir.- Gerekli
bufferboyutunun 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_entityuzantısı, xrGetSpatialBufferVector3fEXT çağrılmadan önce etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır. -
infogeçerli bir XrSpatialBufferGetInfoEXT yapısının işaretçisi olmalıdır. -
bufferCountOutput,uint32_tdeğerine yönelik bir işaretçi olmalıdır. -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputXrVector3f yapılarından oluşan bir dizinin işaretçisi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.- Verileri alınacak arabellek için
bufferIdXrSpatialBufferIdEXT.
Geçerli Kullanım (Dolaylı)
- XrSpatialBufferGetInfoEXT işlevi kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır.
#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ı
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'dir .createInfo, XrSpatialUpdateSnapshotCreateInfoEXT işaretçisidir .snapshot, XrSpatialSnapshotEXT sonucuna yönelik bir işaretçidir .
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ı)
- xrCreateSpatialUpdateSnapshotEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
spatialContextgeçerli bir XrSpatialContextEXT işleyeni olmalıdır. -
createInfogeçerli bir XrSpatialUpdateSnapshotCreateInfoEXT yapısına yönelik bir işaretçi olmalıdır. -
snapshotXrSpatialSnapshotEXT tutacına yönelik bir işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_TIME_INVALIDXR_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,NULLveya 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,entitiesdizisindeki öğelerin sayısını açıklayan biruint32_t'dir.entities, çalışma zamanının anlık görüntüye bileşen verilerini dahil etmesi gereken XrSpatialEntityEXT dizisidir.componentTypeCount,componentTypesdizisindeki öğelerin sayısını açıklayan biruint32_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ğiXrTime'dir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialUpdateSnapshotCreateInfoEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
entitiesentityCountgeçerli XrSpatialEntityEXT tutamaçları dizisine yönelik bir işaretçi olmalıdır. -
componentTypeCount,0değilsecomponentTypes, geçerli XrSpatialComponentTypeEXT değerlerinden oluşan bir diziye yönelik işaretçi olmalıdır.componentTypeCount -
baseSpaceGeçerli bir XrSpace hesabı olmalıdır. -
entityCountparametresi değerinden büyük olmalıdır.0 - Hem
baseSpacehem deentitiesöğ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ı
snapshot, daha önce xrCreateSpatialDiscoverySnapshotCompleteEXT veya xrCreateSpatialUpdateSnapshotEXT tarafından sağlanan bir XrSpatialSnapshotEXT'dir .
Uygulama, XrSpatialSnapshotEXT tutamacını ve bununla ilişkili kaynakları yok etmek için xrDestroySpatialSnapshotEXT'yi çağırabilir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialSnapshotEXT çağrılmadan önce etkinleştirilmelidir. -
snapshotgeçerli bir XrSpatialSnapshotEXT işleyici olmalıdır.
İş Parçacığı Güvenliği (Thread Safety)
snapshotve tüm alt tutma yerlerine erişim, harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_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 vecenterü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ı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialBounded2DDataEXT kullanılmadan önce etkinleştirilmelidir.
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,NULLveya 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,boundsdizisindeki öğelerin sayısını açıklayan biruint32_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ı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialComponentBounded2DListEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
boundsboundCountXrSpatialBounded2DDataEXT yapılarının dizisine yönelik bir işaretçi olmalıdır. -
boundCountparametresi değerinden büyük olmalıdır.0
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,NULLveya 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,boundsdizisindeki öğelerin sayısını açıklayan biruint32_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_entityuzantısı, XrSpatialComponentBounded3DListEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
boundsboundCountXrBoxf yapılarından oluşan bir diziye yönelik işaretçi olmalıdır. -
boundCountparametresi 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,NULLveya 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,parentsdizisindeki öğelerin sayısını açıklayan biruint32_t'dir.parents,XrSpatialEntityIdEXTdizisidir .
Ç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_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
parentsmust be a pointer to an array ofparentCountXrSpatialEntityIdEXTvalues -
parentCountparametresi 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 konumuoriginile ilişkili olmalıdır .indexBuffer,vertexBufferiç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ı)
- XrSpatialMeshDataEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
vertexBuffergeçerli bir XrSpatialBufferEXT yapısı olmalıdır. -
indexBuffergeçerli bir XrSpatialBufferEXT yapısı olmalıdır.
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,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.meshCount,meshesdizisindeki öğelerin sayısını açıklayan biruint32_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ı)
- XrSpatialComponentMesh3DListEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
meshesmeshCountXrSpatialMeshDataEXT yapılarının dizisine yönelik bir işaretçi olmalıdır. -
meshCountparametresi değerinden büyük olmalıdır.0
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ı
type, bu yapının XrStructureType'ıdır.next,NULLveya bir yapı zincirindeki sonraki yapının işaretçisidir.trackingState, uygulamanın filtre uygulamak istediği XrSpatialEntityTrackingStateEXT'dir.
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ı)
- XrSpatialFilterTrackingStateEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTolmalıdır. -
nextzorunlu olarakNULLveya bir yapı zincirindeki sonraki yapıya yönelik geçerli bir işaretçi olmalıdır. -
trackingStategeçerli bir XrSpatialEntityTrackingStateEXT değeri olmalıdır.
Örnek kod
Uygulama Kullanımı
Uygulamalar genellikle aşağıdaki düzende mekansal öğe uzantısını kullanır:
- Bir uygulama, xrEnumerateSpatialCapabilitiesEXT kullanarak sistemin uzamsal yeteneklerini önce numaralandırır . Ardından, döndürülen XrSpatialCapabilityEXT dizisini inceler ve sırasıyla xrEnumerateSpatialCapabilityComponentTypesEXT ve xrEnumerateSpatialCapabilityFeaturesEXT kullanarak bu özelliklerin her biri için desteklenen bileşenleri ve özellikleri numaralandırır. Bu sayede uygulama, etkinleştirebileceği bileşenler ve özelliğin kabul ettiği yapılandırmalar hakkında eksiksiz bilgi edinir.
- Uygulama daha sonra belirli uzamsal özellik yapılandırmalarıyla bir veya daha fazla XrSpatialContextEXT tutma yeri oluşturur. Bu yapılandırmalar, uzamsal bağlamda belirli bir özelliği etkinleştirip yapılandırır ve bu özellikler için bileşenleri etkinleştirip yapılandırır.
- Uygulama , her XrSpatialContextEXT için uzamsal varlıkları keşfetmek üzere xrCreateSpatialDiscoverySnapshotAsyncEXT işlevini kullanmadan önce söz konusu XrSpatialContextEXT için XrEventDataSpatialDiscoveryRecommendedEXT etkinliklerinin alınmasını bekler. Bu eşzamansız işlem tamamlandığında uygulama, XrSpatialSnapshotEXT tutacağını alır.
- Uygulama, xrQuerySpatialComponentDataEXT kullanarak bu XrSpatialSnapshotEXT'de yer alan varlıkları ve bileşen verilerini sorgular . Uygulama, sorgulanan öğelerin en son bileşen verilerini, öğe durumu
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTise XrSpatialComponentDataQueryResultEXT'nin sonraki zincirine eklenmiş yapılardan okur . - Uygulama, ilginç olarak tanımladığı ve zaman içinde güncellemeler almak istediği belirli öğeler varsa xrCreateSpatialEntityFromIdEXT kullanarak bu öğeler için XrSpatialEntityEXT tutamaçları oluşturur . Uygulama, xrCreateSpatialUpdateSnapshotEXT kullanarak bu tür ilginç öğeler için güncellemeler alır ve bu öğelerin en son bileşen verilerini almak için yeni oluşturulan XrSpatialSnapshotEXT üzerinde aynı xrQuerySpatialComponentDataEXT işlevini 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ı, ayrıca bu bileşen için bir liste yapısı tanımlamalıdır. Bu yapı, uygulamanın xrQuerySpatialComponentDataEXT ::
queryConditionkoşulunu karşılayan her bir uzamsal öğenin verileriyle doldurulmak üzere çalışma zamanına bir dizi iletmesine olanak tanır. Bu tür liste yapılarına örnek olarak XrSpatialComponentParentListEXT ve XrSpatialComponentBounded2DListEXT verilebilir . Bileşen veri boyutu değişken ise ve sorgulamak için uygulamanın iki çağrılı deyimi kullanmasını gerektiriyorsa bileşen verileri, liste yapısındaki her değişken boyutlu veri için bir XrSpatialBufferEXT sağlamalı ve her arabellek için XrSpatialBufferTypeEXT belirtmelidir. Uygulama, Bileşen verileri için iki çağrılı deyim bölümünde tanımlanan işlevleri kullanarak arabellek verilerini sorgulayabilir. Bu tür bir yapıya örnek olarak, XrSpatialComponentMesh3DListEXT içinde yer alan XrSpatialMeshDataEXT verilebilir . - Uzantı, bu bileşenin verileriyle ilgili sorguya ek filtreler sağlamak için uygulamanın XrSpatialComponentDataQueryConditionEXT ::
nextile zincirleyebileceği yapıları da sağlayabilir.
- Uzantı, ayrıca bu bileşen için bir liste yapısı tanımlamalıdır. Bu yapı, uygulamanın xrQuerySpatialComponentDataEXT ::
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 ,
- Ayrıca, çalışma zamanlarının bu özellik için varlıklarda sağlaması gereken XrSpatialComponentTypeEXT listesini de belirtmelidir.
- Ayrıca, bu özelliğin yapılandırılmasına olanak tanıyan, XrSpatialCapabilityConfigurationBaseHeaderEXT'den türetilmiş yapılar da sağlamalıdır.
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
XrSpatialBufferIdEXTsağ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 birxrGetSpatialBuffer*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 ::
enabledComponentsdizisine 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) veXrSpatialIkeaSofa(ö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ı,
UNCATEGORIZEDetiketine 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
XrSpatialBufferIdEXTXrSpatialEntityIdEXT
Yeni Nesne Türleri
Yeni Komutlar
- xrCreateSpatialContextAsyncEXT
- xrCreateSpatialContextCompleteEXT
- xrCreateSpatialDiscoverySnapshotAsyncEXT
- xrCreateSpatialDiscoverySnapshotCompleteEXT
- xrCreateSpatialEntityFromIdEXT
- xrCreateSpatialUpdateSnapshotEXT
- xrDestroySpatialContextEXT
- xrDestroySpatialEntityEXT
- xrDestroySpatialSnapshotEXT
- xrEnumerateSpatialCapabilitiesEXT
- xrEnumerateSpatialCapabilityComponentTypesEXT
- xrEnumerateSpatialCapabilityFeaturesEXT
- xrGetSpatialBufferFloatEXT
- xrGetSpatialBufferStringEXT
- xrGetSpatialBufferUint16EXT
- xrGetSpatialBufferUint32EXT
- xrGetSpatialBufferUint8EXT
- xrGetSpatialBufferVector2fEXT
- xrGetSpatialBufferVector3fEXT
- xrQuerySpatialComponentDataEXT
Yeni Yapılar
- XrCreateSpatialContextCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT
- XrEventDataSpatialDiscoveryRecommendedEXT
- XrSpatialBounded2DDataEXT
- XrSpatialBufferEXT
- XrSpatialBufferGetInfoEXT
- XrSpatialCapabilityComponentTypesEXT
- XrSpatialCapabilityConfigurationBaseHeaderEXT
- XrSpatialComponentDataQueryConditionEXT
- XrSpatialComponentDataQueryResultEXT
- XrSpatialContextCreateInfoEXT
- XrSpatialDiscoverySnapshotCreateInfoEXT
- XrSpatialEntityFromIdCreateInfoEXT
- XrSpatialMeshDataEXT
- XrSpatialUpdateSnapshotCreateInfoEXT
XrSpatialComponentDataQueryResultEXT'yi genişletme :
XrSpatialDiscoverySnapshotCreateInfoEXT , XrSpatialComponentDataQueryConditionEXT genişletiliyor :
Yeni Sıralamalar
- XrSpatialBufferTypeEXT
- XrSpatialCapabilityEXT
- XrSpatialCapabilityFeatureEXT
- XrSpatialComponentTypeEXT
- XrSpatialEntityTrackingStateEXT
Yeni Enum Sabitleri
XR_EXT_SPATIAL_ENTITY_EXTENSION_NAMEXR_EXT_spatial_entity_SPEC_VERSIONXrObjectType'i genişletme :
XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXTXR_OBJECT_TYPE_SPATIAL_ENTITY_EXTXR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
XrResult'ı genişletme :
XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
XrStructureType uzatma :
XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTXR_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_EXTbileşenini sağlarken nesne izlemeXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTbileş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 hemXR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXThem deXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTaynı öğ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ı