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;

توضیحات عضو

  • type XrStructureType این ساختار است.
  • ‫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 را برگرداند.

استفاده معتبر (ضمنی)

ردیابی مش ضدآب

ساختار XrSpatialFeatureTrackWatertightMeshEXT به‌صورت زیر تعریف می‌شود:

typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;

توضیحات عضو

  • type XrStructureType این ساختار است.
  • ‫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 تنظیم کند، اگر زمان اجرا فقط از ردیابی مش ضدآب پشتیبانی کند، مش ردیابی‌شده ممکن است همچنان ضدآب باشد، مثلاً در مواردی که زمان اجرا مش پردازش‌شده‌ای را از محیط پیش‌اسکن‌شده ارائه می‌دهد.

استفاده معتبر (ضمنی)

جریان برنامه

نمودار زیر نشان می‌دهد که اگر برنامه‌ای بخواهد توری ضدآب محیط را ردیابی کند، چگونه می‌تواند بافت فضایی را پیکربندی کند.

بله

بله

برنامه به
مش ضدآب نیاز دارد

برنامه نیاز دارد...

بله

بله

نه

نه

زمان اجرا
از قابلیت «ردیابی مش»
پشتیبانی می‌کند

زمان اجرا…

بله

بله

نه

نه

زمان اجرای
از ویژگی «ردیابی مش ضدآب»
پشتیبانی می‌کند

زمان اجرا…

برنامه با «قابلیت ردیابی مش» و ویژگی «ردیابی مش ضدآب» بافت فضایی ایجاد می‌کند

برنامه فضایی ایجاد می‌کند...

برنامه عدم پشتیبانی از ویژگی را در زمان اجرای فعلی مدیریت می‌کند

برنامه فاقد… است

برنامه مش ردیابی‌شده را پردازش می‌کند تا خودش مشی بدون درز ایجاد کند، شاید با کمک کاربر در وصله کردن سوراخ‌های مش

برنامه تراکنش را پردازش می‌کند... نوشتار SVG نیست - نمایش داده نمی‌شود

شکل ۲۹. جریان برنامه برای درخواست مش ضدآب

قطعات تضمین‌شده

زمان اجرایی که از XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT پشتیبانی می‌کند باید مؤلفه‌های فضایی زیر را به‌عنوان مؤلفه‌های تضمین‌شده همه موجودیت‌های کشف‌شده توسط این قابلیت ارائه دهد و باید آن‌ها را در xrEnumerateSpatialCapabilityComponentTypesEXT فهرست کند:

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_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;

توضیحات عضو

  • type XrStructureType این ساختار است.
  • ‫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 باید اشاره‌گری به آرایه‌ای از ساختارهای meshNormalsCount XrSpatialBufferEXT باشد
  • پارامتر 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;

توضیحات عضو

  • type XrStructureType این ساختار است.
  • ‫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_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;

توضیحات عضو

  • type XrStructureType این ساختار است.
  • ‫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_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 را نیز برگرداند.

سازه‌های جدید

Enums جدید

ثابت‌های شمارشی جدید

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_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_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • درحال گسترش دادن XrStructureType :

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

مشکلات

سابقه نسخه

  • بازبینی ۱،‏ ۲۰۲۵/۱۱/۰۲ (نیهاو جین، Google)

    • شرح اولیه افزونه