XR_EXT_spatial_mesh_tracking
Name String
XR_EXT_spatial_mesh_tracking
Uzantı Türü
Örnek uzantısı
Kayıtlı Dahili Numara
784
Düzeltme
1
Onay Durumu
Onaylanmadı
Uzantı ve Sürüm Bağımlılıkları
XR_EXT_spatial_entity
Katkıda bulunanlar
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Genel Bakış
Bu uzantı, XR_EXT_spatial_entity üzerine kuruludur ve ortamın üçgen örgüsünü izlemek için uzamsal özellikleri tanımlar. Bu uzantıda tanımlanan özellik tarafından sağlanan üçgen ağ, uygulamalar tarafından sanal içeriğin çevreyle çarpışmalarını belirlemek için kullanılmak üzere tasarlanmıştır.
Uzamsal Mesh İzleme Özelliği
Bu uzantı, ortamın üçgen örgüsünü izlemek için uzamsal bir özellik olarak XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT tanımlar. Düzlemler ve nesneler gibi varlıkların ağını izleme bu özellik kapsamında değildir ve bunun yerine, bu varlıkları izleyen ilgili özellikler için XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeninin numaralandırılmasıyla belirtilmesi gerekir.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT, çalışma zamanının özelliklerine ve uygulama tarafından seçilen yapılandırmaya bağlı olarak uygulamaya hem su geçirmez hem de su geçirmez olmayan bir ağ sağlamak için kullanılır.
Su geçirmez ağ, her boyuttaki boşlukların ve taranmamış bölgelerin doldurulduğu ve belirli bir hacimsel blok içinde sıkı bir ağ oluşturduğu bir ağdır. Adından da anlaşılacağı üzere, bir uygulama su geçirmez bir ağın içine su doldurursa su geçirmez hacimden su sızmamalıdır. Taranmış bir ağı su geçirmez hale getirmek genellikle çok yüksek işlem gücü gerektirir ancak bazı çalışma zamanları, ağı önceden işleyerek bu maliyeti dengeler.
Çalışma Zamanı Desteği
Çalışma zamanı, ortamın üçgen örgüsünün izlenmesini destekliyorsa bunu xrEnumerateSpatialCapabilitiesEXT içinde XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT değerini numaralandırarak belirtmesi gerekir.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT destekleyen bir çalışma zamanının 3 olası özelliği vardır:
- Çalışma zamanı yalnızca su geçirmez olmayan ağ izlemeyi destekler. Bu durumda çalışma zamanı, xrEnumerateSpatialCapabilitiesEXT içinde
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdeğerini listeler ancak xrEnumerateSpatialCapabilityFeaturesEXT içindeXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdeğerini listelememelidir (bkz. Su Geçirmez Mesh İzleme). - Çalışma zamanı, hem su geçirmez hem de su geçirmez olmayan ağ izlemeyi destekler. Bu durumda çalışma zamanı, xrEnumerateSpatialCapabilitiesEXT içinde
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdeğerini listeler ve uygulamadan gelen su geçirmez ağ izleme isteklerini etkinleştirmek için xrEnumerateSpatialCapabilityFeaturesEXT içindeXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdeğerini de listelemesi gerekir (Su Geçirmez Ağ İzleme bölümüne bakın). - Çalışma zamanı yalnızca su geçirmez ağ izlemeyi destekler. Bu durumda çalışma zamanı, xrEnumerateSpatialCapabilitiesEXT içinde
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdeğerini listeler ve uygulamaya su geçirmez ağ takibini desteklediğini belirtmek için xrEnumerateSpatialCapabilityFeaturesEXT içindeXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdeğerini de listelemesi gerekir (Su Geçirmez Ağ Takibi bölümüne bakın). Bu özel durumda, çalışma zamanı,XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTyapılandırmasından bağımsız olarak uygulamaya her zaman su geçirmez bir ağ döndürür.
Yapılandırma
XrSpatialCapabilityConfigurationMeshTrackingEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
Ü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 veXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTolmalıdır.enabledComponentCount,enabledComponentsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.enabledComponents, XrSpatialComponentTypeEXT dizisine işaret eden bir göstergedir.
Uygulamalar, XrSpatialContextCreateInfoEXT :: capabilityConfigs içinde bir XrSpatialCapabilityConfigurationMeshTrackingEXT yapısına işaretçi ekleyerek XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT uzamsal özelliğini etkinleştirebilir.
capability, XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT değilse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
- XrSpatialCapabilityConfigurationMeshTrackingEXT kullanılmadan önce
XR_EXT_spatial_mesh_trackinguzantısı etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. Ayrıca bkz. XrSpatialFeatureTrackWatertightMeshEXT -
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.
Su Geçirmez Mesh'i İzleme
XrSpatialFeatureTrackWatertightMeshEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
Ü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.enableWatertightMeshTracking, çalışma zamanının taranan ortam için su geçirmez bir ağ hesaplaması gerekip gerekmediğini gösterir.
Su geçirmez ağ izlemeyi destekleyen çalışma zamanları, xrEnumerateSpatialCapabilityFeaturesEXT içinde XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT'yi listelemelidir . XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT özelliği, uygulamaların isteğe bağlı olarak su geçirmez ağ izlemeyi etkinleştirmesine ve su geçirmez ağ oluşturmanın neden olabileceği ek hesaplamaları açıkça etkinleştirmesine olanak tanır.
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT, belirli bir özellik için xrEnumerateSpatialCapabilityFeaturesEXT tarafından listeleniyorsa uygulama, izlenen mesh'in su geçirmez olmasını isteyip istemediğini belirtmek için XrSpatialFeatureTrackWatertightMeshEXT'i ilgili özelliğin yapılandırma yapısına zincirleyebilir (can). Uygulama, enableWatertightMeshTracking değerini XR_TRUE olarak ayarlarsa çalışma zamanı, ortamın su geçirmez bir ağını hesaplamalı ve uygulamaya sağlamalıdır. Uygulama, enableWatertightMeshTracking değerini XR_FALSE olarak ayarlarsa çalışma zamanı yalnızca su geçirmez mesh izlemeyi destekliyorsa (ör. çalışma zamanının önceden taranmış bir ortamdan işlenmiş bir mesh sağladığı durumlarda) izlenen mesh yine de su geçirmez olabilir.
Geçerli Kullanım (Dolaylı)
-
XR_EXT_spatial_mesh_trackinguzantısı, XrSpatialFeatureTrackWatertightMeshEXT kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Uygulama Akışı
Aşağıdaki şemada, bir uygulamanın ortamın su geçirmez bir ağını izlemek istemesi durumunda uzamsal bağlamı nasıl yapılandırabileceği gösterilmektedir.
Evet
Evet
Uygulamanın
su geçirmez ağa ihtiyacı var
Uygulamanın şunlara ihtiyacı var:
Evet
Evet
Hayır
Hayır
Çalışma zamanı
"mesh izleme"
özelliğini destekler
Çalışma zamanı...
Evet
Evet
Hayır
Hayır
Çalışma zamanı
"su geçirmez ağı izleme"
özelliğini destekler
Çalışma zamanı...
Uygulama, "mesh izleme özelliği" VE "su geçirmez mesh izleme" özelliğiyle uzamsal bağlam oluşturuyor
Uygulama, uzamsal... oluşturuyor.
Uygulama, mevcut çalışma zamanında özellik desteğinin eksikliğini gideriyor
Uygulama, ... eksikliğini gideriyor
Uygulama, izlenen ağı işleyerek su geçirmez bir ağ oluşturur. Bu işlem sırasında, ağdaki delikleri yamamak için kullanıcıdan yardım alabilir.
Uygulama, işlemi işler... Metin SVG değil, görüntülenemiyor
29. şekil. Su geçirmez ağ istemek için uygulama akışı
Garantili Bileşenler
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT özelliğini destekleyen bir çalışma zamanı, bu özellik tarafından keşfedilen tüm varlıkların garantili bileşenleri olarak aşağıdaki uzamsal bileşenleri sağlamalı ve bunları xrEnumerateSpatialCapabilityComponentTypesEXT içinde listelemelidir:
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Sınırlı 3D Bileşen
Sınırlı 3D bileşeni, üzerinde bulunduğu öğenin merkezini ve kapsamını sağlar. Bu bileşen tarafından sağlanan veriler, uygulamaların görüş alanının dışındaki varlıkları ayıklamasını kolaylaştırır.
Daha fazla bilgi için Sınırlı 3D bölümüne bakın.
Mesh 3D Bileşeni
3D mesh bileşeni, üzerinde bulunduğu varlığın 3D mesh'ini sağlar. Daha fazla bilgi için Mesh 3D sayfasına bakın.
Hacimsel Segmentasyon (Parçalara Ayırma)
Çalışma zamanı, uygulamaların görüntü kesik konisinin dışındaki ağ bloklarını ayıklamasını kolaylaştırmak için ağı hacimsel bloklara (parçalara) ayırabilir. Böyle bir durumda çalışma zamanı, bu tür her hacimsel bloğu ayrı bir varlık olarak ele almalı ve bu tür her varlıkta (hacimsel blok) Garantili Bileşenler kümesine sahip olmalıdır. Çalışma zamanı bu şekilde su geçirmez bir ağ sağlıyorsa her bir hacimsel blok ayrı ayrı su geçirmez değildir ancak bir grup blok birlikte su geçirmez bir ağ oluşturur. Böyle bir senaryoda, çalışma zamanı her bir varlığa (hacimsel blok) XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT bileşenini eklemelidir ve birlikte su geçirmez bir ağ oluşturan bloklar genelinde ana varlığın değeri aynı olmalıdır. Bu sayede uygulama, hangi parçaların bir araya gelerek boşluksuz bir ağ oluşturduğunu belirleyebilir.
Bitişik hacimsel blokların ağları, köşeleri paylaşabilir ancak bir hacimsel bloğun üçgenleri, bitişik hacminin üçgenleriyle çakışmamalıdır.
İsteğe Bağlı Bileşenler
Örgü Normalleri
Bileşen verileri
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT, verileri için XrSpatialBufferEXT kullanır. XrSpatialBufferEXT :: bufferId, bu bileşenin bulunduğu varlığın ağının köşe normallerini içeren arabelleği temsil eder. XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT olmalıdır. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT içeren bir varlıkta XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT de bulunmalıdır. Bu bileşen tarafından sağlanan normaller, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeninin XrSpatialMeshDataEXT :: vertexBuffer öğesinde sağlanan köşelere karşılık gelmelidir.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentMesh3DNormalsListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
Ü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.meshNormalsCount,meshNormalsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.meshNormals, XrVector3f dizisidir.
XrSpatialComponentMesh3DNormalsListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT :: componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.
meshNormalsCount, 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ı)
- XrSpatialComponentMesh3DNormalsListEXT kullanılmadan önce
XR_EXT_spatial_mesh_trackinguzantısı etkinleştirilmiş olmalıdır. -
typeXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
meshNormals,meshNormalsCountXrSpatialBufferEXT yapılarından oluşan bir diziye işaretçi olmalıdır -
meshNormalsCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_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. Ancak uygulamaların bu bileşeni ve verilerini XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeniyle birlikte kullanması önerilir.
Örgü Anlamsal Etiketleri
typedef enum XrSpatialMeshSemanticLabelEXT {
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;
XrSpatialMeshSemanticLabelEXT numaralandırması, bir mesh için anlamsal etiketler kümesini tanımlar. Bu, köşe başına veya üçgen başına semantik etiketler için XrSpatialBufferEXT'ten gelen uint8_t değerlerini anlamlandırmak amacıyla farklı uzamsal bileşenler tarafından kullanılır. Mesh Vertex Semantic Labels ve Mesh Triangle Semantic Labels sayfalarını inceleyin.
Bu semantik etiket grubunu genişletmek veya ağlar için kendi yeni grubunu eklemek isteyen uzantılar, Semantik Etiket Tasarımı ve Uzantı Kuralları'nda verilen kurallara uymalıdır.
Enum Açıklaması
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
Çalışma zamanı, tepe noktasını veya üçgeni sınıflandıramadı.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
Tepe noktası veya üçgen bir katla eşleşiyor.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
Tepe noktası veya üçgen bir duvara eşleniyor.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
Tepe noktası veya üçgen bir tavana eşleniyor.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
Köşe veya üçgen bir tabloyla eşlenir.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
Köşe veya üçgen bir sandalyeyle eşleşir.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
Köşe veya üçgen bir koltukla eşleşir.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
Tepe noktası veya üçgen, bir yatakla eşleşir.
Mesh Vertex Semantic Labels
Bileşene Genel Bakış
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, uzamsal bir varlığın ağının her bir köşesi için tek bir semantik etiket sağlar.
Bileşen verileri
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, verileri için XrSpatialBufferEXT kullanır. XrSpatialBufferEXT :: bufferId, bu bileşenin bulunduğu varlığın ağının köşe semantik etiketlerini içeren arabelleği temsil eder. XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT olmalıdır. Arabellekteki değerler, XrSpatialMeshSemanticLabelEXT sıralamasının değerlerine karşılık gelir. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT içeren bir varlıkta XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeni de olmalıdır. Bu bileşen tarafından sağlanan semantik etiketler, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeninin XrSpatialMeshDataEXT :: vertexBuffer öğesinde sağlanan köşelere karşılık gelmelidir. Bu, bu bileşen tarafından sağlanan uzamsal arabellek verilerinin belirli bir dizinindeki semantik etiketin, XrSpatialMeshDataEXT :: vertexBuffer tarafından sağlanan aynı dizindeki tepe noktasına karşılık geldiği anlamına gelir. Bu aynı zamanda xrGetSpatialBufferUint8EXT :: bufferCountOutput değerinin, köşe semantik etiket arabelleği ve XrSpatialMeshDataEXT :: vertexBuffer için aynı değerde olması gerektiği anlamına gelir.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentMesh3DVertexSemanticLabelsListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
Ü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.meshSemanticLabelsCount,meshSemanticLabelsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.meshSemanticLabels, XrSpatialBufferEXT dizisidir.
XrSpatialComponentMesh3DVertexSemanticLabelsListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT :: componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
meshSemanticLabelsCount, 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ı)
- XrSpatialComponentMesh3DVertexSemanticLabelsListEXT kullanılmadan önce
XR_EXT_spatial_mesh_trackinguzantısının etkinleştirilmesi gerekir. -
typeXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
meshSemanticLabels,meshSemanticLabelsCountXrSpatialBufferEXT yapılarından oluşan bir diziye işaretçi olmalıdır -
meshSemanticLabelsCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_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. Ancak uygulamaların bu bileşeni ve verilerini XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeniyle birlikte kullanması önerilir. Bu bileşen, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT ile birlikte etkinleştirilemez. Bir uygulama XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents öğesine hem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT hem de XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT eklerse çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir. Uygulama her iki bileşeni de ayrı XrSpatialContextEXT içinde etkinleştirmeye çalışırsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini de döndürmelidir.
Mesh Üçgeni Anlamsal Etiketleri
Bileşene Genel Bakış
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, uzamsal bir varlığın ağındaki her üçgen için tek bir anlamsal etiket sağlar.
Bileşen verileri
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, verileri için XrSpatialBufferEXT kullanır. XrSpatialBufferEXT :: bufferId, bu bileşenin bulunduğu varlığın ağının üçgen anlamsal etiketlerini içeren arabelleği temsil eder. XrSpatialBufferEXT :: bufferType, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT olmalıdır. Arabellekteki değerler, XrSpatialMeshSemanticLabelEXT sıralamasının değerlerine karşılık gelir. XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT içeren bir varlıkta XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeni de olmalıdır. Bu bileşen tarafından sağlanan semantik etiketler, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeninin XrSpatialMeshDataEXT öğesinde sağlanan üçgenlere karşılık gelmelidir. Üçgen semantik etiketlerini içeren uzamsal arabelleğin öğe sayısı, XrSpatialMeshDataEXT :: indexBuffer öğe sayısının 3'e bölünmesiyle elde edilir. Bu, bu bileşen tarafından sağlanan uzamsal arabellek verilerinin belirli bir dizinindeki semantik etiketin, XrSpatialMeshDataEXT :: indexBuffer içinde [index * 3], [index * 3 + 1], [index * 3 + 2] ile temsil edilen üçgene karşılık geldiği anlamına gelir.
Verileri sorgulamak için bileşen listesi yapısı
XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT yapısı şu şekilde tanımlanır:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
Ü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.meshSemanticLabelsCount,meshSemanticLabelsdizisindeki öğe sayısını açıklayan biruint32_tdeğeridir.meshSemanticLabels, XrSpatialBufferEXT dizisidir.
XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT, XrSpatialComponentDataQueryResultEXT :: next öğesinin sonraki zincirindeyse ancak XrSpatialComponentDataQueryConditionEXT :: componentTypeCount sıfır değilse ve XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes öğesine dahil değilse çalışma zamanı, xrQuerySpatialComponentDataEXT öğesinden XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir .
meshSemanticLabelsCount, 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ı)
-
XR_EXT_spatial_mesh_trackinguzantısı, XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT kullanılmadan önce etkinleştirilmelidir -
typeXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
meshSemanticLabels,meshSemanticLabelsCountXrSpatialBufferEXT yapılarından oluşan bir diziye işaretçi olmalıdır -
meshSemanticLabelsCountparametresi0değerinden büyük olmalıdır.
Yapılandırma
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_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. Ancak uygulamaların bu bileşeni ve verilerini XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT bileşeniyle birlikte kullanması önerilir. Bu bileşen, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT ile birlikte etkinleştirilemez. Bir uygulama XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents öğesine hem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT hem de XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT eklerse çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini döndürmelidir. Uygulama her iki bileşeni de ayrı XrSpatialContextEXT içinde etkinleştirmeye çalışırsa çalışma zamanı XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT değerini de döndürmelidir.
Yeni Yapılar
- XrSpatialCapabilityConfigurationMeshTrackingEXT
XrSpatialCapabilityConfigurationMeshTrackingEXT'yi genişletme:
XrSpatialComponentDataQueryResultEXT'yi genişletme:
Yeni Enum Veri Türleri
Yeni Enum Sabitleri
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONXrSpatialCapabilityEXT'yi genişletme:
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
XrSpatialCapabilityFeatureEXT'yi genişletme:
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
XrSpatialComponentTypeEXT'yi genişletme:
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
XrStructureType'ı genişletme:
XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Sayılar
Sürüm Geçmişi
Düzeltme 1, 02.11.2025 (Nihav Jain, Google)
- İlk uzantı açıklaması