XR_EXT_spatial_mesh_tracking
رشته نام
XR_EXT_spatial_mesh_tracking
نوع افزونه
افزونه نمونه
شماره داخلی ثبتشده
784
بازبینی
1
وضعیت تصویب
تصویبنشده
وابستگیهای افزونه و نسخه
XR_EXT_spatial_entity
همیاران
Nihav Jain، Google
Natalie Fleury، Meta
Yuichi Taguchi، Meta
Ron Bessems، Meta
Yin Li، Microsoft
Jimmy Alamparambil، ByteDance
Zhipeng Liu، ByteDance
Jun Yan، ByteDance
نمای کلی
این افزونه برپایه XR_EXT_spatial_entity ساخته شده است و قابلیتهای فضایی را برای ردیابی مش مثلثی محیط تعریف میکند. مش مثلثی ارائهشده توسط قابلیت تعریفشده در این افزونه برای استفاده در برنامهها جهت تعیین برخورد محتوای مجازی با محیط درنظر گرفته شده است.
قابلیت ردیابی مش فضایی
این افزونه XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT را بهعنوان قابلیت فضایی برای ردیابی مش مثلثی محیط تعریف میکند. ردیابی مش نهادهایی مانند هواپیماها و اشیاء تحت پوشش این قابلیت نیست و درعوض باید با شمارش مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT برای قابلیتهای مربوطه که آن نهادها را ردیابی میکنند نشان داده شود.
از XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT برای ارائه مشهای ضدآب و غیرضدآب به برنامه استفاده میشود، که این امر به تواناییهای زمان اجرا و پیکربندی انتخابشده توسط برنامه بستگی دارد.
مش ضدآب مشی است که در آن شکافها و مناطق اسکننشده در همه اندازهها پر شدهاند و مش محکمی را در یک بلوک حجمی خاص تشکیل میدهد. همانطور که از نام آن پیداست، اگر برنامهای آب را در یک مش ضدآب پر کند، نباید آبی از حجم ضدآب نشت کند. تبدیل مش اسکنشده به مش ضدآب اغلب به محاسبات بسیار بالایی نیاز دارد، اگرچه برخیاز زمانهای اجرا با پردازش مش ازقبل، این هزینه را جبران میکنند.
پشتیبانی زمان اجرا
اگر زمان اجرا از ردیابی برای مش مثلثی محیط پشتیبانی میکند، باید این موضوع را با شمارش XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT در xrEnumerateSpatialCapabilitiesEXT نشان دهد.
سه توانایی احتمالی برای زمان اجرایی که از XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT پشتیبانی میکند وجود دارد -
- زمان اجرا فقط از ردیابی مش غیرآببندی پشتیبانی میکند. در این حالت، زمان اجرا
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTرا در xrEnumerateSpatialCapabilitiesEXT برمیشمارد اما نبایدXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTرا در xrEnumerateSpatialCapabilityFeaturesEXT برشمارد (به ردیابی مش ضدآب مراجعه کنید). - زمان اجرا از هر دو ردیابی مش ضدآب و غیرضدآب پشتیبانی میکند. در این حالت، زمان اجرا
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTرا در xrEnumerateSpatialCapabilitiesEXT برمیشمارد و بایدXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTرا نیز در xrEnumerateSpatialCapabilityFeaturesEXT برشمارد (به ردیابی مش ضدآب مراجعه کنید) تا درخواستهای ردیابی مش ضدآب از برنامه فعال شود. - زمان اجرا فقط از ردیابی مش ضدآب پشتیبانی میکند. در این حالت، زمان اجرا
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTرا در xrEnumerateSpatialCapabilitiesEXT برمیشمارد و بایدXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTرا نیز در xrEnumerateSpatialCapabilityFeaturesEXT برشمارد (به ردیابی مش ضدآب مراجعه کنید) تا به برنامه نشان دهد که از ردیابی مش ضدآب پشتیبانی میکند. در این مورد خاص، زمان اجرا همیشه بدون توجه به پیکربندیXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT، یک مش ضدآب به برنامه برمیگرداند.
پیکربندی
ساختار XrSpatialCapabilityConfigurationMeshTrackingEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
capabilityیک XrSpatialCapabilityEXT است و بایدXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTباشد. enabledComponentCountیکuint32_tاست که تعداد عناصر را در آرایهenabledComponentsتوصیف میکند.-
enabledComponentsاشارهگری به آرایهای از XrSpatialComponentTypeEXT است.
برنامهها میتوانند قابلیت فضایی XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT را با گنجاندن اشارهگری به ساختار XrSpatialCapabilityConfigurationMeshTrackingEXT در XrSpatialContextCreateInfoEXT :: capabilityConfigs فعال کنند.
اگر capability XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_mesh_trackingباید قبلاز استفاده از XrSpatialCapabilityConfigurationMeshTrackingEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد. همچنین ببینید: XrSpatialFeatureTrackWatertightMeshEXT -
capabilityباید مقدار XrSpatialCapabilityEXT معتبری باشد -
enabledComponentsباید اشارهگری به آرایهای از مقادیر معتبرenabledComponentCountXrSpatialComponentTypeEXT باشد - پارامتر
enabledComponentCountباید بزرگتر از0باشد
ردیابی مش ضدآب
ساختار XrSpatialFeatureTrackWatertightMeshEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. enableWatertightMeshTrackingنشان میدهد که آیا زمان اجرا باید مش ضدآب برای محیط اسکنشده محاسبه کند یا نه.
زمانهای اجرایی که از ردیابی مش ضدآب پشتیبانی میکنند باید XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT را در xrEnumerateSpatialCapabilityFeaturesEXT شمارش کنند. ویژگی XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT به برنامهها اجازه میدهد تا بهطور اختیاری ردگیری مش ضدآب را فعال کنند و صریحاً هرگونه محاسبات اضافی را که تولید مش ضدآب ممکن است متحمل شود انتخاب کنند.
اگر XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT توسط xrEnumerateSpatialCapabilityFeaturesEXT برای قابلیت خاصی شمارش شود، برنامه میتواند XrSpatialFeatureTrackWatertightMeshEXT را به ساختار پیکربندی مربوطه آن قابلیت زنجیر کند تا نشان دهد که آیا میخواهد مش ردیابیشده ضدآب باشد یا نه. اگر برنامه enableWatertightMeshTracking را روی XR_TRUE تنظیم کند، زمان اجرا باید مش ضدآب محیط را محاسبه کند و به برنامه ارائه دهد. اگر برنامه enableWatertightMeshTracking را روی XR_FALSE تنظیم کند، اگر زمان اجرا فقط از ردیابی مش ضدآب پشتیبانی کند، مش ردیابیشده ممکن است همچنان ضدآب باشد، مثلاً در مواردی که زمان اجرا مش پردازششدهای را از محیط پیشاسکنشده ارائه میدهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_mesh_trackingباید قبلاز استفاده از XrSpatialFeatureTrackWatertightMeshEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
جریان برنامه
نمودار زیر نشان میدهد که اگر برنامهای بخواهد توری ضدآب محیط را ردیابی کند، چگونه میتواند بافت فضایی را پیکربندی کند.
بله
بله
برنامه به
مش ضدآب نیاز دارد
برنامه نیاز دارد...
بله
بله
نه
نه
زمان اجرا
از قابلیت «ردیابی مش»
پشتیبانی میکند
زمان اجرا…
بله
بله
نه
نه
زمان اجرای
از ویژگی «ردیابی مش ضدآب»
پشتیبانی میکند
زمان اجرا…
برنامه با «قابلیت ردیابی مش» و ویژگی «ردیابی مش ضدآب» بافت فضایی ایجاد میکند
برنامه فضایی ایجاد میکند...
برنامه عدم پشتیبانی از ویژگی را در زمان اجرای فعلی مدیریت میکند
برنامه فاقد… است
برنامه مش ردیابیشده را پردازش میکند تا خودش مشی بدون درز ایجاد کند، شاید با کمک کاربر در وصله کردن سوراخهای مش
برنامه تراکنش را پردازش میکند... نوشتار SVG نیست - نمایش داده نمیشود
شکل ۲۹. جریان برنامه برای درخواست مش ضدآب
قطعات تضمینشده
زمان اجرایی که از XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT پشتیبانی میکند باید مؤلفههای فضایی زیر را بهعنوان مؤلفههای تضمینشده همه موجودیتهای کشفشده توسط این قابلیت ارائه دهد و باید آنها را در xrEnumerateSpatialCapabilityComponentTypesEXT فهرست کند:
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
مؤلفه سهبعدی محدودشده
مؤلفه سهبعدی محدودشده مرکز و حدود نهادی را که روی آن قرار دارد ارائه میدهد. دادههای ارائهشده توسط این مؤلفه باعث میشود برنامهها راحتتر بتوانند موجودیتهایی را که خارج از هرم دید آن هستند حذف کنند.
برای جزئیات بیشتر، Bounded 3D را ببینید.
عنصر سهبعدی توری
مؤلفه سهبعدی توری، توری سهبعدی نهادی را که روی آن قرار دارد ارائه میدهد. برای جزئیات بیشتر، Mesh 3D را ببینید.
بخشبندی حجمی (تکهتکه کردن)
زمان اجرا ممکن است مش را به بلوکهای حجمی (تکهها) تقسیم کند تا برنامهها راحتتر بتوانند بلوکهای مش خارج از هرم دید خود را حذف کنند. در چنین حالتی، زمان اجرا باید با هریک از این بلوکهای حجمی بهعنوان موجودیتی جداگانه رفتار کند و مجموعه مؤلفههای تضمینشده را در هریک از این موجودیتها (بلوک حجمی) داشته باشد. اگر زمان اجرا مش ضدآب را به این روش ارائه دهد، هر بلوک حجمی بهطور جداگانه ضدآب نیست، اما گروهی از بلوکها باهم مش ضدآب را تشکیل میدهند. در چنین سناریویی، زمان اجرا باید مؤلفه XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT را به هر نهاد (بلوک حجمی) اضافه کند و مقدار نهاد اصلی در سراسر بلوکهایی که باهم یک مش ضدآب را تشکیل میدهند باید یکسان باشد. این کار به برنامه امکان میدهد تشخیص دهد کدام تکهها باهم یک مش ضدآب را تشکیل میدهند.
مشهای بلوکهای حجمی مجاور ممکن است رئوس مشترک داشته باشند، اما مثلثهای یک بلوک حجمی نباید با مثلثهای حجم مجاور آن همپوشانی داشته باشند.
اجزای اختیاری
Mesh Normals
دادههای مؤلفه
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT از XrSpatialBufferEXT برای دادههایش استفاده میکند. XrSpatialBufferEXT :: bufferId نشاندهنده میانگیری است که حاوی نرمالهای رأس مش موجودیتی است که این مؤلفه روی آن قرار دارد. XrSpatialBufferEXT :: bufferType باید XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT باشد. نهادی که XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT دارد باید XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT را هم داشته باشد. نرمالهای ارائهشده توسط این مؤلفه باید با رئوس ارائهشده در XrSpatialMeshDataEXT :: vertexBuffer از مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT مطابقت داشته باشند.
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentMesh3DNormalsListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. meshNormalsCountیکuint32_tاست که تعداد عناصر را در آرایهmeshNormalsتوصیف میکند.-
meshNormalsآرایهای از XrVector3f است.
اگر XrSpatialComponentMesh3DNormalsListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT :: componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر meshNormalsCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_mesh_trackingباید قبلاز استفاده از XrSpatialComponentMesh3DNormalsListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
meshNormalsباید اشارهگری به آرایهای از ساختارهایmeshNormalsCountXrSpatialBufferEXT باشد - پارامتر
meshNormalsCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد. بااینحال، برنامهها تشویق میشوند که از این مؤلفه و دادههای آن در ارتباط با مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT استفاده کنند.
برچسبهای معنایی توری
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 مجموعهای از برچسبهای معنایی را برای مش توصیف میکند. این مورد توسط مؤلفههای فضایی مختلف استفاده میشود تا به مقادیر uint8_t از XrSpatialBufferEXT برای برچسبهای معنایی هر رأس یا هر مثلث معنا ببخشد. برچسبهای معنایی رأس مش و برچسبهای معنایی مثلث مش را ببینید
افزونههایی که میخواهند این مجموعه برچسب معنایی را گسترش دهند یا مجموعه جدید خود را برای مشها اضافه کنند، باید از دستورالعملهای ارائهشده در دستورالعملهای طراحی و گسترش برچسب معنایی پیروی کنند.
شرح شمارشی
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
زمان اجرا نتوانست رأس یا مثلث را طبقهبندی کند.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
رأس یا مثلث به طبقه نگاشته میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
رأس یا مثلث به دیوار نگاشت میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
رأس یا مثلث به سقف نگاشت میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
رأس یا مثلث به جدول نگاشت میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
رأس یا مثلث به صندلی نگاشته میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
رأس یا مثلث به کاناپه نگاشته میشود.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
رأس یا مثلث به تختخواب نگاشته میشود.
برچسبهای معنایی رأس مش
نمای کلی مؤلفه
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT یک برچسب معنایی واحد برای هر رأس مش یک موجودیت فضایی ارائه میدهد.
دادههای مؤلفه
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT از XrSpatialBufferEXT برای دادههایش استفاده میکند. XrSpatialBufferEXT :: bufferId نشاندهنده میانگیری است که حاوی برچسبهای معنایی رأس مش نهادی است که این مؤلفه روی آن قرار دارد. XrSpatialBufferEXT :: bufferType باید XR_SPATIAL_BUFFER_TYPE_UINT8_EXT باشد. مقادیر موجود در میانگیر با مقادیر شمارش XrSpatialMeshSemanticLabelEXT مطابقت دارد. نهادی که XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT دارد باید مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT را نیز داشته باشد. برچسبهای معنایی ارائهشده توسط این مؤلفه باید با رأسهای ارائهشده در XrSpatialMeshDataEXT :: vertexBuffer از مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT مطابقت داشته باشند. این نشان میدهد که برچسب معنایی در نمایه دادهشده از دادههای میانگیر فضایی ارائهشده توسط این مؤلفه با رأس در همان نمایه ارائهشده توسط XrSpatialMeshDataEXT :: vertexBuffer مطابقت دارد. این همچنین به این معنی است که xrGetSpatialBufferUint8EXT :: bufferCountOutput باید همان مقدار برای میانگیر برچسب معنایی رأس و XrSpatialMeshDataEXT :: vertexBuffer باشد.
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentMesh3DVertexSemanticLabelsListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. meshSemanticLabelsCountیکuint32_tاست که تعداد عناصر را در آرایهmeshSemanticLabelsتوصیف میکند.-
meshSemanticLabelsآرایهای از XrSpatialBufferEXT است.
اگر XrSpatialComponentMesh3DVertexSemanticLabelsListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT :: componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر meshSemanticLabelsCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_mesh_trackingباید قبلاز استفاده از XrSpatialComponentMesh3DVertexSemanticLabelsListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
meshSemanticLabelsباید اشارهگری به آرایهای از ساختارهایmeshSemanticLabelsCountXrSpatialBufferEXT باشد - پارامتر
meshSemanticLabelsCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد. بااینحال، برنامهها تشویق میشوند که از این مؤلفه و دادههای آن در ارتباط با مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT استفاده کنند. این مؤلفه نمیتواند همراه با XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT فعال شود. اگر برنامهای هم XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT و هم XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT را به XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents اضافه کند، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را برگرداند. اگر برنامه تلاش کند هر دو مؤلفه را در XrSpatialContextEXT جداگانه فعال کند، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را نیز برگرداند.
برچسبهای معنایی مثلث مش
نمای کلی مؤلفه
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT یک برچسب معنایی واحد برای هر مثلث از مش یک موجودیت فضایی ارائه میدهد.
دادههای مؤلفه
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT از XrSpatialBufferEXT برای دادههایش استفاده میکند. XrSpatialBufferEXT :: bufferId نشاندهنده میانگیری است که حاوی برچسبهای معنایی مثلثی مش نهادی است که این مؤلفه روی آن قرار دارد. XrSpatialBufferEXT :: bufferType باید XR_SPATIAL_BUFFER_TYPE_UINT8_EXT باشد. مقادیر موجود در میانگیر با مقادیر شمارش XrSpatialMeshSemanticLabelEXT مطابقت دارد. نهادی که XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT دارد باید مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT را نیز داشته باشد. برچسبهای معنایی ارائهشده توسط این مؤلفه باید با مثلثهای ارائهشده در XrSpatialMeshDataEXT مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT مطابقت داشته باشند. تعداد عناصر میانگیر فضایی حاوی برچسبهای معنایی مثلث برابر است با تعداد عناصر XrSpatialMeshDataEXT :: indexBuffer تقسیم بر ۳. این یعنی برچسب معنایی در نمایه دادهشده از دادههای میانگیر فضایی ارائهشده توسط این مؤلفه با مثلثی که توسط [index * 3]، [index * 3 + 1]، [index * 3 + 2] در XrSpatialMeshDataEXT :: indexBuffer نشان داده شده است مطابقت دارد.
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. meshSemanticLabelsCountیکuint32_tاست که تعداد عناصر را در آرایهmeshSemanticLabelsتوصیف میکند.-
meshSemanticLabelsآرایهای از XrSpatialBufferEXT است.
اگر XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT :: componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر meshSemanticLabelsCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_mesh_trackingباید قبلاز استفاده از XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
meshSemanticLabelsباید اشارهگری به آرایهای از ساختارهایmeshSemanticLabelsCountXrSpatialBufferEXT باشد - پارامتر
meshSemanticLabelsCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد. بااینحال، برنامهها تشویق میشوند که از این مؤلفه و دادههای آن در ارتباط با مؤلفه XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT استفاده کنند. این مؤلفه نمیتواند همراه با XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT فعال شود. اگر برنامهای هم XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT و هم XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT را به XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents اضافه کند، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را برگرداند. اگر برنامه تلاش کند هر دو مؤلفه را در XrSpatialContextEXT جداگانه فعال کند، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را نیز برگرداند.
سازههای جدید
- XrSpatialCapabilityConfigurationMeshTrackingEXT
درحال گسترش دادن XrSpatialCapabilityConfigurationMeshTrackingEXT :
درحال گسترش دادن XrSpatialComponentDataQueryResultEXT :
Enums جدید
ثابتهای شمارشی جدید
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONدرحال گسترش دادن XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
درحال گسترش دادن XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
درحال گسترش دادن 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
درحال گسترش دادن 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
مشکلات
سابقه نسخه
بازبینی ۱، ۲۰۲۵/۱۱/۰۲ (نیهاو جین، Google)
- شرح اولیه افزونه