XR_EXT_spatial_entity
Name String
XR_EXT_spatial_entity
Uzantı Türü
Örnek uzantısı
Kayıtlı Dahili Numara
741
Düzeltme
1
Onay Durumu
Onaylandı
Uzantı ve Sürüm Bağımlılıkları
XR_EXT_future
Katkıda bulunanlar
Nihav Jain, Google
Jared Finder, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Karthik Kadappan, Magic Leap
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Genel Bakış
Bu uzantı, OpenXR'da sahne anlama ve uzamsal akıl yürütme ile ilgili kavramları ve temel bilgileri tanıtır. Bu, birbiriyle ilişkili ancak farklı işlev alanlarını birleştirir. Bu alanlar, bu uzantı tarafından tanımlandığı şekilde genel olarak tek tip bir şekilde numaralandırılır, yapılandırılır ve etkileşime girer. Bu uzantıda bu işlevsel alanlardan herhangi birinin somut tanımları bulunmadığından resmi spesifikasyon metni biraz soyut olma eğilimindedir. Bu uzantı spesifikasyon metninde yer alan örnekler, zaman zaman açıklama amacıyla, yaklaşan veya varsayımsal bir ilgili uzantıda tanımlanan işlevlere atıfta bulunur. Bu tür ek işlevler, doğası gereği sınırlanmaz veya belirtilmez.
Bu uzantının ana parçaları şunlardır:
- Uzamsal varlıklar : İşlev, tek başına çok az işlevsellik sağlayan varlıklar etrafında şekillenir.
- Uzamsal bileşenler : Bu varlıkların, veri ve davranış sağlayan ilişkili bileşenleri vardır.
- Uzamsal bileşen türleri : Her uzamsal bileşen belirli bir bileşen türüne aittir ve herhangi bir varlık , herhangi bir bileşen türünde en fazla bir bileşene sahiptir .
- Uzamsal bağlam : Tüm uzamsal varlık etkileşimleri, başlatma ve yapılandırma aşamasından sonra bir bağlamda gerçekleşir.
- Uzamsal özellikler : Uzamsal varlık manipülasyonu, genel olarak özellikler tarafından sağlanır. Yetenek, bir işlev birimidir. Örneğin (sınırlama olmaksızın) uygulama tarafından tanımlanan sabitleyiciler, düzlem algılama veya görüntü izleme. Her özellik genellikle ayrı bir uzantıda tanımlanır (her zamanki gibi örnek oluşturma sırasında etkinleştirilir) ve oluşturma sırasında belirli bir bağlam için etkinleştirilir.
- Her özellik, bileşenlerin bu özellik tarafından sunulan her varlıkta bulunduğu bir bileşen türleri grubuyla ilişkilendirilir. Bir özelliği tanımlayan uzantı, özellik için hangi bileşen türlerinin zorunlu ("garantili") olduğunu belirtir. Aynı uzantı veya diğer uzantılar, bazı olası uygulamalar tarafından sağlanan isteğe bağlı bileşen türlerini belirtebilir. Herhangi bir sayıda özellik, varlıklara belirli bir bileşen türünün bileşenlerini sağlayabilir. Bu bileşenler, bunları üreten özellik ne olursa olsun tek tip olarak kullanılabilir.
- Konumsal özellikler : Ayrıca, bazı özellikler yapılandırma gerektirir ve bu nedenle özellikler tarafından parametreleştirilir .
Bu uzantı, mevcut sistemde desteklenen her özellik tarafından sağlanan bileşenleri (hem zorunlu hem de isteğe bağlı bileşenler) listelemek için bir mekanizma sağlar.
Bazı uygulamalar özellikler için farklı derecelerde parametreleştirme gerektirebileceğinden bu uzantı, mevcut sistemde belirli bir özellik ile ilişkili desteklenen özellik işlevlerini listelemek için bir mekanizma sağlar.
Bu uzantı, çok çeşitli özelliklerde kullanılması beklenen birkaç yaygın bileşeni de tanımlar.
Üç Boyutlu Varlık
Uzamsal varlıklar, belirli bir alanda bulunan ve bileşenler halinde düzenlenmiş çeşitli ilişkili verilere sahip varlıklardır. Aşağıdakilerden herhangi biri olabilir:
- Fiziksel (ör. duvar ve zemin gibi düz yüzeyler, sandalye ve kitaplık gibi nesneler)
- Sanal (ör. başka bir uygulama veya kullanıcı tarafından yerleştirilen ve paylaşılan içerik)
- Uygulama tarafından tanımlanan (ör. uygulamanın bir alanı "Living Room" veya "mutfak" olarak işaretlemesi ya da bir noktayı TV'nin yerleştirileceği konum olarak işaretlemesi vb.)
Kumandalar veya göz bakışı gibi işlem sistemi aracılığıyla sunulan öğelerin uzamsal varlıklar olarak modellenmesi amaçlanmamıştır.
OpenXR'daki uzamsal varlıklar, Varlık-Bileşen sistemi olarak modellenir. Her uzamsal varlığın bir dizi bileşeni vardır ve her bileşen, söz konusu varlık için benzersiz bir veri ve davranış kümesi sağlar.
Uzamsal varlıklar, XrSpatialEntityIdEXT atomu veya XrSpatialEntityEXT tutma yeri ile temsil edilir. Bunlarla ilgili ayrıntılar Uzamsal Varlık Temsilleri bölümünde verilmiştir.
Üç Boyutlu Bileşen Türleri
Uzamsal varlıklar, ilgili varlık için veri veya davranış sağlayan bir ya da daha fazla bileşene sahiptir. Bu uzantı tarafından tanımlanan bazı yaygın bileşenler için Ortak Bileşenler bölümüne bakın.
typedef enum XrSpatialComponentTypeEXT {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT = 1,
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT = 2,
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT = 3,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT = 4,
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT = 1000741000,
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT = 1000741001,
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT = 1000741002,
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT = 1000741003,
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT = 1000743000,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT = 1000744000,
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT = 1000744001,
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT = 1000744002,
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT = 1000762000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT = 1000763000,
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT = 1000782000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT = 1000783000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT = 1000783001,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT = 1000783002,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID = 1000785000,
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID = 1000786000,
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID = 1000791000,
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS = 1000792002,
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS = 1000792003,
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS = 1000792004,
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS = 1000792005,
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1 = 1000793000,
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID = 1000794000,
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2 = 1000798000,
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID = 1000803000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1 = 1000808000,
XR_SPATIAL_COMPONENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;
XrSpatialComponentTypeEXT numaralandırması, çalışma zamanının destekleyebileceği farklı bileşen türlerini tanımlar.
Listelenen tüm bileşen türleri bu uzantı tarafından tek başına sağlanmaz. Bazıları için örnek oluşturma sırasında ek uzantıların etkinleştirilmesi gerekir.
Numaralandırıcılar aşağıdaki değerlere sahiptir:
Enum Açıklaması
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
Uzamsal bir varlık için 2D sınırları sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded2DListEXT, ilgili veri yapısı ise XrSpatialBounded2DDataEXT'tir.
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
Uzamsal bir varlık için 3D sınırları sağlayan bileşen. İlgili liste yapısı XrSpatialComponentBounded3DListEXT, ilgili veri yapısı ise XrBoxf'tir.
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT
Uzamsal bir varlık için üst öğenin XrSpatialEntityIdEXT değerini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentParentListEXT; ilgili veri yapısı XrSpatialEntityIdEXT
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Üç boyutlu bir varlık için 3D mesh sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DListEXT, ilgili veri yapısı ise XrSpatialMeshDataEXT'tir.
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT
Uzamsal bir varlık için düzlem hizalama enum'unu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneAlignmentListEXT, ilgili veri yapısı ise XrSpatialPlaneAlignmentEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT
Uzamsal bir varlık için 2D ağ sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh2DListEXT, ilgili veri yapısı ise XrSpatialMeshDataEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT
Uzamsal bir varlık için 2D sınır poligonu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPolygon2DListEXT, ilgili veri yapısı ise XrSpatialPolygon2DDataEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT
Bir düzlem için semantik etiket sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPlaneSemanticLabelListEXT, ilgili veri yapısı ise XrSpatialPlaneSemanticLabelEXT'tir (XR_EXT_spatial_plane_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT
İşaretçi türünü, kimliğini ve konumunu açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentMarkerListEXT, ilgili veri yapısı ise XrSpatialMarkerDataEXT şeklindedir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT
Bir sahne için semantik etiket sağlayan bileşen. İlgili liste yapısı XrSpatialComponentObjectSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialObjectSemanticLabelEXT'tir. (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT
Klavye için semantik etiket sağlayan bileşen. Karşılık gelen liste yapısı XrSpatialComponentKeyboardSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialKeyboardSemanticLabelEXT'dir (XR_EXT_spatial_object_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT
Fare için semantik etiket sağlayan bileşen; karşılık gelen liste yapısı XrSpatialComponentMouseSemanticLabelListEXT şeklindedir. İlgili veri yapısı XrSpatialMouseSemanticLabelEXT'tir (XR_EXT_spatial_object_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT
Bir sabitleme noktasının konumunu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentAnchorListEXT, ilgili veri yapısı ise XrPosef'dir (XR_EXT_spatial_anchor uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT
Uzamsal varlık için kalıcı UUID sağlayan bileşen. İlgili liste yapısı XrSpatialComponentPersistenceListEXT, ilgili veri yapısı ise XrSpatialPersistenceDataEXT'tir (XR_EXT_spatial_persistence uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
Düzlemsel görüntü türünü açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentImage2DListEXT, ilgili veri yapısı ise XrSpatialImageSizeEXT'tir. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
Üç boyutlu öğelerin 3D mesh'i için normalleri sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DNormalsListEXT, ilgili veri yapısı ise XrSpatialBufferEXT'tir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
Üç boyutlu bir öğenin 3D mesh'i için köşe başına anlamsal etiketler sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DVertexSemanticLabelsListEXT'tir. İlgili veri yapısı XrSpatialBufferEXT'tir. Arabellekteki veriler XrSpatialMeshSemanticLabelEXT ile eşlenir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
Uzamsal bir varlığın 3D ağı için üçgen yüz başına anlamsal etiketler sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT; ilgili veri yapısı XrSpatialBufferEXT; arabellekteki veriler XrSpatialMeshSemanticLabelEXT ile eşlenir (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID
Bir nesne için semantik etiket sağlayan bileşen; İlgili liste yapısı XrSpatialComponentObjectSemanticLabelListANDROID; İlgili veri yapısı XrSpatialObjectSemanticLabelANDROID (XR_ANDROID_spatial_object_tracking uzantısı tarafından eklenir)
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID
Bir varlık üzerindeki ışın çarpmasının pozunu sağlayan bileşen. İlgili liste yapısı XrSpatialComponentRaycastResultListANDROID; ilgili veri yapısı XrSpatialRaycastResultDataANDROID (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklendi)
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID
Ekli varlığı kapsayan varlığın kimliğini sağlayan bileşen. İlgili liste yapısı XrSpatialComponentSubsumedByListANDROID, ilgili veri yapısı ise XrSpatialEntityIdEXT (XR_ANDROID_spatial_component_subsumed_by uzantısı tarafından eklendi) şeklindedir.
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS
Bir ayakkabı kutusunun boyutlarını ve oda türünü sağlayan bileşen; İlgili liste yapısı XrSpatialComponentRoomListANDROIDSYS; İlgili veri yapısı XrSpatialRoomDataANDROIDSYS (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir)
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS
Sınır yüzeyinin malzeme türünü sağlayan bileşen. İlgili liste yapısı XrSpatialComponentMaterialTypeListANDROIDSYS, ilgili veri yapısı ise XrSpatialMaterialTypeANDROIDSYS'tir (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS
İzlenebilir bir öğenin güvenini sağlayan bileşen; Karşılık gelen liste yapısı XrSpatialComponentConfidenceListANDROIDSYS; Karşılık gelen veri yapısı float (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS
Bir odanın boş olup olmadığını belirten bileşen. İlgili liste yapısı XrSpatialComponentRoomEmptinessListANDROIDSYS, ilgili veri yapısı ise float şeklindedir (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1
Ekli varlıktaki doluluk ızgarası hakkında bilgi sağlayan bileşen. İlgili liste yapısı XrSpatialComponentOccupancyGridListANDROIDX1, ilgili veri yapısı ise XrSpatialOccupancyGridDataANDROIDX1 (XR_ANDROIDX1_spatial_occupancy_grid uzantısı tarafından eklenir)
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID
Dörtgen ek açıklamayı açıklayan bir bileşen. İlgili liste yapısı XrSpatialComponentAnnotationQuadListANDROID, ilgili veri yapısı ise XrSpatialAnnotationQuadDataANDROID'dir (XR_ANDROID_spatial_annotation_tracking uzantısı tarafından eklenir).
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2
Sokak görünümü geometrisi için meta verileri sağlayan bileşen; Karşılık gelen liste yapısı XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2; Karşılık gelen veri yapısı XrSpatialStreetscapeGeometryMetadataANDROIDX2 (XR_ANDROIDX2_geospatial_streetscape uzantısı tarafından eklenir)
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID
Bir varlığı geometri noktası olarak tanımlayan bileşen. Bu bileşen türü için karşılık gelen bir liste veya veri yapısı yok. Bu bileşenin varlığı, yalnızca bir varlığın bir sabite eklenebileceğini gösterir. (XR_ANDROID_spatial_geometry_point uzantısı tarafından eklendi)
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1
Varlığın kalıcı olduğu kalıcılık kapsamlarını açıklayan bir bileşen. Çalışma zamanı XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT'yi destekliyorsa bu bileşeni de desteklemesi gerekir. İlgili veri yapısı XrSpatialBufferEXT'tir. İlgili liste yapısı XrSpatialComponentPersistenceScopeDataListANDROIDX1 . (XR_ANDROIDX1_spatial_anchor_cloud_sharing uzantısı tarafından eklendi)
Uzamsal Özellikler ve Kurulum
Uzamsal özellikler, çalışma zamanının belirli bir bileşen grubuna sahip varlıkları keşfetme yeteneklerini tanımlar. Uygulamalar, XrSpatialContextEXT oluştururken uzamsal özelliğin bileşenlerini etkinleştirir ve çalışma zamanı, keşfedilen varlıklarda yalnızca etkinleştirilen bileşenleri sağlamalıdır. Örneğin, bir çalışma zamanı belirli bir özellik için bileşenlerden birinin "semantik etiketler" olduğunu bildirirse bu, uygulamanın ilgili özelliğin yapılandırması aracılığıyla semantik etiketleri etkinleştirebileceği ve çalışma zamanının yalnızca yapılandırılmışsa semantik etiket bileşenini sağlaması gerektiği anlamına gelir.
typedef enum XrSpatialCapabilityEXT {
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT = 1000741000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT = 1000743002,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT = 1000743003,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_ANCHOR_EXT = 1000762000,
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID = 1000785000,
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID = 1000786000,
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS = 1000792000,
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS = 1000792001,
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID = 1000794000,
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2 = 1000798000,
XR_SPATIAL_CAPABILITY_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityEXT;
XrSpatialCapabilityEXT numaralandırması, çalışma zamanının destekleyebileceği farklı özellik türlerini tanımlar.
Numaralandırıcılar aşağıdaki değerlere sahiptir:
Enum Açıklaması
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT
Uçak izleme (XR_EXT_spatial_plane_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT
QR kodlarını algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT
Mikro QR kodlarını algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT
ArUco işaretçilerini algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT
AprilTag'leri algılama ve izleme özelliği. (XR_EXT_spatial_marker_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT
Nesne dosyası (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_ANCHOR_EXT
Üç boyutlu yer işaretleri oluşturma özelliği (XR_EXT_spatial_anchor uzantısı tarafından eklenir)
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT
Düzlemsel referans görselleri algılama ve izleme özelliği. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
Bir ortamın ağını izleme özelliği. (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID
Nesne izleme (XR_ANDROID_spatial_object_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID
Derinlik arabelleğine karşı ışın dökümü (XR_ANDROID_spatial_discovery_raycast uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS
Bir odayı takip etme özelliği (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS
Oda sınırını izleme özelliği (XR_ANDROIDSYS_spatial_room_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID
Not izleme (XR_ANDROID_spatial_annotation_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2
Sokak görünümü geometrisi (XR_ANDROIDX2_geospatial_streetscape uzantısı tarafından eklendi)
xrEnumerateSpatialCapabilitiesEXT işlevi şu şekilde tanımlanır:
XrResult xrEnumerateSpatialCapabilitiesEXT(
XrInstance instance,
XrSystemId systemId,
uint32_t capabilityCapacityInput,
uint32_t* capabilityCountOutput,
XrSpatialCapabilityEXT* capabilities);
Parametre Açıklamaları
instance, bir XrInstance için herkese açık kullanıcı adıdır.systemId, uzamsal özellikleri numaralandırılacakXrSystemIddeğeridir.capabilityCapacityInput,capabilitiesdizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.capabilityCountOutput, özelliklerin sayısı veyacapabilityCapacityInputyetersiz olduğunda gereken kapasitedir.capabilities, XrSpatialCapabilityEXT dizisidir.capabilityCapacityInput0 iseNULLolabilir.- Gerekli
capabilitiesboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrEnumerateSpatialCapabilitiesEXT kullanarak belirli bir XrSystemId tarafından desteklenen uzamsal özelliklerin listesini numaralandırabilir.
Çalışma zamanı, instance için uzantısı etkinleştirilmemiş uzamsal özellikleri listelememelidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrEnumerateSpatialCapabilitiesEXT çağrılmadan önce etkinleştirilmelidir. -
instancegeçerli bir XrInstance herkese açık kullanıcı adı olmalıdır -
capabilityCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
capabilityCapacityInput,0değilsecapabilities,capabilityCapacityInputXrSpatialCapabilityEXT değerlerinden oluşan bir diziye işaret eden 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, bir XrInstance için herkese açık kullanıcı adıdır.systemId, uzamsal özellik bileşenleri numaralandırılacakXrSystemIddeğeridir.capability, bileşenlerin numaralandırılacağı XrSpatialCapabilityEXT'dir.capabilityComponents, uygulama tarafından ayrılan bir dizinin doldurulduğu giriş/çıkış yapısı olan XrSpatialCapabilityComponentTypesEXT'ye işaret eden bir göstergedir.
Bu işlev, belirli bir özelliğin sistemdeki varlıklarında sağladığı bileşen türlerini yapılandırıldığı şekilde listeler.
Uygulama, systemId tarafından capability için desteklenen tüm bileşenleri anlamak amacıyla XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listelenen bileşen türlerini kullanabilir ve bu listeyi kullanarak capability için XrSpatialContextEXT oluştururken geçerli bir yapılandırmanın ne olduğunu belirleyebilir.
capability, xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).
Çalışma zamanı, uzantısı instance için etkinleştirilmemiş uzamsal bileşen türlerini listelememelidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrEnumerateSpatialCapabilityComponentTypesEXT çağrılmadan önce etkinleştirilmelidir -
instancegeçerli bir XrInstance herkese açık kullanıcı adı olmalıdır -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır -
capabilityComponents, bir XrSpatialCapabilityComponentTypesEXT yapısına 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.componentTypeCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.componentTypeCountOutput, bileşen türlerinin sayısı veyacomponentTypeCapacityInputdeğerinin yetersiz olması durumunda gereken kapasitedir.componentTypes, XrSpatialComponentTypeEXT dizisidir.componentTypeCapacityInput0 iseNULLolabilir.- Gerekli
componentTypesboyutunu alma hakkında 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 -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
componentTypeCapacityInput,0değilsecomponentTypes,componentTypeCapacityInputXrSpatialComponentTypeEXT değerlerinden oluşan bir dizinin işaretçisi olmalıdır.
Uzamsal özellikler
typedef enum XrSpatialCapabilityFeatureEXT {
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID = 1000761000,
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID = 1000761001,
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID = 1000761002,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT = 1000782001,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT = 1000782002,
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_FEATURE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityFeatureEXT;
Bazı özelliklerde, bileşen verilerinin çalışma zamanı tarafından nasıl hesaplanacağını yapılandırmak için uygulamaya gösterilen parametreler bulunur. Parametreleştirme/yapılandırılabilirlik boyutları, yetenek özellikleri olarak bilinir. Örneğin, bir görüntü izleme özelliği için çalışma zamanı, uygulamanın izlenen görüntülerin sabit olup olmadığını belirtmesine olanak tanıyan bir özelliği destekleyebilir.
Bu bilgilerin bir yapılandırma yapısı aracılığıyla çalışma zamanına sağlanması, ilişkili varlıklarda (ör. izlenen resimde) bulunan bileşen türleri grubunu değiştirmemelidir. Ancak çalışma zamanı, örneğin görüntü izleme özelliğinin izleme yeteneklerini optimize edebilir ve uygulamaya daha iyi bir deneyim sunabilir.
Bu tür özellikler XrSpatialCapabilityFeatureEXT ile temsil edilir ve uygulama bunları xrEnumerateSpatialCapabilityFeaturesEXT kullanarak listeler.
Her özellik, etkinleştirilmesi için karşılık gelen bir yapılandırma yapısına sahiptir. Bu tür yapılandırma yapıları, ilgili özelliğin XrSpatialCapabilityConfigurationBaseHeaderEXT :: next öğesine zincirlenmelidir (must).
Numaralandırıcılar aşağıdaki değerlere sahiptir:
Enum Açıklaması
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT
Uygulamaların işaretçilerin boyutunu belirtmesine olanak tanıyan özellik. İlgili yapılandırma yapısı XrSpatialMarkerSizeEXT'tir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT
Uygulamaların, işaretçilerin statik olup olmadığını belirtmesine olanak tanıyan özellik. İlgili yapılandırma yapısı XrSpatialMarkerStaticOptimizationEXT'tir (XR_EXT_spatial_marker_tracking uzantısı tarafından eklenir).
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT
Uygulamaların, çalışma zamanının izlemesi için XrSpatialObjectSemanticLabelEXT'ten bir etiket alt kümesi belirtmesine olanak tanıyan uzamsal özellik. İlgili yapılandırma yapısı XrSpatialFeatureObjectSemanticLabelSubsetEXT şeklindedir. (XR_EXT_spatial_object_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID
Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsSpherefANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID
Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsBoxfANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID
Çalışma zamanı, XrSpatialDiscoverySnapshotCreateInfoEXT için XrSpatialBoundsFrustumfANDROID filtresini destekler. Bu, uzamsal bağlam oluşturma sırasında herhangi bir yapılandırma yapısının dahil edilmesini gerektirmez. (XR_ANDROID_spatial_discovery_bounds uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT
Çalışma zamanı, algılanan ve izlenen resimlerin fiziksel boyutunun otomatik olarak çıkarılmasını destekler. İlgili yapılandırma yapısı XrSpatialImageSizeEXT'tir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT
Çalışma zamanı, XrSpatialImageStaticOptimizationEXT'yi destekler. İlgili yapılandırma yapısı XrSpatialImageStaticOptimizationEXT şeklindedir. (XR_EXT_spatial_image_tracking uzantısı tarafından eklendi)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT
Çalışma zamanı XrSpatialImageSizeEXT'yi destekler. İlgili yapılandırma yapısı XrSpatialImageSizeEXT'tir (XR_EXT_spatial_image_tracking uzantısı tarafından eklenir).
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Ortamın su geçirmez bir ağını izleme özelliği. İlgili yapılandırma yapısı XrSpatialFeatureTrackWatertightMeshEXT'tir. (XR_EXT_spatial_mesh_tracking uzantısı tarafından eklendi)
xrEnumerateSpatialCapabilityFeaturesEXT işlevi şu şekilde tanımlanır:
XrResult xrEnumerateSpatialCapabilityFeaturesEXT(
XrInstance instance,
XrSystemId systemId,
XrSpatialCapabilityEXT capability,
uint32_t capabilityFeatureCapacityInput,
uint32_t* capabilityFeatureCountOutput,
XrSpatialCapabilityFeatureEXT* capabilityFeatures);
Parametre Açıklamaları
instance, bir XrInstance için herkese açık kullanıcı adıdır.systemId, uzamsal özelliklerinin numaralandırılacağıXrSystemIddeğeridir.capability, özelliklerin numaralandırılacağı XrSpatialCapabilityEXT'dir.capabilityFeatureCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.capabilityFeatureCountOutput, özelliklerin sayısı veyacapabilityFeatureCapacityInputyetersiz olduğunda gereken kapasitedir.capabilityFeatures, XrSpatialCapabilityFeatureEXT dizisidir.capabilityFeatureCapacityInput0 iseNULLolabilir.- Gerekli
capabilityFeaturesboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrEnumerateSpatialCapabilityFeaturesEXT kullanarak belirli bir sistemin XrSpatialCapabilityEXT için desteklediği özellikleri bulur.
Uygulama, özellikleri gösterilen özellikler için etkinleştirilecek özellikleri seçer ve XrSpatialContextCreateInfoEXT :: capabilityConfigs içindeki özellik yapılandırma yapılarının bir sonraki zincirinde ilgili yapılandırma yapısını sağlar.
capability, xrEnumerateSpatialCapabilitiesEXT tarafından listelenen bir özellik değilse çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).
Çalışma zamanı, instance için uzantısı etkinleştirilmemiş uzamsal özellik işlevlerini listelememelidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrEnumerateSpatialCapabilityFeaturesEXT çağrılmadan önce etkinleştirilmelidir. -
instancegeçerli bir XrInstance herkese açık kullanıcı adı olmalıdır -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır -
capabilityFeatureCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
capabilityFeatureCapacityInput,0değilsecapabilityFeatures,capabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT değerlerinden oluşan bir diziye 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
Üç boyutlu bağlam oluşturma
XR_DEFINE_HANDLE(XrSpatialContextEXT)
XrSpatialContextEXT tanıtıcısı, kullanıcının ortamındaki belirli sayıda uzamsal varlığı keşfetme ve güncelleme kaynaklarını temsil eder. Uygulama, bu uzantıdaki diğer işlevleri kullanarak uzamsal varlıkları keşfetmek ve güncellemek için bu herkese açık kullanıcı adını kullanabilir.
xrCreateSpatialContextAsyncEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialContextAsyncEXT(
XrSession session,
const XrSpatialContextCreateInfoEXT* createInfo,
XrFutureEXT* future);
Parametre Açıklamaları
session, uzamsal bağlamın etkin olacağı bir XrSession'dır.createInfo, uzamsal bağlam parametrelerini belirtmek için kullanılan XrSpatialContextCreateInfoEXT'tir.future, birXrFutureEXTişaretçisidir.
Uygulama, aşağıdaki yöntemlerle XrSpatialContextEXT herkese açık anahtarı oluşturabilir:
- Özellikleri ve bu özellik için bileşenleri etkinleştirmek üzere XrSpatialContextCreateInfoEXT ::
capabilityConfigsiçinde XrSpatialCapabilityConfigurationBaseHeaderEXT türetilmiş yapıları sağlama. - Özellikleri, XrSpatialCapabilityFeatureEXT'nin ilgili yapılandırma yapılarıyla yapılandırma
XrSpatialContextCreateInfoEXT ::capabilityConfigCount 0 ise çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must). Mekansal bağlam tutamağının en az bir özelliği olmalıdır.
XrSpatialContextCreateInfoEXT :: capabilityConfigs dizisindeki herhangi bir özellik xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must).
XrSpatialContextCreateInfoEXT :: capabilityConfigs içindeki herhangi bir XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount 0 ise çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must). Yetenek yapılandırması, ilgili yetenek için etkinleştirilecek bileşen türlerinin listesi olmadan tamamlanamaz.
XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents içinde listelenen herhangi bir bileşen türü xrEnumerateSpatialCapabilityComponentTypesEXT içinde XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability için numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT değerini döndürmelidir.
XrSpatialContextCreateInfoEXT :: capabilityConfigs sonraki zincirindeki yapılardan herhangi biri, xrEnumerateSpatialCapabilityFeaturesEXT içinde bu özellik için listelenmeyen bir XrSpatialCapabilityFeatureEXT öğesine karşılık geliyorsa çalışma zamanı bu XrSpatialCapabilityFeatureEXT yapısını yoksaymalıdır.
XrSpatialContextCreateInfoEXT :: capabilityConfigs, aynı XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability değerine sahip birden fazla yapı içeriyorsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir (must).
Sistem kaynaklarının en iyi şekilde kullanılmasını sağlamak için çalışma zamanı, gelecek uzamsal isteklere hazırlanmak amacıyla XrSpatialContextCreateInfoEXT dizisinde sağlanan yapılandırmaları kullanabilir. Örneğin, düzlem izleme özelliğini destekleyen bir çalışma zamanı, yalnızca uygulama tarafından düzlem izleme özelliğini içeren bir uzamsal bağlam tutma yeri oluşturulursa düzlem izleme ardışık düzenini başlatabilir. Yapılandırılan özelliklerin ısınma süresi uzunsa xrCreateSpatialDiscoverySnapshotAsyncEXT çağrıları boş bir anlık görüntüyle sonuçlanabilir. Uygulama, xrCreateSpatialDiscoverySnapshotAsyncEXT'yi kullanmadan önce XrEventDataSpatialDiscoveryRecommendedEXT'yi bekleyerek temel izleme hizmetlerinin hazır olduğundan emin olabilir.
Çalışma zamanı, XrSpatialContextEXT için yapılandırılan uzamsal özelliklere uygulama erişimini kontrol etmek amacıyla bir izin sistemi uyguluyorsa bu izinler uygulamaya verilmediğinde çalışma zamanı XR_ERROR_PERMISSION_INSUFFICIENT değerini döndürmelidir.
Bu işlev, eşzamansız bir işlem başlatır ve xrPollFutureEXT ve ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin döndürdüğü değer, yalnızca parametrelerin eşzamansız işlemi planlamak için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialContextCompleteEXT'tir. Bu işlevden gelen bir gelecek, HAZIR durumdayken kullanılabilir ve çıkışlar, tamamlama yapısında XrCreateSpatialContextCompletionEXT bu işlev tarafından doldurulur.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialContextAsyncEXT çağrılmadan önce etkinleştirilmelidir. -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSpatialContextCreateInfoEXT yapısına işaretçi olmalıdır. -
future, birXrFutureEXTdeğerine 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_FAILUREXR_ERROR_TIME_INVALID(XR_ANDROID_spatial_annotation_trackingetkinse)
XrSpatialContextCreateInfoEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialContextCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t capabilityConfigCount;
const XrSpatialCapabilityConfigurationBaseHeaderEXT* const* capabilityConfigs;
} XrSpatialContextCreateInfoEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.capabilityConfigCount,capabilityConfigsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.capabilityConfigs, XrSpatialCapabilityConfigurationBaseHeaderEXT işaretçilerinden oluşan bir dizinin işaretçisidir.
XrSpatialContextCreateInfoEXT yapısı, XrSpatialContextEXT herkese açık kullanıcı adını oluşturmak için gereken bilgileri açıklar.
Geçerli Kullanım (Dolaylı)
- XrSpatialContextCreateInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. Ayrıca bkz. XrSpatialContextPersistenceConfigEXT -
capabilityConfigs,capabilityConfigCountgeçerli XrSpatialCapabilityConfigurationBaseHeaderEXT tabanlı yapıdan oluşan bir dizinin işaretçisi olmalıdır. Ayrıca bkz: XrSpatialCapabilityConfigurationAnchorEXT , XrSpatialCapabilityConfigurationAnnotationTrackingANDROID , XrSpatialCapabilityConfigurationAprilTagEXT , XrSpatialCapabilityConfigurationArucoMarkerEXT , XrSpatialCapabilityConfigurationDepthRaycastANDROID , XrSpatialCapabilityConfigurationImageTrackingEXT , XrSpatialCapabilityConfigurationMeshTrackingEXT , XrSpatialCapabilityConfigurationMicroQrCodeEXT , XrSpatialCapabilityConfigurationObjectTrackingANDROID , XrSpatialCapabilityConfigurationObjectTrackingEXT , XrSpatialCapabilityConfigurationPlaneTrackingEXT , XrSpatialCapabilityConfigurationQrCodeEXT , XrSpatialCapabilityConfigurationRoomBoundaryTrackingANDROIDSYS , XrSpatialCapabilityConfigurationRoomTrackingANDROIDSYS , XrSpatialCapabilityConfigurationStreetscapeGeometryANDROIDX2 -
capabilityConfigCountparametresi0değerinden büyük olmalıdır.
XrSpatialCapabilityConfigurationBaseHeaderEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialCapabilityConfigurationBaseHeaderEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationBaseHeaderEXT;
Bu yapı doğrudan API'de kullanılmaz. Bunun yerine, alt yapıları XrSpatialContextCreateInfoEXT ile birlikte kullanılarak uzamsal özellikler yapılandırılabilir.
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.capability, bir XrSpatialCapabilityEXT'tir.enabledComponentCount,enabledComponentsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.enabledComponents, XrSpatialComponentTypeEXT dizisine işaret eden bir göstergedir.
capability, xrEnumerateSpatialCapabilitiesEXT tarafından numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT değerini döndürmelidir (must). enabledComponents içinde listelenen herhangi bir bileşen türü, xrEnumerateSpatialCapabilityComponentTypesEXT içinde capability için numaralandırılmamışsa çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT değerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialCapabilityConfigurationBaseHeaderEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
capabilitygeçerli bir XrSpatialCapabilityEXT değeri olmalıdır -
enabledComponents,enabledComponentCountgeçerli XrSpatialComponentTypeEXT değerinden oluşan bir diziye işaretçi olmalıdır -
enabledComponentCountparametresi0değerinden büyük olmalıdır.
xrCreateSpatialContextCompleteEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialContextCompleteEXT(
XrSession session,
XrFutureEXT future,
XrCreateSpatialContextCompletionEXT* completion);
Parametre Açıklamaları
session, daha önce xrCreateSpatialContextAsyncEXT ::sessionparametresine iletilen XrSession değeridir.future, xrCreateSpatialContextAsyncEXT'ten alınanXrFutureEXTdeğeridir.completion, XrCreateSpatialContextCompletionEXT'ye işaret eden bir göstergedir.
xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT tarafından başlatılan eşzamansız işlemi tamamlar. future hazır durumda değilse çalışma zamanı XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir (must). future zaten tamamlanmış veya iptal edilmişse çalışma zamanı XR_ERROR_FUTURE_INVALID_EXT değerini döndürmelidir (must).
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialContextCompleteEXT çağrılmadan önce etkinleştirilmelidir -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
completion, bir XrCreateSpatialContextCompletionEXT yapısına 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.futureResult, uzamsal bağlam oluşturma işleminin XrResult değeridir.spatialContext, xrCreateSpatialContextAsyncEXT ::createInfoiçindeki veriler ve yapılandırma kullanılarak oluşturulan bir XrSpatialContextEXT'tir.
Gelecekteki İade Kodları
futureResult değer:
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 başarılı bir kodsa spatialContext geçerli olmalıdır. spatialContext geçerliyse yalnızca xrCreateSpatialContextAsyncEXT :: session yaşam döngüsü içinde veya uygulama xrDestroySpatialContextEXT ile spatialContext öğesini yok edene kadar (hangisi önce gerçekleşirse) geçerli kalır.
Geçerli Kullanım (Dolaylı)
- XrCreateSpatialContextCompletionEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya 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 herkese açık anahtarı olmalıdır.
Üç boyutlu bağlamı yok etme
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'tir.
Uygulama, uzamsal varlık keşfi ve güncelleme görevleri tamamlandığında spatialContext tutamacını ve temel kaynakları serbest bırakmak için xrDestroySpatialContextEXT işlevini çağırabilir. spatialContext ile aynı uzamsal özelliklerle oluşturulmuş başka bir geçerli XrSpatialContextEXT yoksa bu çağrı, sistem kaynaklarından tasarruf etmek için çalışma zamanına bu özellikler için gereken izleme hizmetlerini devre dışı bırakma önerisi olarak hizmet eder.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialContextEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır
İleti Dizisi Güvenliği
spatialContextve tüm alt herkese açık kullanıcı adlarına 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
Mekansal Varlık Kimliği
XR_DEFINE_ATOM(XrSpatialEntityIdEXT)
XrSpatialEntityIdEXT, kullanıcının uzamsal ortamında çalışma zamanı tarafından keşfedilen her türlü varlığı temsil etmek için kullanılır. XrSpatialEntityIdEXT, keşfedildiği XrSpatialContextEXT için geçerlidir ve çalışma zamanı, aynı XrSpatialContextEXT içindeki farklı varlıklar için aynı XrSpatialEntityIdEXT'yi yeniden kullanmamalıdır. Ayrıca çalışma zamanı, aynı XrSession içindeki birden fazla XrSpatialContextEXT'te aynı XrSpatialEntityIdEXT değerini yeniden kullanmamalıdır. Bu kural, aynı veya farklı varlıkları temsil etmesinden bağımsız olarak geçerlidir.
#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0
XR_NULL_SPATIAL_ENTITY_ID_EXT, geçersiz bir XrSpatialEntityIdEXT değerini temsil eden ayrılmış bir değerdir. Yalnızca özel olarak izin verildiğinde API işlevlerine iletilebilir ve API işlevlerinden döndürülebilir.
Üç Boyutlu Öğe Tutma Yeri
XR_DEFINE_HANDLE(XrSpatialEntityEXT)
XrSpatialEntityEXT herkese açık anahtarı, uzamsal bir varlığı temsil eder. Uygulamalar, belirli bir varlığa olan ilgisini çalışma zamanına bildirmek için bu tür bir tutma yeri oluşturabilir.
Kimlikten Uzamsal Varlık Tanıtıcısı Oluşturma
xrCreateSpatialEntityFromIdEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialEntityFromIdEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialEntityFromIdCreateInfoEXT* createInfo,
XrSpatialEntityEXT* spatialEntity);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'tir.createInfo, XrSpatialEntityFromIdCreateInfoEXT yapısına işaret eden bir göstergedir.spatialEntity, döndürülen XrSpatialEntityEXT herkese açık adıdır.
Uygulama, kullanıcının ortamında bulunan bir varlığa referans olan XrSpatialEntityEXT herkese açık kullanıcı adını oluşturmak için xrCreateSpatialEntityFromIdEXT işlevini kullanabilir.
XrSpatialEntityFromIdCreateInfoEXT :: entityId, spatialContext için geçerli bir kimlik değilse çalışma zamanı XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT değerini döndürmelidir (must).
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialEntityFromIdEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSpatialEntityFromIdCreateInfoEXT yapısına işaret eden bir işaretçi olmalıdır. -
spatialEntity, bir XrSpatialEntityEXT tutamacına 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.entityId, uygulamanın herkese açık kullanıcı adı oluşturmak istediği varlığınXrSpatialEntityIdEXTdeğeridir.
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 -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Üç Boyutlu Öğe Tanıtıcısını Yok Etme
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 için bir herkese açık kullanıcı adıdır.
Uygulama, bu tutma yerinin referans verdiği varlıkla artık ilgilenmediğinde spatialEntity tutma yerini serbest bırakmak için xrDestroySpatialEntityEXT'yi kullanabilir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialEntityEXT çağrılmadan önce etkinleştirilmelidir. -
spatialEntitygeçerli bir XrSpatialEntityEXT tanıtıcısı olmalıdır
İleti Dizisi Güvenliği
spatialEntityve tüm alt herkese açık kullanıcı adlarına 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, uzamsal varlıkları keşfetmek veya bilinen uzamsal varlıklarla ilgili bilgilerini güncellemek amacıyla uzamsal anlık görüntüler oluşturabilir. XrSpatialSnapshotEXT herkese açık kullanıcı adı, keşfedilen veya güncellenen uzamsal varlıklar için sabit verileri ve uygulama tarafından seçilen bileşenlerinin bir alt kümesini temsil eder. Mekansal anlık görüntü, varlıkların ve bileşen verilerinin tutarlı bir görünümünü temsil eder. Anlık görüntü oluşturulduktan sonra, anlık görüntünün verileri geçerli olduğu sürece sabit kalmalıdır.
Uygulama istediği sayıda anlık görüntü oluşturabilir ancak her yeni anlık görüntü için ayrılan belleğe dikkat etmeli ve artık ihtiyaç duymadığı anlık görüntüleri silmelidir.
Keşif anlık görüntüsü oluşturma
xrCreateSpatialDiscoverySnapshotAsyncEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
XrFutureEXT* future);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'tir.createInfo, bir XrSpatialDiscoverySnapshotCreateInfoEXT işaretçisidir.future, birXrFutureEXTişaretçisidir.
Uygulama, xrCreateSpatialDiscoverySnapshotAsyncEXT kullanarak bir keşif anlık görüntüsü oluşturarak uzamsal varlıkları keşfedebilir.
Bu işlev, eşzamansız bir işlem başlatır ve xrPollFutureEXT ve ilgili işlevlerle kullanılabilen karşılık gelen bir XrFutureEXT oluşturur. Bu işlevin döndürdüğü değer, yalnızca parametrelerin eşzamansız işlemi planlamak için kabul edilebilir olup olmadığını gösterir. İlgili tamamlama işlevi xrCreateSpatialDiscoverySnapshotCompleteEXT'tir. Bu işlevden gelen bir gelecek, HAZIR durumdayken kullanılabilir ve çıkışlar, tamamlama yapısındaki XrCreateSpatialDiscoverySnapshotCompletionEXT işlevi tarafından doldurulur.
Uygulama, önceki isteğin tamamlanmasını beklemeden birden fazla keşif anlık görüntüsü oluşturma isteği gönderebilir. Çalışma zamanı, anlık görüntü oluşturma işlemini herhangi bir sırayla işleyip tamamlayabilir. Çalışma zamanı, cihazın güç, termal veya diğer politikaları nedeniyle sistem kaynaklarının kullanımını azaltması gerekiyorsa uygulamayı kısıtlamak için keşif anlık görüntüsü oluşturma işleminin tamamlanmasını geciktirebilir.
Uygulama, çalışma zamanının anlık görüntüye dahil etmesi gereken verileri içeren bileşenlerin ve varlıkların listesini filtrelemek için XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes kullanabilir. Uygulama, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde geçerli bir uzamsal bileşen türleri listesi sağlıyorsa çalışma zamanı, anlık görüntüye yalnızca XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde sağlanan bileşenlerden en az birine sahip uzamsal öğeleri dahil etmelidir. Ayrıca çalışma zamanı, yalnızca anlık görüntüdeki bileşenlerin verilerini içermelidir.
spatialContext oluşturulurken XrSpatialContextCreateInfoEXT :: capabilityConfigs öğesine iletilen uzamsal özellikler için XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içindeki XrSpatialComponentTypeEXT öğelerinden herhangi biri etkinleştirilmemişse çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT değerini döndürmelidir .
Uygulama, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes içinde uzamsal bileşen türlerinin listesini sağlamazsa çalışma zamanı, spatialContext için yapılandırılan özellikler için XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents içinde listelenen bileşen grubuna sahip olan anlık görüntüdeki tüm uzamsal varlıkları içermelidir. Çalışma zamanı, spatialContext için yapılandırılan özelliklerin tüm etkin bileşenlerine ait verileri içermelidir.
XrEventDataReferenceSpaceChangePending, future tamamlanmadan önce sıraya alınırsa ve XrEventDataReferenceSpaceChangePending :: poseValid yanlışsa çalışma zamanı, içinde öğe olmayan bir XrSpatialSnapshotEXT oluşturabilir veya XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace içinde artık bulunamayan öğelerin XrSpatialEntityTrackingStateEXT değerini XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time konumunda XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT veya XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT olarak ayarlayabilir. Çalışma zamanı, XrEventDataReferenceSpaceChangePending nedeniyle XrCreateSpatialContextCompletionEXT :: futureResult değerini bir hata koduna ayarlamamalıdır.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialDiscoverySnapshotAsyncEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSpatialDiscoverySnapshotCreateInfoEXT yapısına işaretçi olmalıdır. -
future, birXrFutureEXTdeğerine 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.componentTypeCount,componentTypesdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.componentTypes, XrSpatialComponentTypeEXT dizisidir.
XrSpatialDiscoverySnapshotCreateInfoEXT yapısı, uzamsal varlıkları keşfederken XrSpatialSnapshotEXT herkese açık kullanıcı adını oluşturmak için gereken bilgileri açıklar.
Geçerli Kullanım (Dolaylı)
- XrSpatialDiscoverySnapshotCreateInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. Ayrıca bkz: XrSpatialBoundsBoxfANDROID , XrSpatialBoundsFrustumfANDROID , XrSpatialBoundsSpherefANDROID , XrSpatialDiscoveryPersistenceContextFilterANDROIDX1 , XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialDiscoveryRoomBoundaryFilterANDROIDSYS , XrSpatialDiscoveryUniqueEntitiesFilterANDROID , XrSpatialFilterTrackingStateEXT , XrSpatialRaycastInfoANDROID -
componentTypeCount,0değilsecomponentTypes,componentTypeCountgeçerli XrSpatialComponentTypeEXT değerinden oluşan bir dizinin işaretçisi olmalıdır.
xrCreateSpatialDiscoverySnapshotCompleteEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
XrSpatialContextEXT spatialContext,
const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialDiscoverySnapshotAsyncEXT ::spatialContextöğesine iletilen XrSpatialContextEXT değeridir.createSnapshotCompletionInfo, keşif anlık görüntüsü oluşturma isteğinin tamamlanması hakkında bilgi sağlayan bir XrCreateSpatialDiscoverySnapshotCompletionInfoEXT işaretçisidir.completion, bir XrCreateSpatialDiscoverySnapshotCompletionEXT işaretçisidir.
xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT tarafından başlatılan eşzamansız işlemi tamamlar. XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future hazır durumda değilse çalışma zamanı XR_ERROR_FUTURE_PENDING_EXT değerini döndürmelidir (must). XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future zaten tamamlanmış veya iptal edilmişse çalışma zamanı XR_ERROR_FUTURE_INVALID_EXT değerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
- xrCreateSpatialDiscoverySnapshotCompleteEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createSnapshotCompletionInfo, geçerli bir XrCreateSpatialDiscoverySnapshotCompletionInfoEXT yapısına işaret eden bir işaretçi olmalıdır. -
completion, bir XrCreateSpatialDiscoverySnapshotCompletionEXT yapısına 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.baseSpace, keşif XrSpatialSnapshotEXT'nin tüm konumlarının bulunacağı XrSpace'tir.time, XrSpatialSnapshotEXT keşfinin tüm konumlarının bulunacağıXrTimedeğeridir.future, xrCreateSpatialDiscoverySnapshotAsyncEXT'ten alınanXrFutureEXTdeğeridir.
Oluşturulan anlık görüntüye dahil edilen çeşitli bileşen verilerindeki konumlar, time konumundaki baseSpace içinde temsil edilir.
Geçerli Kullanım (Dolaylı)
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.futureResult, uzamsal keşif anlık görüntüsü oluşturma işleminin XrResult değeridir.snapshot, keşfedilen uzamsal varlıkların bileşen verilerini sorgulamak için kullanılabilen bir XrSpatialSnapshotEXT'tir.
Gelecekteki İade Kodları
futureResult değer:
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ı)
- XrCreateSpatialDiscoverySnapshotCompletionEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
futureResultgeçerli bir XrResult değeri olmalıdır -
snapshot, XR_NULL_HANDLE değilsesnapshotgeçerli bir XrSpatialSnapshotEXT herkese açık anahtarı 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.spatialContext, çalışma zamanı tarafından keşfin önerildiği XrSpatialContextEXT'tir.
Uygulama, xrPollEvent kullanarak bu etkinliği alabilir. Uygulama, bu etkinliği bekleyerek uzamsal varlıkları keşfetmek için xrCreateSpatialDiscoverySnapshotAsyncEXT'e aşırı çağrı yapılmasını önleyebilir. Uygulama, iki XrEventDataSpatialDiscoveryRecommendedEXT etkinliği arasında aynı XrSpatialDiscoverySnapshotCreateInfoEXT ile birden fazla keşif anlık görüntüsü oluşturursa elde edilen anlık görüntüler aynı varlıkları içerebilir. Bu nedenle, anlık görüntü oluşturma ve veri sorguları gereksiz olur.
Yeni bir keşif anlık görüntüsü oluşturmak için bu etkinliğin beklenmesi, uygulamanın, çalışma zamanının yeni veri döndürmeyebileceği keşif istekleriyle sistemi aşırı yüklememesini sağlar. Ayrıca sistem kaynaklarının aşırı kullanımı ve cihazın güç veya termal politikaları nedeniyle kısıtlanma riskini önlemeye yardımcı olur. Bu, canlı izleme ile anında uzamsal varlıkları keşfeden çalışma zamanları ile daha önce kaydedilmiş bir durumdan uzamsal varlıklar sağlayan çalışma zamanları arasında eşitlik oluşturmaya da yardımcı olur (çalışma zamanı, keşif önerisi etkinliğini her XrSpatialContextEXT için yalnızca bir kez sıraya alabilir).
Çalışma zamanı, mevcut uzamsal varlıkların bileşen verilerinde yapılan değişiklikler veya düzenlemeler hakkında uygulamayı bilgilendirmek için bu etkinliği sıraya almamalıdır. Uygulama, ilgilendiği uzamsal varlıkların bileşen verisi güncellemelerini takip etmek için xrCreateSpatialUpdateSnapshotEXT'yi kullanabilir.
Çalışma zamanı, uygulamanın önce xrCreateSpatialDiscoverySnapshotAsyncEXT'yi çağırmasını beklemeden bir keşif önerisi etkinliğini sıraya alabilir. Örneğin, bir çalışma zamanı, keşif önerisi etkinliğini sıraya alma kararını XrSpatialContextEXT yapılandırmasına, kullanıcının etrafındaki ortamı kendi anlayışına (yeni varlıkların keşfi veya mevcut varlıkların kaybı) ya da sistem kaynaklarını aşırı yüklememek için uygulamaya uygun bir keşif isteği sıklığı önermeye dayandırabilir. Çalışma zamanı, XrSpatialContextEXT'nin kullanım ömrü boyunca kullanıcının ortamında hiçbir varlık bulunmazsa bu etkinliği hiçbir zaman XrSpatialContextEXT için sıraya almamayı seçebilir.
Uygulama, xrCreateSpatialContextCompleteEXT kullanarak oluşturma işlemini tamamlayana kadar çalışma zamanı, belirli bir spatialContext için bu etkinliği sıraya almamalıdır.
Uygulama xrDestroySpatialContextEXT'i çağırdıktan sonra çalışma zamanı, söz konusu uzamsal bağlam için daha fazla keşif önerisi etkinliğini sıraya almamalı ve xrPollEvent'ten bu bağlam için bu tür etkinlikler döndürmemelidir.
Geçerli Kullanım (Dolaylı)
- XrEventDataSpatialDiscoveryRecommendedEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir -
typeXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Sorgu Bileşeni Verileri
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'tir.queryCondition, bir XrSpatialComponentDataQueryConditionEXT yapısına işaretçidir.queryResult, XrSpatialComponentDataQueryResultEXT yapısına işaret eden bir göstergedir.
Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içindeki her XrSpatialComponentTypeEXT öğesine karşılık gelen XrSpatialComponentDataQueryResultEXT :: next öğesine bir liste yapısı ekleyerek anlık görüntüdeki varlıkların bileşen verilerini sorgulamak için xrQuerySpatialComponentDataEXT işlevini kullanabilir.
Uygulama, XrSpatialComponentDataQueryResultEXT :: next öğesine XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde listelenen bileşenlerin hiçbirine karşılık gelmeyen bir liste yapısı eklerse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
Uygulama, yalnızca XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde listelenen bileşenlerin bir alt kümesine karşılık gelen liste yapılarını eklemeyi seçebilir. Uygulama, yalnızca queryCondition koşulunu karşılayan uzamsal varlıkların kimliklerini ve izleme durumunu öğrenmek istiyorsa liste yapılarını tamamen atlamayı seçebilir. Çalışma zamanı, XrSpatialComponentDataQueryResultEXT :: next zincirinde liste yapılarının olmamasını hata olarak değerlendirmemelidir.
XrEventDataReferenceSpaceChangePending sıraya alınırsa ve uygulama bir XrSpatialSnapshotEXT'ten bileşen verilerini sorgularken XrEventDataReferenceSpaceChangePending :: changeTime geçerse uygulama, pozları buna göre ayarlamak için etkinlik verilerini kullanabilir.
Çalışma zamanı, XrSpatialComponentDataQueryResultEXT :: entityIds öğesini yalnızca XrSpatialComponentDataQueryConditionEXT :: componentTypes içinde belirtilen tüm bileşenlere sahip varlıklarla doldurmalıdır (must). XrSpatialComponentDataQueryConditionEXT :: componentTypeCount 0 ise çalışma zamanı, queryResult öğesini anlık görüntüdeki tüm varlıklarla (ve bunların izleme durumlarıyla) doldurmalıdır. XrSpatialComponentDataQueryConditionEXT :: next öğesine ek sorgu koşulları eklenirse çalışma zamanı, bunları bileşen türlerinin kullanılabilirliğiyle birlikte "VE" olarak değerlendirmelidir. Yani çalışma zamanı, XrSpatialComponentDataQueryResultEXT ::entityIds öğesini yalnızca sağlanan tüm koşulları karşılayan varlıklarla doldurmalıdır. Çalışma zamanı, liste yapılarındaki bileşen verilerini XrSpatialComponentDataQueryResultEXT :: entityIds içindeki varlıklarla aynı sırada doldurmalıdır. Yani liste yapısı dizisindeki belirli bir dizinde bulunan bileşen verileri, aynı dizindeki varlığa karşılık gelmelidir.
Bir varlığın izleme durumu XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT değilse çalışma zamanı, XrSpatialComponentDataQueryResultEXT'ye ekli liste yapılarında bulunan dizideki bu varlığa karşılık gelen dizindeki verileri değiştirmemelidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrQuerySpatialComponentDataEXT çağrılmadan önce etkinleştirilmelidir -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
queryCondition, geçerli bir XrSpatialComponentDataQueryConditionEXT yapısına işaretçi olmalıdır. -
queryResult, bir XrSpatialComponentDataQueryResultEXT yapısına 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 öğeler şunlardır:
- 1 ve 2 numaralı varlıklar
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTveXR_SPATIAL_COMPONENT_TYPE_PARENT_EXTbileşenlerine sahip - 3 ve 4 numaralı varlıkların
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTveXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTbileşenleri var. - 5 numaralı 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
Hayır Metin SVG değil, görüntülenemiyor
20. şekil. Örnek anlık görüntü
Sorgu koşulunda XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT listelenen yukarıdaki anlık görüntüde xrQuerySpatialComponentDataEXT, 1, 2 ve 5 numaralı varlıkların uygulamaya döndürülmesine neden olur. Uygulama, bounded2D verilerini almak için XrSpatialComponentDataQueryResultEXT'nin bir sonraki zincirine XrSpatialComponentBounded2DListEXT yapısının bir parçası olarak bir XrSpatialBounded2DDataEXT dizisi ekleyebilir.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
1
1
2
2
5
5
Bounded2D
Bounded2D
#1 numaralı entityId için veriler
Tüzel kişi verileri...
2 numaralı entityId için veriler
Tüzel kişi verileri...
entityId #5 için veriler
Tüzel kişi verileri...
entityIds
entityIds
sonraki
sonraki
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Dat...
sınırlar
sınırlar
XrSpatialComponent Bounded2DListEXT
XrSpatialComponent Bou... Metin SVG değil, görüntülenemiyor
21. şekil. Örnek sorgu sonucu
Sorgu koşulunda listelenen XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşenleriyle yukarıdaki anlık görüntüde xrQuerySpatialComponentDataEXT, 3 ve 4 numaralı varlıkların uygulamaya döndürülmesine neden olur. Uygulama, bileşen verilerini almak için sırasıyla XrSpatialComponentBounded3DListEXT ve XrSpatialComponentMesh3DListEXT yapılarının bir parçası olarak XrBoxf ve XrSpatialMeshDataEXT dizilerini bir sonraki XrSpatialComponentDataQueryResultEXT zincirine ekleyebilir.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
3
3
4
4
Bounded3D
Bounded3D
entityId #3 için veriler
Tüzel kişi verileri...
entityId #4 için veriler
Tüzel kişi verileri...
Mesh3D
Mesh3D
entityId #3 için veriler
Tüzel kişi verileri...
entityId #4 için veriler
Tüzel kişi verileri...
entityIds
entityIds
sonraki
sonraki
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Da...
sınırlar
sınırlar
sonraki
sonraki
XrSpatialComponent Bounded3DListEXT
XrSpatialComponent Bo...
XrSpatialComponent Mesh3DListEXT
XrSpatialComponent Me...
ağlar
meshes Text is not SVG - cannot display
22. şekil. Örnek sorgu sonucu
XrSpatialComponentDataQueryConditionEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentDataQueryConditionEXT {
XrStructureType type;
const void* next;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialComponentDataQueryConditionEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.componentTypeCount,componentTypesdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.componentTypes, anlık görüntüden verileri alınacak XrSpatialComponentTypeEXT dizisidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialComponentDataQueryConditionEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. Ayrıca bkz: XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialFilterArchetypeEXT , XrSpatialFilterTrackingStateEXT -
componentTypeCount,0değilsecomponentTypes,componentTypeCountgeçerli XrSpatialComponentTypeEXT değerinden oluşan bir dizinin işaretçisi olmalıdır.
XrSpatialComponentDataQueryResultEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentDataQueryResultEXT {
XrStructureType type;
void* next;
uint32_t entityIdCapacityInput;
uint32_t entityIdCountOutput;
XrSpatialEntityIdEXT* entityIds;
uint32_t entityStateCapacityInput;
uint32_t entityStateCountOutput;
XrSpatialEntityTrackingStateEXT* entityStates;
} XrSpatialComponentDataQueryResultEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.entityIdCapacityInput,entityIdsdizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.entityIdCountOutput,entityIdsiçindekiXrSpatialEntityIdEXTsayısı veyaentityIdCapacityInputyetersiz olduğunda gereken kapasitedir.entityIds,XrSpatialEntityIdEXTdizisidir.entityIdCapacityInput0 iseNULLolabilir.entityStateCapacityInput,entityStatesdizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.entityStateCountOutput,entityStatesiçindeki XrSpatialEntityTrackingStateEXT sayısı veyaentityStateCapacityInputyetersizse gerekli kapasitedir. Bu, her zamanentityIdCountOutputile aynı olmalıdır.entityStates, XrSpatialEntityTrackingStateEXT dizisidir.entityStateCapacityInput0 iseNULLolabilir.- Gerekli
entityIdsboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulamalar, düzenli güncellemeler almak istediği öğeler için XrSpatialEntityEXT tanıtıcıları oluşturmak üzere xrCreateSpatialEntityFromIdEXT ile entityIds kullanabilir. Uygulama daha sonra bu XrSpatialEntityEXT tanıtıcılarını xrCreateSpatialUpdateSnapshotEXT ile kullanarak, sağlanan varlıklar için bileşenlerin çalışma zamanının bilinen en son verilerini içeren bir güncelleme anlık görüntüsü oluşturabilir.
Geçerli Kullanım (Dolaylı)
- XrSpatialComponentDataQueryResultEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. Ayrıca bkz: XrSpatialComponentAnchorListEXT , XrSpatialComponentAnnotationQuadListANDROID , XrSpatialComponentBounded2DListEXT , XrSpatialComponentBounded3DListEXT , XrSpatialComponentConfidenceListANDROIDSYS , XrSpatialComponentImage2DListEXT , XrSpatialComponentKeyboardSemanticLabelListEXT , XrSpatialComponentMarkerListEXT , XrSpatialComponentMaterialTypeListANDROIDSYS , XrSpatialComponentMesh2DListEXT , XrSpatialComponentMesh3DListEXT , XrSpatialComponentMesh3DNormalsListEXT , XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT , XrSpatialComponentMesh3DVertexSemanticLabelsListEXT , XrSpatialComponentMouseSemanticLabelListEXT , XrSpatialComponentObjectSemanticLabelListANDROID , XrSpatialComponentObjectSemanticLabelListEXT , XrSpatialComponentOccupancyGridListANDROIDX1 , XrSpatialComponentParentListEXT , XrSpatialComponentPersistenceListEXT , XrSpatialComponentPersistenceScopesListANDROIDX1 , XrSpatialComponentPlaneAlignmentListEXT , XrSpatialComponentPlaneSemanticLabelListEXT , XrSpatialComponentPolygon2DListEXT , XrSpatialComponentRaycastResultListANDROID , XrSpatialComponentRoomEmptinessListANDROIDSYS , XrSpatialComponentRoomListANDROIDSYS , XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 , XrSpatialComponentSubsumedByListANDROID -
entityIdCapacityInput,0değilseentityIds,entityIdCapacityInputXrSpatialEntityIdEXTdeğerlerinden oluşan bir dizinin işaretçisi olmalıdır. -
entityStateCapacityInput,0değilseentityStates,entityStateCapacityInputXrSpatialEntityTrackingStateEXT değerlerinden oluşan bir dizinin işaretçisi olmalı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ı listeler:
Numaralandırmalar aşağıdaki anlamlara sahiptir:
Enum Açıklaması
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT
Çalışma zamanı, bu varlığı izlemeyi durdurdu ve izlemeye devam etmeyecek.
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT
Çalışma zamanı bu varlığı izlemeyi duraklattı ancak gelecekte izlemeye devam edebilir.
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT
Çalışma zamanı şu anda bu varlığı izliyor ve bileşen verileri geçerli.
İZLEME
DURAKLATILDI
DURDURULDU
23. şekil XrSpatialEntityTrackingStateEXT
- Çalışma zamanı, uzamsal öğenin takibini askıya alırsa ancak gelecekte takibini devam ettirme olasılığı varsa uzamsal öğenin durumunu
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTyerineXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTolarak değiştirebilir. Çalışma zamanının bunu yapabileceği durumlara örnek olarak (ancak bunlarla sınırlı olmamak üzere) uygulamanın giriş odağını kaybetmesi, belirli bir uzamsal varlığın kullanıcıdan doğru şekilde izlenemeyecek kadar uzakta olması veya izlenen çok fazla varlık olması ve çalışma zamanının izleme maliyetini azaltmak istemesi verilebilir. XrSpatialEntityTrackingStateEXT, uygulamanın her çalışma zamanının farklı izleme politikalarından etkilenmemesine yardımcı olur. - Çalışma zamanı, bir varlığın durumunu
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTikenXR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTveyaXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTolarak değiştirebilir. - Çalışma zamanı, uzamsal varlık kaybolursa ve takibi hiçbir zaman kurtarılamayacak veya devam ettirilemeyecekse uzamsal varlığın durumunu
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTveyaXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTyerineXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTolarak değiştirmelidir. Örneğin, cihaz izlemeyi kaybeder, izleme oturumunu yeniden başlatır ancak ortamında yeniden yerelleştirme yapamaz ve bu nedenle bu izleme oturumunun keşfedilen varlıklarını yeni varlıklar olarak değerlendirir. - Bir varlığın izleme durumu
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTolarak ayarlandıktan sonra çalışma zamanı bunu başka bir durumla değiştirmemelidir. - xrQuerySpatialComponentDataEXT kullanarak bir uzamsal varlığın bileşen verilerini sorgularken, varlık durumu
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTise çalışma zamanı, sonraki XrSpatialComponentDataQueryResultEXT zincirinde uygulama tarafından sağlanan arabelleklerin içeriğinde geçerli veriler ayarlamalıdır (must). Varlık 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ı
- Tampon verilerin
XrSpatialBufferIdEXTdeğerinibufferId. bufferType,bufferIdiçindeki veri türünü belirtmek için kullanılan XrSpatialBufferTypeEXT değeridir. Uygulama, arabelleğin gerçek verilerini almak için hangi işlevin kullanılacağını belirlemek üzerebufferTypekullanabilir.
Bazı uzamsal bileşenler değişken boyutlu verilere sahiptir ve bu nedenle verilerini almak için iki çağrılı deyimin kullanılmasını gerektirir. Bu gibi durumlarda, uzamsal bileşen veri yapısı, bileşenin verilerinde gereken her değişken boyutlu arabellek için bir XrSpatialBufferEXT sağlar.
Aynı bufferId için çalışma zamanı, bir bileşen veri sorgusundan diğerine, hatta bir anlık görüntüden diğerine aynı verileri sağlamalıdır. Bileşen veri sorgusu çağrıları arasında farklı bir bufferId, uygulamaya ilgili bileşenin verilerinin değişmiş olabileceğini gösterir.
Geçerli Kullanım (Dolaylı)
- 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, uzamsal bir bileşen için her türlü değişken boyutlu veriyi temsil etmek amacıyla kullanılır.
Çalışma zamanı, XrSpatialBufferIdEXT ve verilerini en azından onu içeren XrSpatialSnapshotEXT'nin yaşam döngüsü boyunca bellekte tutmalıdır. Çalışma zamanı, uygulamanın daha sonra oluşturduğu anlık görüntülerin bir parçası olarak aynı kimliği döndürmek için XrSpatialBufferIdEXT ve verilerini XrSpatialSnapshotEXT yaşam döngüsünden daha uzun süre bellekte tutabilir. Aynı XrSpatialBufferIdEXT için çalışma zamanı, uygun xrGetSpatialBuffer* işlevi aracılığıyla her zaman aynı verileri döndürmelidir.
typedef enum XrSpatialBufferTypeEXT {
XR_SPATIAL_BUFFER_TYPE_UNKNOWN_EXT = 0,
XR_SPATIAL_BUFFER_TYPE_STRING_EXT = 1,
XR_SPATIAL_BUFFER_TYPE_UINT8_EXT = 2,
XR_SPATIAL_BUFFER_TYPE_UINT16_EXT = 3,
XR_SPATIAL_BUFFER_TYPE_UINT32_EXT = 4,
XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT = 5,
XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT = 6,
XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT = 7,
XR_SPATIAL_BUFFER_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialBufferTypeEXT;
XrSpatialBufferTypeEXT numaralandırması, temsil edilen arabelleğin farklı veri türlerini tanımlar XrSpatialBufferIdEXT .
Numaralandırma Açıklamaları
XR_SPATIAL_BUFFER_TYPE_STRING_EXT.XrSpatialBufferIdEXT, dize arabelleği almak için xrGetSpatialBufferStringEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT8_EXT.XrSpatialBufferIdEXT,uint8_tarabelleği almak için xrGetSpatialBufferUint8EXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT16_EXT.XrSpatialBufferIdEXT,uint16_tarabelleğini almak için xrGetSpatialBufferUint16EXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_UINT32_EXT.XrSpatialBufferIdEXT,uint32_tarabelleği almak için xrGetSpatialBufferUint32EXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT.XrSpatialBufferIdEXT,floatarabelleğini almak için xrGetSpatialBufferFloatEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT.XrSpatialBufferIdEXT, XrVector2f arabelleği almak için xrGetSpatialBufferVector2fEXT'ye iletilebilir.XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT.XrSpatialBufferIdEXT, XrVector3f arabelleği almak için xrGetSpatialBufferVector3fEXT'ye iletilebilir.
xrGetSpatialBufferStringEXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferStringEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
char* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput, karakter sayısı veyabufferCapacityInput'in yetersiz olması durumunda gereken kapasitedir.buffer,chardizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferStringEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_STRING_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_STRING_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Çalışma zamanı tarafından doldurulan buffer, boş değerle sonlandırılmış bir UTF-8 dizesi olmalıdır.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferStringEXT çağrılmadan önce etkinleştirilmelidir. -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputkarakter değerlerinden oluşan bir diziye 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
xrGetSpatialBufferUint8EXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferUint8EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint8_t* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer,uint8_tdizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferUint8EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT8_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferUint8EXT çağrılmadan önce etkinleştirilmelidir. -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputuint8_tdeğ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
xrGetSpatialBufferUint16EXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferUint16EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint16_t* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer,uint16_tdizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferUint16EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT16_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT16_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferUint16EXT çağrılmadan önce etkinleştirilmelidir. -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputuint16_tdeğ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
xrGetSpatialBufferUint32EXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferUint32EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint32_t* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tanıtıcıdır.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer,uint32_tdizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferUint32EXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT değeridir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferUint32EXT çağrılmadan önce etkinleştirilmelidir -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputuint32_tdeğ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
xrGetSpatialBufferFloatEXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferFloatEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
float* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer,floatdizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferFloatEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
- xrGetSpatialBufferFloatEXT çağrılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmiş olmalıdır. -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
bufferCapacityInput,0değilsebuffer,bufferCapacityInputfloatdeğ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
xrGetSpatialBufferVector2fEXT işlevi şu şekilde tanımlanır:
XrResult xrGetSpatialBufferVector2fEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
XrVector2f* buffer);
Parametre Açıklamaları
snapshot, bir XrSpatialSnapshotEXT için tutma yeridir.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer, XrVector2f dizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferVector2fEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT verilerini alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferVector2fEXT çağrılmadan önce etkinleştirilmelidir -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine 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, bir XrSpatialSnapshotEXT için tanıtıcıdır.info, sorgulanacak arabellekle ilgili bilgileri içerir.bufferCapacityInput, dizinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.bufferCountOutput,bufferdizisindeki öğe sayısı veyabufferCapacityInputyetersiz olduğunda gereken kapasitedir.buffer, XrVector3f dizisidir.bufferCapacityInput0 iseNULLolabilir.- Gerekli
bufferboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrGetSpatialBufferVector3fEXT kullanarak bir bileşen tarafından sağlanan XrSpatialBufferEXT için verileri alabilir. Burada XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT değerindedir.
XrSpatialBufferGetInfoEXT :: bufferId için XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
XrSpatialBufferGetInfoEXT :: bufferId, snapshot öğesine ait değilse çalışma zamanı XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrGetSpatialBufferVector3fEXT çağrılmadan önce etkinleştirilmeli. -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır. -
info, geçerli bir XrSpatialBufferGetInfoEXT yapısına işaretçi olmalıdır. -
bufferCountOutput, biruint32_tdeğerine 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.- Verileri alınacak arabellek için
bufferIdbirXrSpatialBufferIdEXT.
Geçerli Kullanım (Dolaylı)
- XrSpatialBufferGetInfoEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmiş olmalıdır. -
typeXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya 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 API işlevlerinden döndürülebilir.
Güncelleme Anlık Görüntüsü Oluşturma
xrCreateSpatialUpdateSnapshotEXT işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialUpdateSnapshotEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialUpdateSnapshotCreateInfoEXT* createInfo,
XrSpatialSnapshotEXT* snapshot);
Parametre Açıklamaları
spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'tir.createInfo, bir XrSpatialUpdateSnapshotCreateInfoEXT işaretçisidir.snapshot, XrSpatialSnapshotEXT sonucuna işaret eden bir göstergedir.
Uygulama, anlık görüntü oluşturmak ve çalışma zamanı tarafından bilinen belirli varlıklar için en son bileşen verilerini almak üzere xrCreateSpatialUpdateSnapshotEXT işlevini kullanabilir. Uygulamalar, anlık görüntüyü oluştururken XrSpatialEntityEXT herkese açık kullanıcı adlarını ve ilgilendikleri bileşen türlerini sağlayabilir.
Uygulama, verileri anlık görüntüye dahil edilmesi gereken bileşenlerin listesini filtrelemek için XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes kullanabilir. Uygulama, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde geçerli bir uzamsal bileşen türleri listesi sağlıyorsa çalışma zamanı, anlık görüntüye yalnızca XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde sağlanan bileşenlerden en az birine sahip uzamsal öğeleri dahil etmelidir. Ayrıca çalışma zamanı, yalnızca anlık görüntüdeki bileşenlerin verilerini içermelidir.
XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içindeki XrSpatialComponentTypeEXT öğelerinden herhangi biri, spatialContext oluşturulurken XrSpatialContextCreateInfoEXT :: capabilityConfigs öğesine iletilen uzamsal özellikler için etkinleştirilmemişse çalışma zamanı XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT değerini döndürmelidir (must).
Uygulama, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes içinde uzamsal bileşen türlerinin listesini sağlamazsa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: entities içinde listelenen tüm uzamsal varlıkları anlık görüntüye dahil etmelidir ve spatialContext için yapılandırılan özelliklerin tüm etkin bileşenlerinin verilerini içermelidir.
Çalışma zamanı, snapshot içinde XrSpatialUpdateSnapshotCreateInfoEXT :: entities bölümünde listelenmeyen uzamsal varlıkları içermemelidir.
Uygulama istediği sayıda anlık görüntü oluşturabilir ancak her yeni anlık görüntü için ayrılan belleğe dikkat etmeli ve artık ihtiyaç duymadığı anlık görüntüleri silmelidir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrCreateSpatialUpdateSnapshotEXT çağrılmadan önce etkinleştirilmelidir. -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createInfogeçerli bir XrSpatialUpdateSnapshotCreateInfoEXT yapısına işaretçi olmalıdır -
snapshot, bir XrSpatialSnapshotEXT herkese açık adına 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 değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.entityCount,entitiesdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.entities, çalışma zamanının anlık görüntüye bileşen verilerini eklemesi gereken bir XrSpatialEntityEXT dizisidir.componentTypeCount,componentTypesdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.componentTypes, çalışma zamanının anlık görüntüye verileri eklemesi gereken bir XrSpatialComponentTypeEXT dizisidir.baseSpace, güncellemenin tüm konumlarının XrSpatialSnapshotEXT bulunacağı XrSpace'tir.time, XrSpatialSnapshotEXT güncellemesinin tüm konumlarının bulunacağıXrTimedeğeridir.
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 -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
entities,entityCountgeçerli XrSpatialEntityEXT tutma yerinden oluşan bir dizinin işaretçisi olmalıdır. -
componentTypeCount,0değilsecomponentTypes,componentTypeCountgeçerli XrSpatialComponentTypeEXT değerinden oluşan bir dizinin işaretçisi olmalıdır. -
baseSpacegeçerli bir XrSpace hesabı olmalıdır -
entityCountparametresi0değerinden büyük olmalıdır. -
baseSpaceveentitiesöğelerinin her ikisi de aynı XrSession'dan oluşturulmuş, ayrılmış veya alınmış olmalıdır.
Anlık görüntüyü sil
xrDestroySpatialSnapshotEXT işlevi şu şekilde tanımlanır:
XrResult xrDestroySpatialSnapshotEXT(
XrSpatialSnapshotEXT snapshot);
Parametre Açıklamaları
snapshot, daha önce xrCreateSpatialDiscoverySnapshotCompleteEXT veya xrCreateSpatialUpdateSnapshotEXT tarafından sağlanan bir XrSpatialSnapshotEXT'tir.
Uygulama, XrSpatialSnapshotEXT herkese açık kullanıcı adını ve bununla ilişkili kaynakları yok etmek için xrDestroySpatialSnapshotEXT'yi çağırabilir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, xrDestroySpatialSnapshotEXT çağrılmadan önce etkinleştirilmelidir -
snapshot, geçerli bir XrSpatialSnapshotEXT herkese açık kullanıcı adı olmalıdır.
İleti Dizisi Güvenliği
snapshotve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
Ortak Bileşenler
Sınırlı 2D
Bileşen verileri
XrSpatialBounded2DDataEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialBounded2DDataEXT {
XrPosef center;
XrExtent2Df extents;
} XrSpatialBounded2DDataEXT;
Üye Açıklamaları
center, sınırlı 2D bileşenin geometrik merkezini tanımlayan bir XrPosef'dir.extents, sınırlı 2D bileşenin x ekseni (extents.width) ve y ekseni (extents.height) boyunca uzantılarıdır vecenterüzerinde ortalanır.
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT öğesinin extents, düzlemin koordinat sisteminin x-y düzlemindeki varlığın boyutunu ifade eder. Konumu {0, 0, 0}, dönüşü {0, 0, 0, 1} (dönüş yok) ve boyutu {1, 1} olan bir düzlem, bileşenin alanında +Z yönünü gösteren ön yüz normal vektörüyle {0, 0, 0} merkezli 1 metre x 1 metrelik bir düzlemi ifade eder.
X X Y Y Z Z Yükseklik Yükseklik Y Y Z Z X X Dikey düzlem Dikey düzlem Yatay düzlem Yatay düzlem Genişlik Genişlik Genişlik Genişlik Yükseklik Yükseklik
24. şekil. Bounded2D Bileşen Koordinat Sistemi
Not
OpenXR, düzlem normali +Z olan bir X-Y düzlemi kullanır ancak diğer API'ler, düzlem normali +Y olan bir X-Z düzlemi kullanabilir. X-Y düzlemi, +X ekseni etrafında -π/2 radyan döndürülerek X-Z düzlemine dönüştürülebilir.
Geçerli Kullanım (Dolaylı)
- XrSpatialBounded2DDataEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentBounded2DListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentBounded2DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrSpatialBounded2DDataEXT* bounds;
} XrSpatialComponentBounded2DListEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.boundCount,boundsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.bounds, XrSpatialBounded2DDataEXT dizisidir.
XrSpatialComponentBounded2DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.
boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.
xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialDiscoverySnapshotCompleteEXT'ten oluşturulduysa çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace ve XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time içinde XrSpatialBounded2DDataEXT :: center sağlamalıdır.
xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT'ten oluşturulduysa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace ve XrSpatialUpdateSnapshotCreateInfoEXT :: time içinde XrSpatialBounded2DDataEXT :: center sağlamalıdır.
Geçerli Kullanım (Dolaylı)
- XrSpatialComponentBounded2DListEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
bounds,boundCountXrSpatialBounded2DDataEXT yapılarından oluşan bir dizinin işaretçisi olmalıdır. -
boundCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum değerini XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir. Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.
Sınırlı 3D
Bileşen verileri
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, verileri için XrBoxf kullanıyor.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentBounded3DListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentBounded3DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrBoxf* bounds;
} XrSpatialComponentBounded3DListEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.boundCount,boundsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.bounds, XrBoxf dizisidir.
XrSpatialComponentBounded3DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.
xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialDiscoverySnapshotCompleteEXT'ten oluşturulduysa çalışma zamanı, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time konumundaki XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace içinde XrBoxf :: center değerini sağlamalıdır (must).
xrQuerySpatialComponentDataEXT :: snapshot, xrCreateSpatialUpdateSnapshotEXT'ten oluşturulduysa çalışma zamanı, XrSpatialUpdateSnapshotCreateInfoEXT :: time konumundaki XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace içinde XrBoxf :: center sağlamalıdır (must).
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_entityuzantısı, XrSpatialComponentBounded3DListEXT kullanılmadan önce etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
bounds,boundCountXrBoxf yapılarından oluşan bir diziye işaretçi olmalıdır. -
boundCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum'u XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir . Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.
Ebeveyn
Bileşen verileri
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, verileri için XrSpatialEntityIdEXT kullanıyor.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentParentListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentParentListEXT {
XrStructureType type;
void* next;
uint32_t parentCount;
XrSpatialEntityIdEXT* parents;
} XrSpatialComponentParentListEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.parentCount,parentsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.parents,XrSpatialEntityIdEXTdizisidir.
XrSpatialComponentParentListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
parentCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialComponentParentListEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
parents,parentCountXrSpatialEntityIdEXTdeğerlerinden oluşan bir dizinin işaretçisi olmalıdır -
parentCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, enum'u XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine ekleyerek bu özelliği etkinleştirebilir . Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.
Mesh 3D
Bileşen verileri
XrSpatialMeshDataEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialMeshDataEXT {
XrPosef origin;
XrSpatialBufferEXT vertexBuffer;
XrSpatialBufferEXT indexBuffer;
} XrSpatialMeshDataEXT;
Üye Açıklamaları
origin, ağın kaynağını tanımlayan bir XrPosef'dir. Ağın tüm köşeleri bu orijine göre olmalıdır.vertexBuffer, bu bileşenin bulunduğu varlığın köşe arabelleğini temsil eden bir arabelleğin kimliğini sağlayan bir XrSpatialBufferEXT'tir. Köşe noktalarının konumuoriginile ilişkili olmalıdır.indexBuffer,vertexBufferiçindeki ağ köşelerinin dizinlerini belirten üçgen dizinleri dizisini temsil eden bir arabelleğin kimliğini sağlayan bir XrSpatialBufferEXT'dir. Üçgen dizinleri saat yönünün tersine döndürülmeli ve üç dizin bir üçgeni belirtmelidir.
XrSpatialMeshDataEXT kullanan bileşen türü, vertexBuffer ve indexBuffer için XrSpatialBufferTypeEXT değerini belirtmelidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialMeshDataEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir -
vertexBuffer, geçerli bir XrSpatialBufferEXT yapısı olmalıdır -
indexBuffer, geçerli bir XrSpatialBufferEXT yapısı olmalıdır
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentMesh3DListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentMesh3DListEXT {
XrStructureType type;
void* next;
uint32_t meshCount;
XrSpatialMeshDataEXT* meshes;
} XrSpatialComponentMesh3DListEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.meshCount,meshesdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.meshes, XrSpatialMeshDataEXT dizisidir.
Uygulama, XrSpatialComponentDataQueryConditionEXT :: componentTypes içine XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT ekleyerek ve XrSpatialComponentDataQueryResultEXT'nin sonraki işaretçi zincirine XrSpatialComponentMesh3DListEXT ekleyerek XrSpatialSnapshotEXT'teki uzamsal varlıkların 3D ağ bileşenini sorgulayabilir.
XrSpatialComponentMesh3DListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT ::componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
meshCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput değerinden küçükse çalışma zamanı, xrQuerySpatialComponentDataEXT'ten XR_ERROR_SIZE_INSUFFICIENT değerini döndürmelidir.
Çalışma zamanı tarafından meshes dizisinde doldurulan XrSpatialMeshDataEXT için XrSpatialMeshDataEXT :: vertexBuffer için XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT olmalıdır ve XrSpatialMeshDataEXT :: indexBuffer için XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT olmalıdır.
Geçerli Kullanım (Dolaylı)
- XrSpatialComponentMesh3DListEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
meshes,meshCountXrSpatialMeshDataEXT yapılarından oluşan bir dizinin işaretçisi olmalıdır -
meshCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, bir özellik için XrSpatialCapabilityComponentTypesEXT :: componentTypes içinde listeleniyorsa uygulama, bu bileşeni destekleyen özelliğin XrSpatialCapabilityConfigurationBaseHeaderEXT türetilmiş yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents listesine enum'u ekleyerek bu özelliği etkinleştirebilir.
Bu bileşenin, sonraki XrSpatialCapabilityConfigurationBaseHeaderEXT zincirine dahil edilmesi için özel bir yapılandırma gerekmez.
İzleme durumu filtreleri
XrSpatialFilterTrackingStateEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialFilterTrackingStateEXT {
XrStructureType type;
const void* next;
XrSpatialEntityTrackingStateEXT trackingState;
} XrSpatialFilterTrackingStateEXT;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir.trackingState, uygulamanın filtreyi uygulamak istediği XrSpatialEntityTrackingStateEXT'tir.
Uygulama, keşfi yalnızca izleme durumu trackingState olan varlıklarla sınırlamak için XrSpatialDiscoverySnapshotCreateInfoEXT'nin sonraki zincirinde XrSpatialFilterTrackingStateEXT'yi kullanabilir.
Uygulama, bir anlık görüntüden bileşen veri sorgusunu yalnızca izleme durumu trackingState olan varlıklarla sınırlamak için sonraki XrSpatialComponentDataQueryConditionEXT zincirinde XrSpatialFilterTrackingStateEXT'yi kullanabilir.
Geçerli Kullanım (Dolaylı)
- XrSpatialFilterTrackingStateEXT kullanılmadan önce
XR_EXT_spatial_entityuzantısı etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya 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 uzamsal varlık uzantısını aşağıdaki kalıpta kullanır:
- Uygulama, öncelikle xrEnumerateSpatialCapabilitiesEXT kullanarak sistemin uzamsal özelliklerini listeler. 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 listeler. Bu sayede uygulama, etkinleştirebileceği bileşenlerin ve özelliğin kabul ettiği yapılandırmaların tam bir resmini elde eder.
- Ardından uygulama, belirli uzamsal özellik yapılandırmalarına sahip bir veya daha fazla XrSpatialContextEXT herkese açık kullanıcı adı oluşturur. 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 ilgili XrSpatialContextEXT için XrEventDataSpatialDiscoveryRecommendedEXT etkinliklerini almayı bekler. Bu eş zamansız işlem tamamlandığında uygulama bir XrSpatialSnapshotEXT tanıtıcısı alır.
- Uygulama, xrQuerySpatialComponentDataEXT kullanarak bu XrSpatialSnapshotEXT'te yer alan varlıkları ve bileşen verilerini sorgular. Uygulama, öğe durumu
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTise sorgulanan öğelerin en son bileşen verilerini XrSpatialComponentDataQueryResultEXT'in sonraki zincirine ekli yapılardan okur. - Uygulama, ilgi çekici olarak tanımladığı ve zaman içinde güncellemelerini almak istediği belirli öğeler varsa xrCreateSpatialEntityFromIdEXT kullanarak bu öğeler için XrSpatialEntityEXT tutma yerleri oluşturur. Uygulama, xrCreateSpatialUpdateSnapshotEXT işlevini kullanarak bu tür ilgi çekici öğelerle ilgili güncellemeleri alır ve yeni oluşturulan XrSpatialSnapshotEXT üzerinde aynı xrQuerySpatialComponentDataEXT işlevini kullanarak bu öğelerle ilgili en son bileşen verilerini alır.
Uzamsal varlıkları keşfetme ve bileşen verilerini sorgulama
Aşağıdaki örnek kodda, "Foo" özelliği için uzamsal varlıkların nasıl bulunacağı ve bileşen verilerinin nasıl sorgulanacağı gösterilmektedir.
/****************************/
/* Capability definition */
/****************************/
// Foo capability has the following components -
// - XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
#define XR_SPATIAL_CAPABILITY_FOO ((XrSpatialCapabilityEXT)1000740000U)
#define XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT ((XrStructureType)1000740000U)
// Derives from XrSpatialCapabilityConfigurationBaseHeaderEXT
typedef struct XrSpatialCapabilityConfigurationFooEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationFooEXT;
/******************************/
/* End capability definition */
/******************************/
auto waitUntilReady = [](XrFutureEXT future) {
XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
pollInfo.future = future;
do {
// sleep(1);
CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
} while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};
// Create a spatial spatial context
XrSpatialContextEXT spatialContext{};
{
const std::array<XrSpatialComponentTypeEXT, 1> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
};
// Configure Foo capability for the spatial context
XrSpatialCapabilityConfigurationFooEXT fooConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT};
fooConfig.capability = XR_SPATIAL_CAPABILITY_FOO;
fooConfig.enabledComponentCount = enabledComponents.size();
fooConfig.enabledComponents = enabledComponents.data();
std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&fooConfig));
XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
XrFutureEXT createContextFuture;
CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));
waitUntilReady(createContextFuture);
XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
if (completion.futureResult != XR_SUCCESS) {
return;
}
spatialContext = completion.spatialContext;
}
auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
// We want to look for entities that have the following components.
std::array<XrSpatialComponentTypeEXT, 1> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT};
XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
snapshotCreateInfo.componentTypes = snapshotComponents.data();
XrFutureEXT future = XR_NULL_FUTURE_EXT;
CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &future));
waitUntilReady(future);
XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
completionInfo.baseSpace = localSpace;
completionInfo.time = time;
completionInfo.future = future;
XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
if (completion.futureResult == XR_SUCCESS) {
// Query for the bounded2d component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
queryResult.entityIdCapacityInput = 0;
queryResult.entityIds = nullptr;
queryResult.entityStateCapacityInput = 0;
queryResult.entityStates = nullptr;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
queryResult.entityStateCapacityInput = entityStates.size();
queryResult.entityStates = entityStates.data();
std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
boundsList.boundCount = bounded2d.size();
boundsList.bounds = bounded2d.data();
queryResult.next = &boundsList;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
// 2D extents for entity entityIds[i] is bounded2d[i].extents.
}
}
CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
}
};
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
// Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
switch (event.type) {
case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata =
*reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
// Discover spatial entities for the context that we received the "discovery
// recommended" event for.
discoverSpatialEntities(eventdata.spatialContext, time);
break;
}
}
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySpatialContextEXT(spatialContext));
Sorgu arabelleği verileri
Aşağıdaki örnek kodda, XrSpatialBufferEXT sağlayan bir bileşenin verilerinin nasıl alınacağı gösterilmektedir.
/****************************/
/* Component definition */
/****************************/
// Foo component that provides an XrVector3f buffer
#define XR_SPATIAL_COMPONENT_TYPE_FOO_EXT ((XrSpatialComponentTypeEXT)1000740000U)
#define XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT ((XrStructureType)1000740000U)
// XrSpatialComponentFooListEXT extends XrSpatialComponentDataQueryResultEXT
typedef struct XrSpatialComponentFooListEXT {
XrStructureType type;
void* XR_MAY_ALIAS next;
uint32_t fooCount;
XrSpatialBufferEXT* foo;
} XrSpatialComponentFooListEXT;
/******************************/
/* End Component definition */
/******************************/
// Query for the foo component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_FOO_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = 1;
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
std::vector<XrSpatialBufferEXT> fooBuffers(queryResult.entityIdCountOutput);
XrSpatialComponentFooListEXT fooList{XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT};
fooList.fooCount = fooBuffers.size();
fooList.foo = fooBuffers.data();
queryResult.next = &fooList;
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
// foo component data for entity entityIds[i]
if (fooBuffers[i].bufferType == XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT) {
XrSpatialBufferGetInfoEXT getInfo{XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT};
getInfo.bufferId = fooBuffers[i].bufferId;
uint32_t bufferCountOutput;
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, 0, &bufferCountOutput, nullptr));
std::vector<XrVector3f> vertexBuffer(bufferCountOutput);
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, bufferCountOutput, &bufferCountOutput, vertexBuffer.data()));
// XrVertex3f buffer for entity entityIds[i] is now available in vertexBuffer vector.
}
}
Uzantı yönergeleri
Bir uzantı, uzamsal varlık hakkında ek veriler sağlayan yeni bir XrSpatialComponentTypeEXT tanımlıyorsa
- Uzantı, bu bileşen için bir liste yapısı da tanımlamalıdır. Bu yapı, uygulamanın çalışma zamanına bir dizi iletmesine olanak tanır. Bu dizi, xrQuerySpatialComponentDataEXT ::
queryConditionkoşulunu karşılayan her bir uzamsal varlığın verileriyle doldurulur. Bu tür liste yapılarına örnek olarak XrSpatialComponentParentListEXT ve XrSpatialComponentBounded2DListEXT verilebilir. Bileşen verilerinin boyutu değişkense ve uygulamanın bu verileri sorgulamak için iki çağrı deyimini kullanması gerekiyorsa 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'yi belirtmelidir. Uygulama daha sonra Bileşen verileri için iki çağrılı deyim bölümünde tanımlanan işlevleri kullanarak arabellek verilerini sorgulayabilir. XrSpatialComponentMesh3DListEXT'e dahil edilen XrSpatialMeshDataEXT bu tür bir yapıya örnek olarak verilebilir. - Uzantı, uygulamanın bu bileşenin verileriyle ilgili sorgu için ek filtreler sağlamak üzere XrSpatialComponentDataQueryConditionEXT ::
nextile zincirleyebileceği yapılar da sağlayabilir.
- Uzantı, bu bileşen için bir liste yapısı da tanımlamalıdır. Bu yapı, uygulamanın çalışma zamanına bir dizi iletmesine olanak tanır. Bu dizi, 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şturmak için kullanılan filtreler, uzamsal bağlamın yapılandırmasını etkilememelidir. Bunun yerine, uzamsal bağlamın mevcut yapılandırması (ve dolayısıyla temel hizmetlerin mevcut yapılandırması) tarafından izlenen anlık görüntüye hangi varlıkların ve verilerin dahil edileceği konusunda çalışma zamanına ipuçları sağlamak için kullanılmalıdır.
Bir uzantı yeni bir XrSpatialCapabilityEXT tanımlıyorsa
- Ayrıca, çalışma zamanlarının bu özellik için varlıklarda sağlaması gereken XrSpatialComponentTypeEXT listesini de belirtmesi gerekir.
- Ayrıca, bu özelliğin yapılandırılmasına olanak tanıyacak XrSpatialCapabilityConfigurationBaseHeaderEXT'ten türetilen yapılar da sağlamalıdır.
Bir uzantı yeni bir XrSpatialCapabilityFeatureEXT tanımlıyorsa XrSpatialCapabilityConfigurationBaseHeaderEXT'in sonraki işaretçisine zincirlenebilecek ve uygulamanın XrSpatialContextEXT oluştururken özelliği etkinleştirmek için kullanabileceği karşılık gelen bir yapılandırma yapısı da tanımlamalıdır.
Yeni bir XrSpatialCapabilityEXT tanımlayan uzantı, spesifikasyon için bu şablonu kullanmalıdır:
- Genel Bakış
- Çalışma zamanı desteği
- Yapılandırma
- Garantili bileşenler
- Örnek Kod
Yeni bir XrSpatialComponentTypeEXT tanımlayan uzantı, spesifikasyon için bu şablonu kullanmalıdır:
- Bileşen verileri
- Verileri sorgulamak için bileşen listesi yapısı
- Yapılandırma
Uygulamaya
XrSpatialBufferIdEXTsağlayan bir API yazarken, uygulamaya arabelleğin veri türünü bildirmek için API'ye XrSpatialBufferTypeEXT eşlik etmelidir. Uygulama, arabelleğin gerçek içeriğini almak için uygun birxrGetSpatialBuffer*işlevi kullanabilir.
Semantik Etiket Tasarımı ve Uzantı Kuralları
Bu uzantı, bir varlığın semantik etiket bilgilerini iletmek için herhangi bir bileşen tanımlamasa da bu tür bir bileşeni tanımlayan tüm uzantılar için tasarım kurallarını ve yönergelerini belirler. Aşağıdaki metinde " should " ve " must " kelimeleri, çalışma zamanı uygulamasını veya API'yi kullanan bir uygulamayı kısıtlamak yerine bu tür işlevlerin yazarlarını kısıtlar.
- Bir uzantı, herhangi bir XrSpatialCapabilityEXT için semantik etiketler tanımlıyorsa bunu yeni bir XrSpatialComponentTypeEXT ve bu bileşenin verileri olacak bir dizi etiket ("semantik etiket grubu") içeren yeni bir numaralandırma tanımlayarak yapması gerekir.
- Anlamsal etiket grubunu temsil eden bir sıralama, varlığın bu gruptaki etiketlerden hiçbirine dahil edilmediğini belirtmek için bir değere sahip olmalıdır. Bu numaralandırmanın adı "UNCATEGORIZED" ifadesini içermelidir (ör.
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT). Bu değer, uygulamalara çalışma zamanının bu varlığı tanıdığını ancak bu varlığın kategorize edildiği başka anlamsal etiket kümeleri olduğunu gösterir. - xrEnumerateSpatialCapabilityComponentTypesEXT içinde yeni tanımlanan bu XrSpatialComponentTypeEXT'nin numaralandırılması, çalışma zamanının bu bileşen türüne karşılık gelen semantik etiket grubunu (ve dolayısıyla grupta tanımlanan etiketleri) desteklediği anlamına gelir.
- Uygulamalar, bileşen türünün numaralandırıldığı özelliğin yapılandırma yapısının XrSpatialCapabilityConfigurationBaseHeaderEXT ::
enabledComponentsdizisine ilgili XrSpatialComponentTypeEXT'yi ekleyerek bu semantik etiket grubuna ait etiketleri olan varlıkları keşfetme isteklerini ifade eder. - Tek bir uzamsal varlığın üzerinde birden fazla bileşen bulunabilir ve her bileşen, kendi semantik etiket grubundan bir etiket sağlayabilir. Sandalye, koltuk, masa gibi değerlere sahip olabilecek bazı varsayımsal semantik etiket kümeleri (
XrSpatialObjectSemanticLabel) içeren aşağıdaki örneği inceleyin.XrSpatialSofaBrand(IKEA, Wayfair vb. değerler içerebilir) veXrSpatialIkeaSofa(IKEA'nın belirli koltuk modeli adlarını içerebilir). Bu senaryoda, aynı koltuk öğesi 3 bileşenin tümüne (3 anlamsal etiket grubunun tümünden etiketler) sahiptir ve her biri öğe hakkında farklı ayrıntı düzeyinde bilgi verir. - Bir uzantı,
UNCATEGORIZEDetiketine ek olarak birden fazla etiket içeren yeni bir semantik etiket grubu sağlayan yeni bir XrSpatialComponentTypeEXT tanımlıyorsa uzantı, uygulamaların yalnızca ilgili bileşen türüne karşılık gelen semantik etiket grubunda tanımlanan etiketlerin bir alt kümesini etkinleştirmesine olanak tanıyan bir XrSpatialCapabilityFeatureEXT tanımlamayı düşünmelidir. Özellik yapılandırmasının bir sonraki zincirinde sağlanan bu alt küme, çalışma zamanlarının izleme ardışık düzenlerini optimize etmesi ve yalnızca sağlanan alt kümeyi izlemesi için bir ipucu görevi görür. Bu tür bir özellik yapısına örnek aşağıda verilmiştir. - Uzantılar, mevcut anlamsal etiket grubu listesine etiket eklememelidir. Bunun yerine, yeni eklenen numaralandırıcıların yanı sıra aynı semantiğe ve diğer kümedeki değerlere eşit değerlere sahip eşdeğer numaralandırıcılar içeren yeni bir numaralandırma tanımlamaları gerekir. Yeni tanımlanan anlamsal etiket grubunun spesifikasyonu, eski etiket grubu ile yeni etiket grubu arasındaki eşlemeyi de oluşturmalıdır. Aşağıdaki örneğe bakın.
Anlamsal Etiket Alt Kümesi İçin Örnek Uzamsal Özellik Tanımı
// New example semantic label set.
typedef enum XrSpatialExampleSemanticLabelEXT {
// ... label values
} XrSpatialExampleSemanticLabelEXT;
/*
typedef enum XrSpatialCapabilityFeatureEXT {
// .. existing values
// new spatial feature value
XR_SPATIAL_CAPABILITY_FEATURE_EXAMPLE_SEMANTIC_LABEL_SUBSET_EXT
// .. existing values
} XrSpatialCapabilityFeatureEXT;
*/
// New spatial feaure configuration structure
typedef struct XrSpatialFeatureExampleSemanticLabelSubsetEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint32_t semanticLabelCount;
const XrSpatialExampleSemanticLabelEXT* semanticLabels;
} XrSpatialFeatureExampleSemanticLabelSubsetEXT;
Örnek Mekansal Anlamsal Etiket Uzantısı
typedef enum XrSpatialExamplePlaneSemanticLabelExtensionEXT {
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT = 2,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT = 3,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT = 4,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT = 5,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT = 6,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT = 7,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialExamplePlaneSemanticLabelExtensionEXT;
Mevcut XrSpatialPlaneSemanticLabelEXT'yi kapı ve pencereleri temsil eden değerlerle genişletmek için bir uzantının XrSpatialExamplePlaneSemanticLabelExtensionEXT numaralandırmasını tanımladığı yukarıdaki örneği ele alalım. Yeni sıralamanın spesifikasyonu, aşağıdaki form için metin içermelidir:
For all non-UNCATEGORIZED label enumerants in elink:XrSpatialPlaneSemanticLabelEXT,
the runtime must: return that enumerant if and only if it returns the corresponding
label enumerant from elink:XrSpatialExamplePlaneSemanticLabelExtensionEXT with the same value
i.e.
the ename:XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT value for that entity must:
correspond with the ename:XR_SPATIAL_COMPONENT_TYPE_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_EXT values
according to the following table -
[width="100%",options="header"]
|====
| XrSpatialExamplePlaneSemanticLabelExtensionEXT | XrSpatialPlaneSemanticLabelEXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
|====
Yeni Makrolar
Yeni Temel Türler
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'yi genişletme:
Yeni Enum Veri Türleri
- 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'ı genişletme:
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 yetenekten mi türetilir?
- Çözüldü
- Cevap: Hayır. Bu tamamen çalışma zamanının kendi izleme özelliklerine ve algılanan bir varlığı nasıl temsil etmek istediğine bağlıdır. Spesifikasyon, minimum beklentiyi belirlemek için belirli bir özelliğin garanti edilen bileşenleri dışında, uzamsal varlığın belirli bir temsilini zorunlu kılmaz. Çalışma zamanı, ayrı özellikler tarafından algılanan varlıkları birleştirebilir ve bunları, tanımlanmasına yardımcı olan tüm özelliklerin garantili bileşenleriyle tek bir varlık olarak temsil edebilir. Örneğin, masalar hem düzlem izleme özelliği hem de nesne izleme özelliğiyle algılanabilir. Düzlem izleme, öğe üzerinde
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTbileşenini, nesne izleme iseXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTbileşenini sağlar. Belirli bir çalışma zamanı, tabloyu her biri kendi garantili bileşen grubuna sahip 2 ayrı varlık olarak sağlayabilir. Diğer çalışma zamanları ise tabloyu temsil etmek için yalnızca 1 varlık sağlayabilir ve aynı varlıkta hemXR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXThem deXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTbulunabilir. Burada dikkat edilmesi gereken nokta, belirli bir uzamsal varlığın herhangi bir bileşen türünde en fazla tek bir bileşene sahip olabileceğidir. Bu nedenle, farklı özellikler tarafından üretilen bileşen verileri belirli bir varlık için çakışıyorsa çalışma zamanı bunları 2 ayrı varlık olarak temsil etmelidir.
Sürüm Geçmişi
Düzeltme 1, 12.04.2024 (Nihav Jain, Google)
- İlk uzantı açıklaması