XR_EXT_spatial_mesh_tracking
String Nama
XR_EXT_spatial_mesh_tracking
Jenis Ekstensi
Ekstensi instance
Nomor Ekstensi Terdaftar
784
Revisi
1
Status Ratifikasi
Belum diratifikasi
Dependensi Ekstensi dan Versi
XR_EXT_spatial_entity
Kontributor
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Ringkasan
Ekstensi ini dibuat berdasarkan XR_EXT_spatial_entity dan menentukan kemampuan spasial untuk melacak mesh segitiga lingkungan. Mesh segitiga yang disediakan oleh kemampuan yang ditentukan dalam ekstensi ini dimaksudkan untuk digunakan oleh aplikasi guna menentukan tabrakan konten virtual dengan lingkungan.
Kemampuan Pelacakan Mesh Spasial
Ekstensi ini menentukan XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT sebagai kemampuan spasial untuk melacak mesh segitiga lingkungan. Pelacakan mesh entity seperti bidang dan objek tidak tercakup dalam kemampuan ini dan harus ditunjukkan oleh enumerasi komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT untuk kemampuan masing-masing yang melacak entity tersebut.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT digunakan untuk menyediakan mesh kedap air dan tidak kedap air ke aplikasi, bergantung pada kemampuan runtime dan konfigurasi yang dipilih oleh aplikasi.
Mesh kedap air adalah mesh yang celah dan area yang tidak dipindainya dalam semua ukuran telah diisi dan membentuk mesh yang rapat dalam blok volumetrik tertentu. Seperti namanya, jika aplikasi mengisi air di dalam mesh kedap air, seharusnya tidak ada air yang bocor dari volume kedap air. Membuat mesh yang dipindai menjadi kedap air sering kali memerlukan komputasi yang sangat tinggi, meskipun beberapa runtime mengimbangi biaya tersebut dengan memproses mesh terlebih dahulu.
Dukungan Runtime
Jika runtime mendukung pelacakan untuk mesh segitiga lingkungan, runtime harus menunjukkan hal ini dengan menghitung XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT di xrEnumerateSpatialCapabilitiesEXT .
Ada 3 kemungkinan kemampuan runtime yang mendukung XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT -
- Runtime hanya mendukung pelacakan mesh yang tidak kedap air. Dalam hal ini, runtime mengenumerasi
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdi xrEnumerateSpatialCapabilitiesEXT, tetapi tidak boleh mengenumerasiXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdi xrEnumerateSpatialCapabilityFeaturesEXT (lihat Melacak Watertight Mesh). - Runtime mendukung pelacakan mesh kedap air dan tidak kedap air. Dalam hal ini, runtime menghitung
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdi xrEnumerateSpatialCapabilitiesEXT dan harus juga menghitungXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdi xrEnumerateSpatialCapabilityFeaturesEXT (lihat Melacak Watertight Mesh ) untuk mengaktifkan permintaan pelacakan watertight mesh dari aplikasi. - Runtime hanya mendukung pelacakan mesh kedap air. Dalam hal ini, runtime menghitung
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTdi xrEnumerateSpatialCapabilitiesEXT dan harus juga menghitungXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTdi xrEnumerateSpatialCapabilityFeaturesEXT (lihat Melacak Watertight Mesh ) untuk menunjukkan kepada aplikasi bahwa aplikasi tersebut mendukung pelacakan watertight mesh. Dalam kasus khusus ini, runtime selalu menampilkan mesh kedap air ke aplikasi, terlepas dari konfigurasi untukXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT.
Konfigurasi
Struktur XrSpatialCapabilityConfigurationMeshTrackingEXT didefinisikan sebagai:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur.capabilityadalah XrSpatialCapabilityEXT dan harus berupaXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT.enabledComponentCountadalahuint32_tyang menjelaskan jumlah elemen dalam arrayenabledComponents.enabledComponentsadalah pointer ke array XrSpatialComponentTypeEXT .
Aplikasi dapat mengaktifkan kemampuan spasial XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT dengan menyertakan pointer ke struktur XrSpatialCapabilityConfigurationMeshTrackingEXT di XrSpatialContextCreateInfoEXT :: capabilityConfigs .
Runtime harus menampilkan XR_ERROR_VALIDATION_FAILURE jika capability bukan XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_EXT_spatial_mesh_trackingharus diaktifkan sebelum menggunakan XrSpatialCapabilityConfigurationMeshTrackingEXT -
typeharus berupaXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur . Lihat juga: XrSpatialFeatureTrackWatertightMeshEXT -
capabilityharus berupa nilai XrSpatialCapabilityEXT yang valid -
enabledComponentsharus berupa pointer ke array nilai XrSpatialComponentTypeEXT yang validenabledComponentCount - Parameter
enabledComponentCountharus lebih besar dari0
Melacak Watertight Mesh
Struktur XrSpatialFeatureTrackWatertightMeshEXT didefinisikan sebagai:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur.enableWatertightMeshTrackingmenunjukkan apakah runtime harus menghitung mesh kedap air untuk lingkungan yang dipindai.
Runtime yang mendukung pelacakan mesh kedap air harus menghitung XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT di xrEnumerateSpatialCapabilityFeaturesEXT . Fitur XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT memungkinkan aplikasi mengaktifkan pelacakan mesh kedap air secara opsional dan secara eksplisit memilih komputasi tambahan yang mungkin dikenakan oleh pembuatan mesh kedap air.
Jika XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT dihitung oleh xrEnumerateSpatialCapabilityFeaturesEXT untuk kemampuan tertentu, aplikasi dapat merantai XrSpatialFeatureTrackWatertightMeshEXT ke struktur konfigurasi yang sesuai dari kemampuan tersebut untuk menunjukkan apakah aplikasi menginginkan mesh yang dilacak kedap air atau tidak. Jika aplikasi menetapkan enableWatertightMeshTracking ke XR_TRUE , runtime harus menghitung dan menyediakan mesh lingkungan yang kedap air untuk aplikasi. Jika aplikasi menetapkan enableWatertightMeshTracking ke XR_FALSE , mesh yang dilacak mungkin masih kedap air jika runtime hanya mendukung pelacakan mesh kedap air, misalnya dalam kasus saat runtime menyediakan mesh yang diproses dari lingkungan yang dipindai sebelumnya.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_EXT_spatial_mesh_trackingharus diaktifkan sebelum menggunakan XrSpatialFeatureTrackWatertightMeshEXT -
typeharus berupaXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur
Alur Aplikasi
Diagram di bawah menunjukkan cara aplikasi dapat mengonfigurasi konteks spasial jika ingin melacak mesh kedap air dari lingkungan.
Ya
Ya
Aplikasi memerlukan
mesh kedap air
Aplikasi perlu...
Ya
Ya
Tidak
Tidak
Runtime
mendukung kemampuan "pelacakan mesh"
Runtime...
Ya
Ya
Tidak
Tidak
Runtime
mendukung fitur "lacak mesh kedap air"
Runtime...
Aplikasi membuat konteks spasial dengan "kemampuan pelacakan mesh" DAN fitur "melacak mesh kedap air"
Aplikasi membuat spasial...
Aplikasi menangani kurangnya dukungan fitur pada runtime saat ini
Aplikasi menangani tidak adanya...
Aplikasi memproses mesh yang dilacak untuk membuat mesh kedap air, mungkin dengan bantuan pengguna dalam menambal lubang pada mesh
Aplikasi memproses tr... Teks bukan SVG - tidak dapat ditampilkan
Gambar 29. Alur aplikasi untuk meminta mesh kedap air
Komponen Dijamin
Runtime yang mendukung XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT harus menyediakan komponen spasial berikut sebagai komponen yang dijamin dari semua entity yang ditemukan oleh kemampuan ini dan harus menghitungnya dalam xrEnumerateSpatialCapabilityComponentTypesEXT :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Komponen 3D Terbatas
Komponen 3D yang dibatasi memberikan pusat dan batas entity tempat komponen tersebut berada. Data yang disediakan oleh komponen ini memudahkan aplikasi untuk memangkas entity yang berada di luar frustum tampilannya.
Lihat 3D Terbatas untuk mengetahui detail selengkapnya.
Komponen 3D Mesh
Komponen mesh 3D menyediakan mesh 3D dari entity tempatnya berada. Lihat Mesh 3D untuk mengetahui detail selengkapnya.
Segmentasi Volumetrik (Chunking)
Runtime dapat menyegmentasikan mesh menjadi blok volumetrik (potongan) untuk memudahkan aplikasi memangkas blok mesh di luar frustum tampilannya. Dalam kasus seperti ini, runtime harus memperlakukan setiap blok volumetrik tersebut sebagai entitas terpisah dan memiliki kumpulan Komponen yang Dijamin pada setiap entitas tersebut (blok volumetrik). Jika runtime menyediakan mesh kedap air dengan cara ini, setiap blok volumetrik secara individual tidak kedap air, tetapi sekelompok blok bersama-sama membentuk mesh kedap air. Dalam skenario seperti ini, runtime harus menambahkan komponen XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT pada setiap entity (blok volumetrik), dan nilai parent entity di seluruh blok yang bersama-sama membentuk mesh kedap air harus sama. Hal ini memungkinkan aplikasi mengidentifikasi potongan mana yang bersama-sama membentuk mesh kedap air.
Mesh blok volumetrik yang berdekatan dapat berbagi verteks, tetapi segitiga dari satu blok volumetrik tidak boleh tumpang-tindih dengan segitiga volume yang berdekatan.
Komponen Opsional
Mesh Normals
Data komponen
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT menggunakan XrSpatialBufferEXT untuk datanya. XrSpatialBufferEXT :: bufferId mewakili buffer yang berisi normal verteks mesh entity tempat komponen ini berada. XrSpatialBufferEXT :: bufferType harus berupa XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Entitas yang memiliki XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT juga harus memiliki XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Normal yang disediakan oleh komponen ini harus sesuai dengan verteks yang disediakan di XrSpatialMeshDataEXT :: vertexBuffer dari komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Struktur daftar komponen untuk mengkueri data
Struktur XrSpatialComponentMesh3DNormalsListEXT didefinisikan sebagai:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur seperti itu yang ditentukan dalam OpenXR inti atau ekstensi ini.meshNormalsCountadalahuint32_tyang menjelaskan jumlah elemen dalam arraymeshNormals.meshNormalsadalah array XrVector3f .
Runtime harus menampilkan XR_ERROR_VALIDATION_FAILURE dari xrQuerySpatialComponentDataEXT jika XrSpatialComponentMesh3DNormalsListEXT berada dalam rantai berikutnya dari XrSpatialComponentDataQueryResultEXT :: next, tetapi XrSpatialComponentDataQueryConditionEXT :: componentTypeCount bukan nol dan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT tidak disertakan dalam XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Runtime harus menampilkan XR_ERROR_SIZE_INSUFFICIENT dari xrQuerySpatialComponentDataEXT jika meshNormalsCount kurang dari XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_EXT_spatial_mesh_trackingharus diaktifkan sebelum menggunakan XrSpatialComponentMesh3DNormalsListEXT -
typeharus berupaXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur -
meshNormalsharus berupa pointer ke array strukturmeshNormalsCountXrSpatialBufferEXT - Parameter
meshNormalsCountharus lebih besar dari0
Konfigurasi
Jika XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT dihitung dalam XrSpatialCapabilityComponentTypesEXT :: componentTypes untuk beberapa kemampuan, aplikasi dapat mengaktifkannya dengan menyertakan enum dalam daftar XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Komponen ini tidak memerlukan konfigurasi khusus untuk disertakan dalam rantai XrSpatialCapabilityConfigurationBaseHeaderEXT berikutnya. Namun, aplikasi dianjurkan untuk menggunakan komponen ini dan datanya bersama dengan komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Label Semantik Mesh
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;
Enumerasi XrSpatialMeshSemanticLabelEXT menjelaskan kumpulan label semantik untuk mesh. Hal ini digunakan oleh berbagai komponen spasial untuk memberikan makna pada nilai uint8_t dari XrSpatialBufferEXT untuk label semantik per verteks atau per segitiga. Lihat Label Semantik Vertex Mesh dan Label Semantik Segitiga Mesh
Ekstensi yang ingin memperluas set label semantik ini atau menambahkan set baru miliknya sendiri untuk mesh, harus mengikuti panduan yang diberikan dalam Panduan Desain & Ekstensi Label Semantik .
Deskripsi Enum
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
Runtime tidak dapat mengklasifikasikan verteks atau segitiga.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
Verteks atau segitiga dipetakan ke lantai.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
Vertex atau segitiga dipetakan ke dinding.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
Verteks atau segitiga dipetakan ke langit-langit.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
Vertex atau segitiga dipetakan ke tabel.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
Vertex atau segitiga dipetakan ke kursi.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
Vertex atau segitiga dipetakan ke sofa.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
Vertex atau segitiga dipetakan ke tempat tidur.
Label Semantik Vertex Mesh
Ringkasan Komponen
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT memberikan satu label semantik untuk setiap verteks mesh entity spasial.
Data komponen
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT menggunakan XrSpatialBufferEXT untuk datanya. XrSpatialBufferEXT :: bufferId mewakili buffer yang berisi label semantik verteks mesh entity tempat komponen ini berada. XrSpatialBufferEXT :: bufferType harus berupa XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Nilai dalam buffer sesuai dengan nilai enumerasi XrSpatialMeshSemanticLabelEXT. Entitas yang memiliki XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT juga harus memiliki komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Label semantik yang disediakan oleh komponen ini harus sesuai dengan verteks yang disediakan di XrSpatialMeshDataEXT :: vertexBuffer dari komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Artinya, label semantik pada indeks tertentu dari data buffering spasial yang disediakan oleh komponen ini sesuai dengan verteks pada indeks yang sama yang disediakan oleh XrSpatialMeshDataEXT :: vertexBuffer . Hal ini juga berarti bahwa xrGetSpatialBufferUint8EXT :: bufferCountOutput harus memiliki nilai yang sama untuk buffer label semantik verteks dan XrSpatialMeshDataEXT :: vertexBuffer .
Struktur daftar komponen untuk mengkueri data
Struktur XrSpatialComponentMesh3DVertexSemanticLabelsListEXT didefinisikan sebagai:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur seperti itu yang ditentukan dalam OpenXR inti atau ekstensi ini.meshSemanticLabelsCountadalahuint32_tyang menjelaskan jumlah elemen dalam arraymeshSemanticLabels.meshSemanticLabelsadalah array XrSpatialBufferEXT .
Runtime harus menampilkan XR_ERROR_VALIDATION_FAILURE dari xrQuerySpatialComponentDataEXT jika XrSpatialComponentMesh3DVertexSemanticLabelsListEXT berada dalam rantai berikutnya dari XrSpatialComponentDataQueryResultEXT :: next, tetapi XrSpatialComponentDataQueryConditionEXT :: componentTypeCount bukan nol dan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT tidak disertakan dalam XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Runtime harus menampilkan XR_ERROR_SIZE_INSUFFICIENT dari xrQuerySpatialComponentDataEXT jika meshSemanticLabelsCount kurang dari XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_EXT_spatial_mesh_trackingharus diaktifkan sebelum menggunakan XrSpatialComponentMesh3DVertexSemanticLabelsListEXT -
typeharus berupaXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur -
meshSemanticLabelsharus berupa pointer ke array strukturmeshSemanticLabelsCountXrSpatialBufferEXT - Parameter
meshSemanticLabelsCountharus lebih besar dari0
Konfigurasi
Jika XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT dihitung dalam XrSpatialCapabilityComponentTypesEXT :: componentTypes untuk beberapa kemampuan, aplikasi dapat mengaktifkannya dengan menyertakan enum dalam daftar XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Komponen ini tidak memerlukan konfigurasi khusus untuk disertakan dalam rantai XrSpatialCapabilityConfigurationBaseHeaderEXT berikutnya. Namun, aplikasi dianjurkan untuk menggunakan komponen ini dan datanya bersama dengan komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Komponen ini tidak dapat diaktifkan bersama dengan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Jika aplikasi menambahkan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT dan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT ke XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , runtime harus menampilkan XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Runtime juga harus menampilkan XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT jika aplikasi mencoba mengaktifkan kedua komponen dalam XrSpatialContextEXT terpisah.
Label Semantik Segitiga Mesh
Ringkasan Komponen
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT memberikan satu label semantik untuk setiap segitiga mesh entity spasial.
Data komponen
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT menggunakan XrSpatialBufferEXT untuk datanya. XrSpatialBufferEXT :: bufferId mewakili buffer yang berisi label semantik segitiga mesh entity tempat komponen ini berada. XrSpatialBufferEXT :: bufferType harus berupa XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Nilai dalam buffer sesuai dengan nilai enumerasi XrSpatialMeshSemanticLabelEXT. Entitas yang memiliki XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT juga harus memiliki komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Label semantik yang disediakan oleh komponen ini harus sesuai dengan segitiga yang disediakan di XrSpatialMeshDataEXT komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Jumlah elemen buffer spasial yang berisi label semantik segitiga adalah jumlah elemen XrSpatialMeshDataEXT :: indexBuffer dibagi 3. Artinya, label semantik pada indeks tertentu dari data buffering spasial yang disediakan oleh komponen ini sesuai dengan segitiga yang diwakili oleh [index * 3], [index * 3 + 1], [index * 3 + 2] di XrSpatialMeshDataEXT :: indexBuffer .
Struktur daftar komponen untuk mengkueri data
Struktur XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT didefinisikan sebagai:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur seperti itu yang ditentukan dalam OpenXR inti atau ekstensi ini.meshSemanticLabelsCountadalahuint32_tyang menjelaskan jumlah elemen dalam arraymeshSemanticLabels.meshSemanticLabelsadalah array XrSpatialBufferEXT .
Runtime harus menampilkan XR_ERROR_VALIDATION_FAILURE dari xrQuerySpatialComponentDataEXT jika XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT berada dalam rantai berikutnya dari XrSpatialComponentDataQueryResultEXT :: next, tetapi XrSpatialComponentDataQueryConditionEXT :: componentTypeCount bukan nol dan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT tidak disertakan dalam XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Runtime harus menampilkan XR_ERROR_SIZE_INSUFFICIENT dari xrQuerySpatialComponentDataEXT jika meshSemanticLabelsCount kurang dari XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_EXT_spatial_mesh_trackingharus diaktifkan sebelum menggunakan XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT -
typeharus berupaXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur -
meshSemanticLabelsharus berupa pointer ke array strukturmeshSemanticLabelsCountXrSpatialBufferEXT - Parameter
meshSemanticLabelsCountharus lebih besar dari0
Konfigurasi
Jika XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT dihitung dalam XrSpatialCapabilityComponentTypesEXT :: componentTypes untuk beberapa kemampuan, aplikasi dapat mengaktifkannya dengan menyertakan enum dalam daftar XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Komponen ini tidak memerlukan konfigurasi khusus untuk disertakan dalam rantai XrSpatialCapabilityConfigurationBaseHeaderEXT berikutnya. Namun, aplikasi dianjurkan untuk menggunakan komponen ini dan datanya bersama dengan komponen XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Komponen ini tidak dapat diaktifkan bersama dengan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Jika aplikasi menambahkan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT dan XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT ke XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , runtime harus menampilkan XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Runtime juga harus menampilkan XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT jika aplikasi mencoba mengaktifkan kedua komponen dalam XrSpatialContextEXT terpisah.
Struktur Baru
- XrSpatialCapabilityConfigurationMeshTrackingEXT
Memperluas XrSpatialCapabilityConfigurationMeshTrackingEXT :
Memperluas XrSpatialComponentDataQueryResultEXT :
Enum Baru
Konstanta Enum Baru
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONMemperluas XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
Memperluas XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Memperluas XrSpatialComponentTypeEXT :
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
Memperluas XrStructureType :
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
Masalah
Riwayat Versi
Revisi 1, 02-11-2025 (Nihav Jain, Google)
- Deskripsi ekstensi awal