XR_EXT_spatial_entity
رشته نام
XR_EXT_spatial_entity
نوع افزونه
افزونه نمونه
شماره داخلی ثبتشده
741
بازبینی
1
وضعیت تصویب
تصویبشده
وابستگیهای افزونه و نسخه
XR_EXT_future
همیاران
Nihav Jain، Google
Jared Finder، Google
Natalie Fleury، Meta
Yuichi Taguchi، Meta
Ron Bessems، Meta
Yin Li، Microsoft
Karthik Kadappan، Magic Leap
Jimmy Alamparambil، ByteDance
Zhipeng Liu، ByteDance
Jun Yan، ByteDance
نمای کلی
این افزونه مفاهیم و پایههای درک صحنه و استدلال فضایی را در OpenXR معرفی میکند. این کار چندین حوزه عملکردی مرتبط اما متمایز را یکپارچه میکند که بهطور گسترده و یکنواخت، همانطور که توسط این افزونه تعریف شده است، شمارش، پیکربندی، و تعامل میشوند. ازآنجاییکه این افزونه فاقد تعاریف مشخصی از هریک از این حوزههای عملکردی است، نوشتار مشخصات رسمی تا حدودی انتزاعی است. نمونههای گنجاندهشده در این متن مشخصات افزونه گاهی به عملکردی اشاره دارد که در افزونه مرتبط آینده یا فرضی برای هدف تصویرسازی تعریف شده است، بدون اینکه ذاتاً چنین عملکرد اضافی را محدود یا مشخص کند.
بخشهای کلی این افزونه عبارتند از:
- نهادهای فضایی : عملکرد حول نهادها متمرکز است که بهخودیخود عملکرد بسیار کمی ارائه میدهند.
- مؤلفههای فضایی : این موجودیتها دارای مؤلفههایی هستند که با آنها مرتبطاند و دادهها و رفتارها را ارائه میدهند.
- انواع مؤلفه فضایی : هر مؤلفه فضایی از یک نوع مؤلفه خاص است و هر نهاد دادهشده حداکثر یک مؤلفه از هر نوع مؤلفه دادهشده دارد.
- بافت فضایی : همه تعاملهای موجودیت فضایی در یک بافت پساز مرحله مقداردهی اولیه و پیکربندی رخ میدهد.
- قابلیتهای فضایی : دستکاری نهاد فضایی بهطور گسترده توسط قابلیتها ارائه میشود. قابلیت نوعی واحد عملکرد است، برای مثال (بدون محدودیت) لنگرهای تعریفشده توسط برنامه، تشخیص صفحه، یا ردگیری تصویر. هر قابلیت معمولاً در یک افزونه جداگانه تعریف میشود (که طبق معمول در زمان ایجاد نمونه فعال میشود) و برای یک زمینه خاص در زمان ایجاد فعال میشود.
- هر قابلیت با مجموعهای از انواع مؤلفه مرتبط است که مؤلفههای آن در هر نهادی که توسط آن قابلیت نمایش داده میشود وجود دارد. افزونهای که قابلیت را تعریف میکند مشخص میکند کدام انواع مؤلفه برای آن قابلیت الزامی است («تضمینشده»)، درحالیکه همان افزونه یا افزونههای دیگر ممکن است انواع مؤلفه اختیاری را که توسط برخیاز پیادهسازیهای بالقوه ارائه میشود مشخص کنند. هر تعداد قابلیت ممکن است موجودیتهایی با مؤلفههای یک نوع مؤلفه مشخص ارائه دهد که بدون توجه به قابلیتی که آن را تولید کرده است، بهطور یکسان قابلاستفاده هستند.
- ویژگیهای قابلیت فضایی : علاوهبراین، برخی قابلیتها به پیکربندی نیاز دارند و بنابراین با ویژگیهای قابلیت پارامتربندی میشوند.
این افزونه سازوکاری برای شمارش مؤلفههای ارائهشده توسط هر قابلیت پشتیبانیشده در سیستم فعلی، هم مؤلفههای اجباری و هم هرگونه مؤلفه اختیاری، ارائه میدهد.
ازآنجاییکه برخی پیادهسازیها ممکن است به درجات مختلفی از پارامترسازی برای قابلیتها نیاز داشته باشند، این افزونه مکانیزمی برای شمارش ویژگیهای قابلیت پشتیبانیشده مرتبط با یک قابلیت خاص در سیستم فعلی ارائه میدهد.
این افزونه همچنین چندین مؤلفه رایج را تعریف میکند که انتظار میرود در طیف گستردهای از قابلیتها استفاده شوند.
نهاد فضایی
نهادهای فضایی نهادهایی هستند که در فضایی وجود دارند و دادههای مرتبط مختلفی دارند که در مؤلفههایی سازماندهی شدهاند. این موارد میتوانند هریک از موارد زیر باشند:
- فیزیکی (مثلاً سطوح مسطح مانند دیوارها و کفها، اشیایی مانند صندلیها و قفسههای کتاب، و غیره)
- مجازی (مثلاً محتوایی که توسط برنامه یا کاربر دیگری قرار داده و همرسانی شده است)،
- تعریفشده توسط برنامه (مثلاً برنامهای که منطقهای را بهعنوان «اتاق نشیمن» یا «آشپزخانه» علامتگذاری میکند، یا نقطهای را بهعنوان مکان قرار دادن تلویزیون و غیره علامتگذاری میکند)
مواردی که ازطریق سیستم کنش نمایش داده میشوند، مانند کنترلکنندهها یا نگاه چشم، برای مدلسازی بهعنوان موجودیتهای فضایی درنظر گرفته نشدهاند.
نهادهای فضایی در OpenXR بهعنوان یک سیستم نهاد-مؤلفه مدلسازی میشوند. هر نهاد فضایی مجموعهای از مؤلفهها دارد و هر مؤلفه مجموعه یکتایی از دادهها و رفتارها را برای آن نهاد ارائه میدهد.
نهادهای فضایی با یک اتم XrSpatialEntityIdEXT یا یک دسته XrSpatialEntityEXT نمایش داده میشوند که جزئیات آنها در بخش نمایش نهاد فضایی ارائه شده است.
انواع مؤلفه فضایی
نهاد فضایی یک یا چند مؤلفه دارد که دادهها یا رفتارهای آن نهاد را ارائه میدهد. برای برخیاز مؤلفههای رایج تعریفشده توسط این افزونه، به مؤلفههای رایج مراجعه کنید.
typedef enum XrSpatialComponentTypeEXT {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT = 1,
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT = 2,
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT = 3,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT = 4,
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT = 1000741000,
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT = 1000741001,
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT = 1000741002,
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT = 1000741003,
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT = 1000743000,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT = 1000744000,
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT = 1000744001,
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT = 1000744002,
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT = 1000762000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT = 1000763000,
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT = 1000782000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT = 1000783000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT = 1000783001,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT = 1000783002,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID = 1000785000,
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID = 1000786000,
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID = 1000791000,
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS = 1000792002,
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS = 1000792003,
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS = 1000792004,
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS = 1000792005,
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1 = 1000793000,
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID = 1000794000,
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2 = 1000798000,
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID = 1000803000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1 = 1000808000,
XR_SPATIAL_COMPONENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;
شمارش XrSpatialComponentTypeEXT انواع مختلف مؤلفههایی را که زمان اجرا ممکن است پشتیبانی کند شناسایی میکند.
همه انواع مؤلفههای فهرستشده توسط این افزونه بهتنهایی ارائه نمیشوند: برخیاز آنها طبق اسناد به افزونههای اضافی نیاز دارند تا در زمان ایجاد نمونه فعال شوند.
مقادیر شمارشی دارای مقادیر زیر هستند:
شرح شمارشی
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
مؤلفهای که مرزهای دوبعدی را برای موجودیت فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentBounded2DListEXT است؛ ساختار داده مربوطه XrSpatialBounded2DDataEXT است
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
مؤلفهای که مرزهای سهبعدی را برای نهاد فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentBounded3DListEXT است؛ ساختار داده مربوطه XrBoxf است
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT
مؤلفهای که XrSpatialEntityIdEXT ولی را برای نهاد فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentParentListEXT است؛ ساختار داده مربوطه XrSpatialEntityIdEXT است
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
مؤلفهای که مش سهبعدی برای نهاد فضایی ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentMesh3DListEXT است؛ ساختار داده متناظر XrSpatialMeshDataEXT است
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT
مؤلفهای که شمارش تراز صفحه را برای نهاد فضایی ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentPlaneAlignmentListEXT است؛ ساختار داده متناظر XrSpatialPlaneAlignmentEXT است (افزودهشده توسط افزونه XR_EXT_spatial_plane_tracking)
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT
مؤلفهای که مش دوبعدی برای نهاد فضایی ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentMesh2DListEXT است؛ ساختار داده متناظر XrSpatialMeshDataEXT است (افزودهشده توسط افزونه XR_EXT_spatial_plane_tracking)
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT
مؤلفهای که چندضلعی مرزی دوبعدی برای نهاد فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentPolygon2DListEXT است؛ ساختار داده مربوطه XrSpatialPolygon2DDataEXT است (افزودهشده توسط افزونه XR_EXT_spatial_plane_tracking)
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT
مؤلفهای که برچسب معنایی برای صفحه ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentPlaneSemanticLabelListEXT است؛ ساختار داده مربوطه XrSpatialPlaneSemanticLabelEXT است (افزودهشده توسط افزونه XR_EXT_spatial_plane_tracking)
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT
مؤلفهای که نوع، شناسه، و مکان نشانگر را شرح میدهد. ساختار فهرست مربوطه XrSpatialComponentMarkerListEXT است؛ ساختار داده مربوطه XrSpatialMarkerDataEXT است (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT
مؤلفهای که برچسب معنایی برای صحنه ارائه میدهد؛ ساختار فهرست متناظر XrSpatialComponentObjectSemanticLabelListEXT است. ساختار داده مربوطه XrSpatialObjectSemanticLabelEXT است. (افزودهشده توسط افزونه XR_EXT_spatial_object_tracking)
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT
مؤلفهای که برچسب معنایی برای صفحهکلید ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentKeyboardSemanticLabelListEXT است. ساختار داده متناظر XrSpatialKeyboardSemanticLabelEXT است (افزودهشده توسط افزونه XR_EXT_spatial_object_tracking)
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT
مؤلفهای که برچسب معنایی برای موشواره ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentMouseSemanticLabelListEXT است. ساختار داده مربوطه XrSpatialMouseSemanticLabelEXT است (افزودهشده توسط افزونه XR_EXT_spatial_object_tracking)
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT
مؤلفهای که مکان لنگر را ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentAnchorListEXT است؛ ساختار داده متناظر XrPosef است (افزودهشده توسط افزونه XR_EXT_spatial_anchor)
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT
مؤلفهای که شناسه UUID پایدار را برای نهاد فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentPersistenceListEXT است؛ ساختار داده مربوطه XrSpatialPersistenceDataEXT است (افزودهشده توسط افزونه XR_EXT_spatial_persistence)
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
مؤلفهای که نوع تصویر مسطح را توصیف میکند. ساختار فهرست متناظر XrSpatialComponentImage2DListEXT است؛ ساختار داده متناظر XrSpatialImageSizeEXT است. (افزودهشده توسط افزونه XR_EXT_spatial_image_tracking)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
مؤلفهای که نرمالها را برای مش سهبعدی یک موجودیت فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentMesh3DNormalsListEXT است؛ ساختار داده مربوطه XrSpatialBufferEXT است (افزودهشده توسط افزونه XR_EXT_spatial_mesh_tracking)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
مؤلفهای که برچسبهای معنایی هر رأس را برای توری سهبعدی نهاد فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentMesh3DVertexSemanticLabelsListEXT است؛ ساختار داده مربوطه XrSpatialBufferEXT است؛ دادههای درون میانگیر با XrSpatialMeshSemanticLabelEXT مطابقت دارد (افزودهشده توسط افزونه XR_EXT_spatial_mesh_tracking)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
مؤلفهای که برچسبهای معنایی هر وجه مثلثی را برای توری سهبعدی یک موجودیت فضایی ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT است؛ ساختار داده مربوطه XrSpatialBufferEXT است؛ دادههای درون میانگیر به XrSpatialMeshSemanticLabelEXT نگاشت میشود (افزودهشده توسط افزونه XR_EXT_spatial_mesh_tracking)
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID
مؤلفهای که برچسب معنایی برای شیء ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentObjectSemanticLabelListANDROID است؛ ساختار داده مربوطه XrSpatialObjectSemanticLabelANDROID است (افزودهشده توسط افزونه XR_ANDROID_spatial_object_tracking)
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID
مؤلفهای که حالت برخورد پرتو به یک نهاد را ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentRaycastResultListANDROID است؛ ساختار داده متناظر XrSpatialRaycastResultDataANDROID است (افزودهشده توسط افزونه XR_ANDROID_spatial_discovery_raycast)
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID
مؤلفهای که شناسه نهاد نهادی را که نهاد پیوستشده را دربرمیگیرد ارائه میدهد. ساختار فهرست مربوطه XrSpatialComponentSubsumedByListANDROID است؛ ساختار داده مربوطه XrSpatialEntityIdEXT است (افزودهشده توسط افزونه XR_ANDROID_spatial_component_subsumed_by)
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS
مؤلفهای که ابعاد و نوع اتاق جعبه کفش را ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentRoomListANDROIDSYS است؛ ساختار داده مربوطه XrSpatialRoomDataANDROIDSYS است (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS
مؤلفهای که نوع ماده سطح مرزی را ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentMaterialTypeListANDROIDSYS است؛ ساختار داده مربوطه XrSpatialMaterialTypeANDROIDSYS است (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS
مؤلفهای که اطمینان از قابلردیابی بودن را ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentConfidenceListANDROIDSYS است؛ ساختار داده مربوطه float است (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS
مؤلفهای که خالی بودن اتاق را ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentRoomEmptinessListANDROIDSYS است؛ ساختار داده مربوطه float است (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1
مؤلفهای که اطلاعاتی درباره شبکه اشغال در نهاد پیوستشده ارائه میدهد. ساختار فهرست متناظر XrSpatialComponentOccupancyGridListANDROIDX1 است؛ ساختار داده متناظر XrSpatialOccupancyGridDataANDROIDX1 است (افزودهشده توسط افزونه XR_ANDROIDX1_spatial_occupancy_grid)
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID
مؤلفهای که حاشیهنویسی چهارگوش را توصیف میکند. ساختار فهرست متناظر XrSpatialComponentAnnotationQuadListANDROID است؛ ساختار داده متناظر XrSpatialAnnotationQuadDataANDROID است (افزودهشده توسط افزونه XR_ANDROID_spatial_annotation_tracking)
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2
مؤلفهای که فراداده را برای هندسه نمای خیابان ارائه میدهد؛ ساختار فهرست مربوطه XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 است؛ ساختار داده مربوطه XrSpatialStreetscapeGeometryMetadataANDROIDX2 است (افزودهشده توسط افزونه XR_ANDROIDX2_geospatial_streetscape)
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID
مؤلفهای که نهاد را بهعنوان نقطه هندسی شناسایی میکند. هیچ فهرست یا ساختار دادهای برای این نوع مؤلفه وجود ندارد. وجود این مؤلفه صرفاً نشاندهنده توانایی یک نهاد برای متصل شدن به یک لنگر است. (افزودهشده توسط افزونه XR_ANDROID_spatial_geometry_point)
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1
مؤلفهای که دامنه(های) پایداری را که نهاد در آن پایدار است توصیف میکند. اگر زمان اجرا از XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT پشتیبانی کند، باید از این مؤلفه نیز پشتیبانی کند. ساختار داده متناظر XrSpatialBufferEXT است. ساختار فهرست مربوطه XrSpatialComponentPersistenceScopeDataListANDROIDX1 است. (افزودهشده توسط افزونه XR_ANDROIDX1_spatial_anchor_cloud_sharing)
قابلیتهای فضایی و راهاندازی
قابلیتهای فضایی تواناییهای زمان اجرا را برای کشف موجودیتهایی که دارای مجموعهای تضمینشده از مؤلفهها هستند تعریف میکند. برنامهها هنگام ایجاد XrSpatialContextEXT مؤلفههای یک قابلیت فضایی را فعال میکنند و زمان اجرا بهنوبه خود باید فقط مؤلفههای فعالشده را در نهادهای کشفشده ارائه دهد. برای مثال، اگر زمان اجرا گزارش دهد که یکی از مؤلفههای یک قابلیت خاص «برچسبهای معنایی» است، به این معنی است که برنامه میتواند برچسبهای معنایی را ازطریق پیکربندی آن قابلیت فعال کند و زمان اجرا باید فقط مؤلفه برچسب معنایی را درصورت پیکربندی ارائه دهد.
typedef enum XrSpatialCapabilityEXT {
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT = 1000741000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT = 1000743002,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT = 1000743003,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_ANCHOR_EXT = 1000762000,
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID = 1000785000,
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID = 1000786000,
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS = 1000792000,
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS = 1000792001,
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID = 1000794000,
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2 = 1000798000,
XR_SPATIAL_CAPABILITY_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityEXT;
شمارش XrSpatialCapabilityEXT انواع مختلف قابلیتهایی را که زمان اجرا ممکن است پشتیبانی کند شناسایی میکند.
مقادیر شمارشی دارای مقادیر زیر هستند:
شرح شمارشی
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT
ردیابی هواپیما (افزودهشده توسط افزونه XR_EXT_spatial_plane_tracking)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT
قابلیت شناسایی و ردیابی رمزینههای پاسخسریع. (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT
قابلیت شناسایی و ردیابی رمزینههای پاسخسریع میکرو. (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT
قابلیت شناسایی و ردیابی نشانگرهای Aruco. (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT
قابلیت شناسایی و ردیابی AprilTags. (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT
ردیابی شیء (افزودهشده توسط افزونه XR_EXT_spatial_object_tracking)
XR_SPATIAL_CAPABILITY_ANCHOR_EXT
قابلیت ایجاد لنگرهای فضایی (افزودهشده توسط افزونه XR_EXT_spatial_anchor)
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT
قابلیت تشخیص و ردیابی تصاویر مرجع مسطح. (افزودهشده توسط افزونه XR_EXT_spatial_image_tracking)
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
قابلیت ردگیری مش محیط. (افزودهشده توسط افزونه XR_EXT_spatial_mesh_tracking)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID
ردیابی شیء (افزودهشده توسط افزونه XR_ANDROID_spatial_object_tracking)
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID
Raycast دربرابر میانگیر عمق (افزودهشده توسط افزونه XR_ANDROID_spatial_discovery_raycast)
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS
قابلیت ردیابی اتاق (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS
قابلیت ردیابی مرز اتاق (افزودهشده توسط افزونه XR_ANDROIDSYS_spatial_room_tracking)
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID
ردیابی حاشیهنویسی (افزودهشده توسط افزونه XR_ANDROID_spatial_annotation_tracking)
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2
هندسه نمای خیابان (افزودهشده توسط افزونه XR_ANDROIDX2_geospatial_streetscape)
تابع xrEnumerateSpatialCapabilitiesEXT بهصورت زیر تعریف میشود:
XrResult xrEnumerateSpatialCapabilitiesEXT(
XrInstance instance,
XrSystemId systemId,
uint32_t capabilityCapacityInput,
uint32_t* capabilityCountOutput,
XrSpatialCapabilityEXT* capabilities);
شرح پارامترها
-
instanceدستهای برای XrInstance است. systemIdXrSystemIdاست که قابلیتهای فضایی آن شمارش خواهد شد.capabilityCapacityInputظرفیت آرایهcapabilitiesاست، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.capabilityCountOutputتعداد قابلیتها یا ظرفیت موردنیاز درصورت ناکافی بودنcapabilityCapacityInputاست.-
capabilitiesآرایهای از XrSpatialCapabilityEXT است. اگرcapabilityCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
capabilitiesموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند فهرست قابلیتهای فضایی پشتیبانیشده توسط XrSystemId مشخصی را بااستفاده از xrEnumerateSpatialCapabilitiesEXT شمارش کند.
زمان اجرا نباید قابلیتهای فضایی را که افزونه آنها برای instance فعال نشده است فهرست کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrEnumerateSpatialCapabilitiesEXT فعال شود -
instanceباید شناسه XrInstance معتبری باشد -
capabilityCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
capabilityCapacityInputبرابر با0نباشد،capabilitiesباید اشارهگری به آرایهای از مقادیرcapabilityCapacityInputXrSpatialCapabilityEXT باشد
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
تابع xrEnumerateSpatialCapabilityComponentTypesEXT بهصورت زیر تعریف میشود:
XrResult xrEnumerateSpatialCapabilityComponentTypesEXT(
XrInstance instance,
XrSystemId systemId,
XrSpatialCapabilityEXT capability,
XrSpatialCapabilityComponentTypesEXT* capabilityComponents);
شرح پارامترها
-
instanceدستهای برای XrInstance است. systemIdXrSystemIdاست که مؤلفههای قابلیت فضایی آن شمارش خواهد شد.-
capabilityعبارت است از XrSpatialCapabilityEXT که اجزا برای آن شمارش خواهند شد. capabilityComponentsاشارهگری به XrSpatialCapabilityComponentTypesEXT است که ساختار ورودی/خروجیای است که در آن آرایه اختصاصدادهشده به برنامه پر میشود.
این تابع انواع مؤلفههایی را که قابلیت ارائهشده در موجودیتهایش در سیستم پیکربندیشده ارائه میدهد برمیشمارد.
برنامه میتواند از انواع مؤلفه فهرستشده در XrSpatialCapabilityComponentTypesEXT :: componentTypes استفاده کند تا مجموعه کامل مؤلفههایی را که systemId برای capability پشتیبانی میکند درک کند و میتواند از این فهرست برای تعیین پیکربندی معتبر برای capability هنگام ایجاد XrSpatialContextEXT برای آن استفاده کند.
اگر capability توسط xrEnumerateSpatialCapabilitiesEXT شمارش نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT را برگرداند.
زمان اجرا نباید انواع مؤلفه فضایی را که افزونه آنها برای instance فعال نشده است شمارش کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrEnumerateSpatialCapabilityComponentTypesEXT فعال شود -
instanceباید شناسه XrInstance معتبری باشد -
capabilityباید مقدار XrSpatialCapabilityEXT معتبری باشد -
capabilityComponentsباید اشارهگری به ساختار XrSpatialCapabilityComponentTypesEXT باشد
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
ساختار XrSpatialCapabilityComponentTypesEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialCapabilityComponentTypesEXT {
XrStructureType type;
void* next;
uint32_t componentTypeCapacityInput;
uint32_t componentTypeCountOutput;
XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialCapabilityComponentTypesEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. componentTypeCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.componentTypeCountOutputتعداد انواع مؤلفه است، یا ظرفیت موردنیاز درصورتیکهcomponentTypeCapacityInputکافی نباشد.-
componentTypesآرایهای از XrSpatialComponentTypeEXT است. اگرcomponentTypeCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
componentTypesموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز استفاده از XrSpatialCapabilityComponentTypesEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد - اگر
componentTypeCapacityInputبرابر با0نباشد،componentTypesباید اشارهگری به آرایهای از مقادیرcomponentTypeCapacityInputXrSpatialComponentTypeEXT باشد
ویژگیهای قابلیت فضایی
typedef enum XrSpatialCapabilityFeatureEXT {
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID = 1000761000,
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID = 1000761001,
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID = 1000761002,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT = 1000782001,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT = 1000782002,
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_FEATURE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityFeatureEXT;
برخیاز قابلیتها پارامترهایی دارند که برای پیکربندی نحوه محاسبه دادههای مؤلفه توسط زمان اجرا، درمعرض برنامه قرار میگیرند. این ابعاد پارامترسازی/پیکربندی بهعنوان ویژگیهای قابلیت شناخته میشوند. برای مثال، برای قابلیت ردیابی تصویر، زمان اجرا ممکن است از ویژگیای برای برنامه پشتیبانی کند تا مشخص کند تصاویر ردیابیشده ثابت هستند یا نه.
ارائه این اطلاعات به زمان اجرا ازطریق ساختار پیکربندی نباید مجموعه انواع مؤلفه موجود در نهادهای مرتبط را تغییر دهد، مثلاً در تصویر ردیابیشده. بااینحال، زمان اجرا ممکن است بتواند مثلاً تواناییهای ردیابی قابلیت ردیابی تصویر را بهینهسازی کند و تجربه بهتری برای برنامه ارائه دهد.
این ویژگیها با XrSpatialCapabilityFeatureEXT نشان داده میشوند و برنامه آنها را بااستفاده از xrEnumerateSpatialCapabilityFeaturesEXT برمیشمارد.
هر ویژگی قابلیت دارای ساختار پیکربندی متناظری برای فعال کردن آن است. چنین ساختارهای پیکربندیای باید به XrSpatialCapabilityConfigurationBaseHeaderEXT :: next قابلیت مربوطه زنجیر شوند.
مقادیر شمارشی دارای مقادیر زیر هستند:
شرح شمارشی
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT
ویژگی قابلیت برای اینکه برنامهها بتوانند اندازه نشانگرها را مشخص کنند. ساختار پیکربندی مربوطه XrSpatialMarkerSizeEXT است (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT
ویژگی قابلیت برای اینکه به برنامهها اجازه دهد مشخص کنند آیا نشانگرها ایستا هستند یا نه. ساختار پیکربندی مربوطه XrSpatialMarkerStaticOptimizationEXT است (افزودهشده توسط افزونه XR_EXT_spatial_marker_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT
ویژگی فضایی که به برنامهها اجازه میدهد زیرمجموعهای از برچسبها را از XrSpatialObjectSemanticLabelEXT برای ردیابی زمان اجرا مشخص کنند. ساختار پیکربندی مربوطه XrSpatialFeatureObjectSemanticLabelSubsetEXT است. (افزودهشده توسط افزونه XR_EXT_spatial_object_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID
زمان اجرا از فیلتر XrSpatialBoundsSpherefANDROID برای XrSpatialDiscoverySnapshotCreateInfoEXT پشتیبانی میکند؛ این امر نیازی به گنجاندن ساختار پیکربندی درطول ایجاد بافت فضایی ندارد. (افزودهشده توسط افزونه XR_ANDROID_spatial_discovery_bounds)
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID
زمان اجرا از فیلتر XrSpatialBoundsBoxfANDROID برای XrSpatialDiscoverySnapshotCreateInfoEXT پشتیبانی میکند؛ این امر نیازی به گنجاندن ساختار پیکربندی درطول ایجاد بافت فضایی ندارد. (افزودهشده توسط افزونه XR_ANDROID_spatial_discovery_bounds)
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID
زمان اجرا از فیلتر XrSpatialBoundsFrustumfANDROID برای XrSpatialDiscoverySnapshotCreateInfoEXT پشتیبانی میکند؛ این امر نیازی به گنجاندن ساختار پیکربندی درطول ایجاد بافت فضایی ندارد. (افزودهشده توسط افزونه XR_ANDROID_spatial_discovery_bounds)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT
زمان اجرا از استنتاج خودکار اندازه فیزیکی تصاویر شناساییشده و ردیابیشده پشتیبانی میکند. ساختار پیکربندی مربوطه XrSpatialImageSizeEXT است (افزودهشده توسط افزونه XR_EXT_spatial_image_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT
زمان اجرا از XrSpatialImageStaticOptimizationEXT پشتیبانی میکند. ساختار پیکربندی مربوطه XrSpatialImageStaticOptimizationEXT است. (افزودهشده توسط افزونه XR_EXT_spatial_image_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT
زمان اجرا از XrSpatialImageSizeEXT پشتیبانی میکند. ساختار پیکربندی مربوطه XrSpatialImageSizeEXT است (افزودهشده توسط افزونه XR_EXT_spatial_image_tracking)
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
ویژگی قابلیت برای ردیابی مش ضدآب محیط. ساختار پیکربندی مربوطه XrSpatialFeatureTrackWatertightMeshEXT است. (افزودهشده توسط افزونه XR_EXT_spatial_mesh_tracking)
تابع xrEnumerateSpatialCapabilityFeaturesEXT بهصورت زیر تعریف میشود:
XrResult xrEnumerateSpatialCapabilityFeaturesEXT(
XrInstance instance,
XrSystemId systemId,
XrSpatialCapabilityEXT capability,
uint32_t capabilityFeatureCapacityInput,
uint32_t* capabilityFeatureCountOutput,
XrSpatialCapabilityFeatureEXT* capabilityFeatures);
شرح پارامترها
-
instanceدستهای برای XrInstance است. systemIdXrSystemIdاست که ویژگیهای قابلیت فضایی آن شمارش خواهد شد.-
capabilityهمان XrSpatialCapabilityEXT است که ویژگیها برای آن فهرست خواهد شد. capabilityFeatureCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.capabilityFeatureCountOutputتعداد ویژگیها یا ظرفیت موردنیاز درصورتی است کهcapabilityFeatureCapacityInputکافی نباشد.-
capabilityFeaturesآرایهای از XrSpatialCapabilityFeatureEXT است. اگرcapabilityFeatureCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
capabilityFeaturesموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه بااستفاده از xrEnumerateSpatialCapabilityFeaturesEXT ویژگیهای پشتیبانیشده توسط سیستم دادهشده برای XrSpatialCapabilityEXT را کشف میکند.
برای قابلیتهایی که ویژگیهای نمایان دارند، برنامه ویژگی یا ویژگیهای موردنظر را برای فعال کردن انتخاب میکند و ساختار پیکربندی مربوطه را در زنجیره بعدی ساختارهای پیکربندی قابلیت در XrSpatialContextCreateInfoEXT :: capabilityConfigs ارائه میدهد.
اگر capability قابلیتی نباشد که توسط xrEnumerateSpatialCapabilitiesEXT شمارش شده است، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT را برگرداند.
زمان اجرا نباید ویژگیهای قابلیت فضایی را که افزونه آنها برای instance فعال نشده است فهرست کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrEnumerateSpatialCapabilityFeaturesEXT فعال شود -
instanceباید شناسه XrInstance معتبری باشد -
capabilityباید مقدار XrSpatialCapabilityEXT معتبری باشد -
capabilityFeatureCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
capabilityFeatureCapacityInputبرابر با0نباشد،capabilityFeaturesباید اشارهگری به آرایهای از مقادیرcapabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT باشد
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
بافت فضایی
ایجاد بافت فضایی
XR_DEFINE_HANDLE(XrSpatialContextEXT)
دستگیره XrSpatialContextEXT نشاندهنده منابعی برای کشف و بهروزرسانی تعدادی از موجودیتهای فضایی در محیط کاربر است. برنامه میتواند از این دسته برای کشف و بهروزرسانی موجودیتهای فضایی بااستفاده از دیگر توابع در این افزونه استفاده کند.
تابع xrCreateSpatialContextAsyncEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialContextAsyncEXT(
XrSession session,
const XrSpatialContextCreateInfoEXT* createInfo,
XrFutureEXT* future);
شرح پارامترها
-
sessionیک XrSession است که در آن بافت فضایی فعال خواهد بود. -
createInfoهمان XrSpatialContextCreateInfoEXT است که برای مشخص کردن پارامترهای بافت فضایی استفاده میشود. -
futureاشارهگری بهXrFutureEXTاست.
برنامه میتواند دسته XrSpatialContextEXT را با انجام کارهای زیر ایجاد کند:
- ارائه ساختارهای مشتقشده XrSpatialCapabilityConfigurationBaseHeaderEXT در XrSpatialContextCreateInfoEXT ::
capabilityConfigsبرای فعال کردن قابلیتها و فعال کردن مؤلفهها برای آن قابلیت. - پیکربندی خود قابلیتها با ساختارهای پیکربندی مربوطه XrSpatialCapabilityFeatureEXT .
اگر XrSpatialContextCreateInfoEXT ::capabilityConfigCount برابر با ۰ باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را برگرداند. دستگیره بافت فضایی به حداقل یک توانایی نیاز دارد.
اگر هر قابلیتی در آرایه XrSpatialContextCreateInfoEXT :: capabilityConfigs توسط xrEnumerateSpatialCapabilitiesEXT شمارش نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT را برگرداند.
اگر هرکدام از XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount در XrSpatialContextCreateInfoEXT :: capabilityConfigs برابر با ۰ باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را برگرداند. پیکربندی قابلیت بدون فهرست انواع مؤلفه برای فعال کردن آن قابلیت ناقص است.
اگر هر نوع مؤلفه فهرستشده در XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents برای XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability در xrEnumerateSpatialCapabilityComponentTypesEXT شمارش نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT را برگرداند.
اگر هریک از ساختارها در زنجیره بعدی XrSpatialContextCreateInfoEXT :: capabilityConfigs با XrSpatialCapabilityFeatureEXT مطابقت داشته باشد که برای آن قابلیت در xrEnumerateSpatialCapabilityFeaturesEXT شمارش نشده است، زمان اجرا باید آن ساختار XrSpatialCapabilityFeatureEXT را نادیده بگیرد.
اگر XrSpatialContextCreateInfoEXT :: capabilityConfigs حاوی چندین ساختار با XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability یکسان باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT را برگرداند.
برای اطمینان از استفاده بهینه از منابع سیستم، زمان اجرا ممکن است از پیکربندیهای ارائهشده در آرایه XrSpatialContextCreateInfoEXT استفاده کند تا خود را برای درخواستهای فضایی آینده آماده کند. برای مثال، یک زمان اجرا که از قابلیت ردیابی صفحه پشتیبانی میکند، ممکن است تنها زمانی خط لوله ردیابی صفحه خود را آغاز کند که یک دسته بافتار فضایی حاوی قابلیت ردیابی صفحه توسط برنامه ایجاد شده باشد. اگر قابلیتهای پیکربندیشده زمان آمادهسازی طولانی داشته باشند، تماس با xrCreateSpatialDiscoverySnapshotAsyncEXT ممکن است منجر به عکس آنی خالی شود. برنامه میتواند قبلاز استفاده از xrCreateSpatialDiscoverySnapshotAsyncEXT منتظر XrEventDataSpatialDiscoveryRecommendedEXT بماند تا مطمئن شود که سرویسهای ردگیری زیربنایی آماده شدهاند.
اگر زمان اجرا سیستم اجازهای را برای کنترل دسترسی برنامه به قابلیتهای فضایی پیکربندیشده برای XrSpatialContextEXT اعمال کند، درصورتیکه این اجازهها به این برنامه اعطا نشده باشد، زمان اجرا باید XR_ERROR_PERMISSION_INSUFFICIENT را برگرداند.
این تابع یک عملیات ناهمگام را شروع میکند و یک XrFutureEXT متناظر ایجاد میکند که با xrPollFutureEXT و توابع مرتبط قابلاستفاده است. مقدار برگشتی این تابع فقط نشان میدهد که آیا پارامترها برای زمانبندی عملیات ناهمگام قابلقبول بودهاند یا نه. تابع تکمیل مربوطه xrCreateSpatialContextCompleteEXT است که وقتی آیندهای از این تابع در حالت READY باشد قابلاستفاده است و خروجیها توسط آن تابع در ساختار تکمیل XrCreateSpatialContextCompletionEXT پر میشوند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrCreateSpatialContextAsyncEXT فعال شود -
sessionباید یک دسته XrSession معتبر باشد -
createInfoباید اشارهگری به ساختار معتبر XrSpatialContextCreateInfoEXT باشد -
futureباید اشارهگری به مقدارXrFutureEXTباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_VALIDATION_FAILURE-
XR_ERROR_TIME_INVALID(اگرXR_ANDROID_spatial_annotation_trackingفعال باشد)
ساختار XrSpatialContextCreateInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialContextCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t capabilityConfigCount;
const XrSpatialCapabilityConfigurationBaseHeaderEXT* const* capabilityConfigs;
} XrSpatialContextCreateInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. capabilityConfigCountیکuint32_tاست که تعداد عناصر را در آرایهcapabilityConfigsتوصیف میکند.-
capabilityConfigsاشارهگری به آرایهای از اشارهگرهای XrSpatialCapabilityConfigurationBaseHeaderEXT است.
ساختار XrSpatialContextCreateInfoEXT اطلاعات لازم برای ایجاد دسته XrSpatialContextEXT را شرح میدهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialContextCreateInfoEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد. همچنین ببینید: XrSpatialContextPersistenceConfigEXT -
capabilityConfigsباید اشارهگری به آرایهای از ساختارهای معتبرcapabilityConfigCountمبتنی بر XrSpatialCapabilityConfigurationBaseHeaderEXT باشد. این موارد را نیز ببینید: XrSpatialCapabilityConfigurationAnchorEXT، XrSpatialCapabilityConfigurationAnnotationTrackingANDROID، XrSpatialCapabilityConfigurationAprilTagEXT، XrSpatialCapabilityConfigurationArucoMarkerEXT، XrSpatialCapabilityConfigurationDepthRaycastANDROID، XrSpatialCapabilityConfigurationImageTrackingEXT، XrSpatialCapabilityConfigurationMeshTrackingEXT، XrSpatialCapabilityConfigurationMicroQrCodeEXT، XrSpatialCapabilityConfigurationObjectTrackingANDROID، XrSpatialCapabilityConfigurationObjectTrackingEXT، XrSpatialCapabilityConfigurationPlaneTrackingEXT، XrSpatialCapabilityConfigurationQrCodeEXT، XrSpatialCapabilityConfigurationRoomBoundaryTrackingANDROIDSYS، XrSpatialCapabilityConfigurationRoomTrackingANDROIDSYS، XrSpatialCapabilityConfigurationStreetscapeGeometryANDROIDX2 - پارامتر
capabilityConfigCountباید بزرگتر از0باشد
ساختار XrSpatialCapabilityConfigurationBaseHeaderEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialCapabilityConfigurationBaseHeaderEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationBaseHeaderEXT;
این ساختار مستقیماً در میانای برنامهسازی کاربردی استفاده نمیشود، اما ساختارهای فرزند آن میتوانند با XrSpatialContextCreateInfoEXT برای پیکربندی قابلیتهای فضایی استفاده شوند.
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. capabilityیک XrSpatialCapabilityEXT است .enabledComponentCountیکuint32_tاست که تعداد عناصر را در آرایهenabledComponentsتوصیف میکند.-
enabledComponentsاشارهگری به آرایهای از XrSpatialComponentTypeEXT است.
اگر capability توسط xrEnumerateSpatialCapabilitiesEXT شمارش نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT را برگرداند. اگر هر نوع مؤلفه فهرستشده در enabledComponents برای capability در xrEnumerateSpatialCapabilityComponentTypesEXT شمارش نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز استفاده از XrSpatialCapabilityConfigurationBaseHeaderEXT فعال شود -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
capabilityباید مقدار XrSpatialCapabilityEXT معتبری باشد -
enabledComponentsباید اشارهگری به آرایهای از مقادیر معتبرenabledComponentCountXrSpatialComponentTypeEXT باشد - پارامتر
enabledComponentCountباید بزرگتر از0باشد
تابع xrCreateSpatialContextCompleteEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialContextCompleteEXT(
XrSession session,
XrFutureEXT future,
XrCreateSpatialContextCompletionEXT* completion);
شرح پارامترها
sessionهمان XrSession است که قبلاً به xrCreateSpatialContextAsyncEXT ::sessionارسال شده است.futureهمانXrFutureEXTاست که از xrCreateSpatialContextAsyncEXT دریافت شده است.-
completionاشارهگری به XrCreateSpatialContextCompletionEXT است.
xrCreateSpatialContextCompleteEXT عملیات ناهمگام شروعشده توسط xrCreateSpatialContextAsyncEXT را تکمیل میکند. اگر future در وضعیت آماده نباشد، زمان اجرا باید XR_ERROR_FUTURE_PENDING_EXT را برگرداند. اگر future قبلاً تکمیل یا لغو شده باشد، زمان اجرا باید XR_ERROR_FUTURE_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrCreateSpatialContextCompleteEXT فعال شود -
sessionباید یک دسته XrSession معتبر باشد -
completionباید اشارهگری به ساختار XrCreateSpatialContextCompletionEXT باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
ساختار XrCreateSpatialContextCompletionEXT بهصورت زیر تعریف میشود:
typedef struct XrCreateSpatialContextCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialContextEXT spatialContext;
} XrCreateSpatialContextCompletionEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
futureResultXrResult عملیات ایجاد بافت فضایی است. spatialContextیک XrSpatialContextEXT است که بااستفاده از دادهها و پیکربندی در xrCreateSpatialContextAsyncEXT ::createInfoایجاد شده است.
کدهای برگشتی آتی
مقادیر futureResult:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
اگر futureResult کد موفقیت باشد، spatialContext باید معتبر باشد. اگر spatialContext معتبر باشد، فقط در چرخه حیات xrCreateSpatialContextAsyncEXT :: session یا تا زمانی که برنامه spatialContext را با xrDestroySpatialContextEXT ازبین ببرد (هرکدام که زودتر اتفاق بیفتد) معتبر باقی میماند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrCreateSpatialContextCompletionEXT فعال شود -
typeبایدXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
futureResultباید مقدار XrResult معتبری باشد - اگر
spatialContextXR_NULL_HANDLE نباشد،spatialContextباید دسته XrSpatialContextEXT معتبری باشد
ازبین بردن بافت فضایی
تابع xrDestroySpatialContextEXT بهصورت زیر تعریف میشود:
XrResult xrDestroySpatialContextEXT(
XrSpatialContextEXT spatialContext);
شرح پارامترها
-
spatialContextیک XrSpatialContextEXT است که قبلاً توسط xrCreateSpatialContextAsyncEXT ایجاد شده است.
برنامه میتواند تابع xrDestroySpatialContextEXT را فراخوانی کند تا پساز اتمام تکالیف بهروزرسانی و کاوش نهاد فضایی، دسته spatialContext و منابع زیربنایی را آزاد کند. اگر XrSpatialContextEXT معتبر دیگری وجود نداشته باشد که با همان قابلیتهای فضایی spatialContext ایجاد شده باشد، این فراخوانی بهعنوان پیشنهادی به زمان اجرا برای غیرفعال کردن سرویسهای ردیابی موردنیاز برای آن قابلیتها بهمنظور صرفهجویی در منابع سیستم عمل میکند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrDestroySpatialContextEXT فعال شود -
spatialContextباید یک دسته XrSpatialContextEXT معتبر باشد
ایمنی رشتهای
- دسترسی به
spatialContextو هرگونه دسته فرزند باید بهصورت خارجی همگامسازی شود
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
نمایشهای نهاد فضایی
شناسه نهاد فضایی
XR_DEFINE_ATOM(XrSpatialEntityIdEXT)
از XrSpatialEntityIdEXT برای نمایش هر نوع موجودیتی که توسط زمان اجرا در محیط فضایی کاربر کشف شده است استفاده میشود. XrSpatialEntityIdEXT برای XrSpatialContextEXT که در آن کشف شده است معتبر است و زمان اجرا نباید از همان XrSpatialEntityIdEXT برای نهادهای مختلف در همان XrSpatialContextEXT استفاده مجدد کند. همچنین، زمان اجرا نباید از همان XrSpatialEntityIdEXT در چندین XrSpatialContextEXT در همان XrSession استفاده مجدد کند، صرفنظر از اینکه همان نهاد را نشان میدهد یا نهادهای مختلف را.
#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0
XR_NULL_SPATIAL_ENTITY_ID_EXT مقداری رزروشده است که نشاندهنده XrSpatialEntityIdEXT نامعتبر است. ممکن است فقط زمانی به توابع API ارسال و از آنها برگردانده شود که بهطور خاص مجاز باشد.
دستگیره نهاد فضایی
XR_DEFINE_HANDLE(XrSpatialEntityEXT)
دستگیره XrSpatialEntityEXT نشاندهنده یک موجودیت فضایی است. برنامه میتواند چنین دستهای را برای بیان علاقه خود به یک نهاد خاص در زمان اجرا ایجاد کند.
ایجاد دسته موجودیت فضایی از شناسه
تابع xrCreateSpatialEntityFromIdEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialEntityFromIdEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialEntityFromIdCreateInfoEXT* createInfo,
XrSpatialEntityEXT* spatialEntity);
شرح پارامترها
-
spatialContextیک XrSpatialContextEXT است که قبلاً بااستفاده از xrCreateSpatialContextAsyncEXT ایجاد شده است. -
createInfoاشارهگری به ساختار XrSpatialEntityFromIdCreateInfoEXT است. -
spatialEntityشناسه XrSpatialEntityEXT برگرداندهشده است.
برنامه میتواند از xrCreateSpatialEntityFromIdEXT برای ایجاد دسته XrSpatialEntityEXT استفاده کند که مرجعی به موجودیتی است که در محیط کاربر وجود دارد.
اگر XrSpatialEntityFromIdCreateInfoEXT :: entityId شناسه معتبری برای spatialContext نباشد، زمان اجرا باید XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrCreateSpatialEntityFromIdEXT فعال شود -
spatialContextباید یک دسته XrSpatialContextEXT معتبر باشد -
createInfoباید اشارهگری به ساختار معتبر XrSpatialEntityFromIdCreateInfoEXT باشد -
spatialEntityباید اشارهگری به دسته XrSpatialEntityEXT باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
ساختار XrSpatialEntityFromIdCreateInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialEntityFromIdCreateInfoEXT {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT entityId;
} XrSpatialEntityFromIdCreateInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. entityIdعبارت است ازXrSpatialEntityIdEXTنهادی که برنامه میخواهد برای آن نام کاربری ایجاد کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialEntityFromIdCreateInfoEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
Destroy Spatial Entity Handle
تابع xrDestroySpatialEntityEXT بهصورت زیر تعریف میشود:
XrResult xrDestroySpatialEntityEXT(
XrSpatialEntityEXT spatialEntity);
شرح پارامترها
-
spatialEntityیک دسته برای XrSpatialEntityEXT است که قبلاً توسط تابعی مانند xrCreateSpatialEntityFromIdEXT ایجاد شده است.
برنامه میتواند از xrDestroySpatialEntityEXT برای رها کردن دسته spatialEntity استفاده کند، زمانی که دیگر به موجودیت ارجاعشده توسط این دسته علاقهای ندارد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrDestroySpatialEntityEXT فعال شود -
spatialEntityباید شناسه مجازی XrSpatialEntityEXT معتبر باشد
ایمنی رشتهای
- دسترسی به
spatialEntityو هرگونه دسته فرزند باید بهصورت خارجی همگامسازی شود
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
عکس آنی فضایی
XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)
برنامه میتواند عکسهای آنی فضایی را با هدف کشف نهادهای فضایی یا بهروزرسانی اطلاعات خود درباره نهادهای فضایی شناختهشده ایجاد کند. دستگیره XrSpatialSnapshotEXT نشاندهنده دادههای تغییرناپذیر برای نهادهای فضایی کشفشده یا بهروزشده و زیرمجموعهای از مؤلفههای آنها است که توسط برنامه انتخاب شدهاند. عکس آنی فضایی نمای منسجمی از نهادها و دادههای مؤلفه آنها را نشان میدهد. وقتی عکس آنی ایجاد شد، دادههای عکس آنی باید تا زمانی که عکس آنی معتبر است ثابت بماند.
برنامه میتواند هر تعداد عکس آنی که میخواهد ایجاد کند اما باید به حافظهای که برای هر عکس آنی جدید اختصاص داده میشود توجه داشته باشد و وقتی دیگر به عکسهای آنی نیاز ندارد باید آنها را ازبین ببرد.
ایجاد عکس آنی کاوش
تابع xrCreateSpatialDiscoverySnapshotAsyncEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
XrFutureEXT* future);
شرح پارامترها
spatialContextیک XrSpatialContextEXT است که قبلاً بااستفاده از xrCreateSpatialContextAsyncEXT ایجاد شده است.-
createInfoاشارهگری به XrSpatialDiscoverySnapshotCreateInfoEXT است. -
futureاشارهگری بهXrFutureEXTاست.
برنامه میتواند با ایجاد عکس آنی کاوش بااستفاده از xrCreateSpatialDiscoverySnapshotAsyncEXT، موجودیتهای فضایی را کاوش کند.
این تابع یک عملیات ناهمگام را شروع میکند و یک XrFutureEXT متناظر ایجاد میکند که با xrPollFutureEXT و توابع مرتبط قابلاستفاده است. مقدار برگشتی این تابع فقط نشان میدهد که آیا پارامترها برای زمانبندی عملیات ناهمگام قابلقبول بودهاند یا نه. تابع تکمیل مربوطه xrCreateSpatialDiscoverySnapshotCompleteEXT است که وقتی آیندهای از این تابع در وضعیت READY باشد قابلاستفاده است و خروجیها توسط آن تابع در ساختار تکمیل XrCreateSpatialDiscoverySnapshotCompletionEXT پر میشوند.
برنامه میتواند چندین درخواست ایجاد عکس آنی اکتشاف را بدون نیاز به منتظر ماندن برای تکمیل درخواست قبلی ارسال کند. زمان اجرا ممکن است ایجاد عکس آنی را به هر ترتیبی پردازش و تکمیل کند. اگر زمان اجرا نیاز به کاهش استفاده از منابع سیستم بهدلیل خطمشیهای مصرف برق، حرارت، یا سایر خطمشیهای دستگاه داشته باشد، ممکن است تکمیل ایجاد عکس آنی اکتشاف را بهتأخیر بیندازد تا برنامه را محدود کند.
برنامه میتواند از XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes برای فیلتر کردن فهرست نهادها و مؤلفههایی که زمان اجرا باید دادههای آنها را در عکس آنی بگنجاند استفاده کند. اگر برنامه فهرست معتبری از انواع مؤلفههای فضایی را در XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes ارائه دهد، زمان اجرا باید فقط موجودیتهای فضایی را در عکس آنی لحاظ کند که حداقل یکی از مؤلفههای ارائهشده در XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes را داشته باشند. همچنین، زمان اجرا باید فقط شامل دادههای مربوط به مؤلفههای موجود در عکس آنی باشد.
اگر هرکدام از XrSpatialComponentTypeEXT در XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes برای قابلیتهای فضایی ارسالشده به XrSpatialContextCreateInfoEXT :: capabilityConfigs هنگام ایجاد spatialContext فعال نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT را برگرداند.
اگر برنامه فهرست انواع مؤلفههای فضایی را در XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes ارائه نکند، زمان اجرا باید همه موجودیتهای فضایی را در عکس آنی که دارای مجموعه مؤلفههایی هستند که در XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents برای قابلیتهای پیکربندیشده برای spatialContext فهرست شدهاند، لحاظ کند. زمان اجرا باید شامل دادههای مربوط به همه مؤلفههای فعالشده قابلیتهای پیکربندیشده برای spatialContext باشد.
اگر XrEventDataReferenceSpaceChangePending قبلاز تکمیل future در صف قرار گیرد و XrEventDataReferenceSpaceChangePending :: poseValid نادرست باشد، زمان اجرا ممکن است یا XrSpatialSnapshotEXT ایجاد کند که هیچ موجودیتی در آن وجود ندارد یا XrSpatialEntityTrackingStateEXT موجودیتهایی را که دیگر در XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace در XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time قابلمکانیابی نیستند روی XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT یا XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT تنظیم کند. زمان اجرا نباید XrCreateSpatialContextCompletionEXT :: futureResult را بهدلیل XrEventDataReferenceSpaceChangePending روی کد خطا تنظیم کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrCreateSpatialDiscoverySnapshotAsyncEXT فعال شود -
spatialContextباید یک دسته XrSpatialContextEXT معتبر باشد -
createInfoباید اشارهگری به ساختار معتبر XrSpatialDiscoverySnapshotCreateInfoEXT باشد -
futureباید اشارهگری به مقدارXrFutureEXTباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_VALIDATION_FAILURE
ساختار XrSpatialDiscoverySnapshotCreateInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialDiscoverySnapshotCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialDiscoverySnapshotCreateInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. componentTypeCountیکuint32_tاست که تعداد عناصر را در آرایهcomponentTypesتوصیف میکند.-
componentTypesآرایهای از XrSpatialComponentTypeEXT است.
ساختار XrSpatialDiscoverySnapshotCreateInfoEXT اطلاعات لازم برای ایجاد دسته XrSpatialSnapshotEXT را هنگام کشف نهادهای فضایی شرح میدهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialDiscoverySnapshotCreateInfoEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد. همچنین ببینید: XrSpatialBoundsBoxfANDROID، XrSpatialBoundsFrustumfANDROID، XrSpatialBoundsSpherefANDROID، XrSpatialDiscoveryPersistenceContextFilterANDROIDX1، XrSpatialDiscoveryPersistenceUuidFilterEXT، XrSpatialDiscoveryRoomBoundaryFilterANDROIDSYS، XrSpatialDiscoveryUniqueEntitiesFilterANDROID، XrSpatialFilterTrackingStateEXT، XrSpatialRaycastInfoANDROID - اگر
componentTypeCountبرابر با0نباشد،componentTypesباید اشارهگری به آرایهای از مقادیر معتبرcomponentTypeCountXrSpatialComponentTypeEXT باشد
تابع xrCreateSpatialDiscoverySnapshotCompleteEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
XrSpatialContextEXT spatialContext,
const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);
شرح پارامترها
spatialContextهمان XrSpatialContextEXT است که قبلاً به xrCreateSpatialDiscoverySnapshotAsyncEXT ::spatialContextارسال شده است.-
createSnapshotCompletionInfoاشارهگری به XrCreateSpatialDiscoverySnapshotCompletionInfoEXT است که اطلاعاتی درباره تکمیل درخواست ایجاد عکس آنی کاوش ارائه میدهد. -
completionاشارهگری به XrCreateSpatialDiscoverySnapshotCompletionEXT است.
xrCreateSpatialDiscoverySnapshotCompleteEXT عملیات ناهمگام شروعشده توسط xrCreateSpatialDiscoverySnapshotAsyncEXT را تکمیل میکند. اگر XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future در وضعیت آماده نباشد، زمان اجرا باید XR_ERROR_FUTURE_PENDING_EXT را برگرداند. اگر XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future قبلاً تکمیل یا لغو شده باشد، زمان اجرا باید XR_ERROR_FUTURE_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز فراخوانی xrCreateSpatialDiscoverySnapshotCompleteEXT فعال شود -
spatialContextباید یک دسته XrSpatialContextEXT معتبر باشد -
createSnapshotCompletionInfoباید اشارهگری به ساختار معتبر XrCreateSpatialDiscoverySnapshotCompletionInfoEXT باشد -
completionباید اشارهگری به ساختار XrCreateSpatialDiscoverySnapshotCompletionEXT باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
ساختار XrCreateSpatialDiscoverySnapshotCompletionInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrCreateSpatialDiscoverySnapshotCompletionInfoEXT {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrFutureEXT future;
} XrCreateSpatialDiscoverySnapshotCompletionInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
baseSpaceعبارت است از XrSpace که همه مکانهای XrSpatialSnapshotEXT اکتشاف در آن قرار خواهد گرفت. timeXrTimeاست که همه مکانهای XrSpatialSnapshotEXT کشفشده در آن قرار خواهند گرفت.futureهمانXrFutureEXTاست که از xrCreateSpatialDiscoverySnapshotAsyncEXT دریافت شده است
مکانهای موجود در دادههای مؤلفههای مختلف که در عکس آنی ایجادشده گنجانده شدهاند در baseSpace واقع در time نشان داده خواهند شد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrCreateSpatialDiscoverySnapshotCompletionInfoEXT فعال شود -
typeبایدXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
baseSpaceباید شناسه مجازی XrSpace معتبر باشد
ساختار XrCreateSpatialDiscoverySnapshotCompletionEXT بهصورت زیر تعریف میشود:
typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialSnapshotEXT snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
futureResultعبارت است از XrResult عملیات ایجاد عکس آنی کاوش فضایی. -
snapshotیک XrSpatialSnapshotEXT است که میتوان از آن برای پُرسمان دادههای مؤلفه موجودیتهای فضایی کشفشده استفاده کرد.
کدهای برگشتی آتی
مقادیر futureResult:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز استفاده از XrCreateSpatialDiscoverySnapshotCompletionEXT فعال شود -
typeبایدXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
futureResultباید مقدار XrResult معتبری باشد - اگر
snapshotXR_NULL_HANDLE نباشد،snapshotباید یک دسته XrSpatialSnapshotEXT معتبر باشد
رویداد توصیه Discovery
ساختار XrEventDataSpatialDiscoveryRecommendedEXT بهصورت زیر تعریف میشود:
typedef struct XrEventDataSpatialDiscoveryRecommendedEXT {
XrStructureType type;
const void* next;
XrSpatialContextEXT spatialContext;
} XrEventDataSpatialDiscoveryRecommendedEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
spatialContextهمان XrSpatialContextEXT است که زمان اجرا برای آن شناسایی را توصیه میکند.
برنامه میتواند این رویداد را بااستفاده از xrPollEvent بازیابی کند. برنامه میتواند با منتظر ماندن برای این رویداد، از تماسهای بیشازحد به xrCreateSpatialDiscoverySnapshotAsyncEXT برای کشف نهادهای فضایی جلوگیری کند. اگر برنامه چندین عکس آنی اکتشاف با XrSpatialDiscoverySnapshotCreateInfoEXT یکسان بین دو رویداد XrEventDataSpatialDiscoveryRecommendedEXT ایجاد کند، عکسهای آنی حاصل ممکن است حاوی نهادهای یکسان باشند و بنابراین ایجاد عکس آنی و پُرسمانهای داده بیفایده خواهد بود.
انتظار برای این رویداد برای ایجاد یک عکس آنی اکتشافی جدید تضمین میکند که برنامه با درخواستهای اکتشافی که زمان اجرا ممکن است هیچ داده جدیدی برای آنها برنگرداند، سیستم را بیشازحد بارگذاری نمیکند و به جلوگیری از خطر استفاده بیشازحد از منابع سیستم و محدود شدن بهدلیل خطمشیهای حرارتی یا مصرف برق دستگاه کمک میکند. این کار همچنین به ایجاد برابری بین زمانهای اجرایی که موجودیتهای فضایی را در لحظه با ردیابی زنده کشف میکنند و زمانهای اجرایی که موجودیتهای فضایی را از یک وضعیت قبلاً ضبطشده ارائه میدهند کمک میکند (که در آن زمان اجرا ممکن است رویداد توصیه کشف را فقط یکبار برای هر XrSpatialContextEXT در صف قرار دهد).
زمان اجرا نباید این رویداد را برای اطلاعرسانی به برنامه درباره تغییرات یا اصلاحات انجامشده در دادههای مؤلفه نهادهای فضایی موجود در صف قرار دهد. برنامه میتواند از xrCreateSpatialUpdateSnapshotEXT برای پیگیری بهروزرسانیهای دادههای مؤلفه برای موجودیتهای فضایی موردعلاقهاش استفاده کند.
زمان اجرا ممکن است رویداد توصیه کاوش را بدون منتظر ماندن برای اینکه برنامه ابتدا xrCreateSpatialDiscoverySnapshotAsyncEXT را فراخوانی کند در صف قرار دهد. برای مثال، زمان اجرا ممکن است تصمیمگیری درباره صفبندی رویداد توصیه کاوش را براساس پیکربندی XrSpatialContextEXT، درک خود از محیط اطراف کاربر (کاوش موجودیتهای جدید یا ازدست رفتن موجودیتهای فعلی)، یا برای اشاره به آهنگ مناسب درخواست کاوش به برنامه اتخاذ کند تا منابع سیستم بیشازحد بارگذاری نشود. اگر درطول عمر XrSpatialContextEXT هیچ موجودیتی در محیط کاربر پیدا نشود، زمان اجرا ممکن است تصمیم بگیرد که هرگز این رویداد را برای XrSpatialContextEXT در صف قرار ندهد.
زمان اجرا نباید این رویداد را برای spatialContext مشخصی در صف قرار دهد تا زمانی که برنامه ایجاد آن را بااستفاده از xrCreateSpatialContextCompleteEXT تکمیل کند.
پساز اینکه برنامه xrDestroySpatialContextEXT را فراخوانی کرد، زمان اجرا نباید رویدادهای توصیه کاوش بیشتری را برای آن بافت فضایی در صف قرار دهد یا چنین رویدادهایی را برای آن بافت از xrPollEvent برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrEventDataSpatialDiscoveryRecommendedEXT فعال شود -
typeبایدXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
دادههای مؤلفه پُرسمان
تابع xrQuerySpatialComponentDataEXT بهصورت زیر تعریف میشود:
XrResult xrQuerySpatialComponentDataEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialComponentDataQueryConditionEXT* queryCondition,
XrSpatialComponentDataQueryResultEXT* queryResult);
شرح پارامترها
-
snapshotیک XrSpatialSnapshotEXT است که قبلاً توسط xrCreateSpatialDiscoverySnapshotCompleteEXT یا xrCreateSpatialUpdateSnapshotEXT ارائه شده است. queryConditionاشارهگری به ساختار XrSpatialComponentDataQueryConditionEXT است.-
queryResultاشارهگری به ساختار XrSpatialComponentDataQueryResultEXT است.
برنامه میتواند از xrQuerySpatialComponentDataEXT برای پرسمان دادههای مؤلفه موجودیتها در عکس آنی با پیوست کردن ساختار فهرست به XrSpatialComponentDataQueryResultEXT :: next مربوط به هر XrSpatialComponentTypeEXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes استفاده کند.
اگر برنامه ساختار فهرستی را به XrSpatialComponentDataQueryResultEXT :: next پیوست کند که با هیچیک از مؤلفههای فهرستشده در XrSpatialComponentDataQueryConditionEXT :: componentTypes مطابقت نداشته باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
برنامه میتواند انتخاب کند که ساختارهای فهرست مربوط به فقط زیرمجموعهای از مؤلفههای فهرستشده در XrSpatialComponentDataQueryConditionEXT :: componentTypes را پیوست کند. اگر برنامه فقط بخواهد شناسهها و وضعیت ردیابی موجودیتهای فضایی را که با queryCondition مطابقت دارند بداند، میتواند انتخاب کند که ساختارهای فهرست را بهطور کامل حذف کند. زمان اجرا نباید عدم وجود ساختارهای فهرست از زنجیره XrSpatialComponentDataQueryResultEXT :: next را بهعنوان شکست تلقی کند.
اگر XrEventDataReferenceSpaceChangePending در صف باشد و XrEventDataReferenceSpaceChangePending :: changeTime درحالیکه برنامه درحال پرسمان دادههای مؤلفه از XrSpatialSnapshotEXT است منقضی شود، برنامه میتواند از دادههای رویداد برای تنظیم کردن حالتها استفاده کند.
زمان اجرا باید XrSpatialComponentDataQueryResultEXT :: entityIds را فقط با موجودیتهایی پر کند که همه مؤلفههای مشخصشده در XrSpatialComponentDataQueryConditionEXT :: componentTypes را داشته باشند. اگر XrSpatialComponentDataQueryConditionEXT :: componentTypeCount برابر با ۰ باشد، زمان اجرا باید queryResult را با همه موجودیتها (و وضعیتهای ردیابی آنها) که در عکس آنی هستند پر کند. اگر شرایط پُرسمان بیشتری به XrSpatialComponentDataQueryConditionEXT :: next اضافه شود، زمان اجرا باید آنها را بهعنوان «AND» با دردسترس بودن انواع مؤلفه درنظر بگیرد، یعنی زمان اجرا باید XrSpatialComponentDataQueryResultEXT ::entityIds را فقط با نهادهایی که همه شرایط ارائهشده را برآورده میکنند پُر کند. زمان اجرا باید دادههای مؤلفه را در ساختارهای فهرست با همان ترتیبی که موجودیتها در XrSpatialComponentDataQueryResultEXT :: entityIds قرار دارند پر کند، یعنی دادههای مؤلفه در یک نمایه مشخص در آرایه ساختار فهرست باید با موجودیت در همان نمایه مطابقت داشته باشد.
اگر وضعیت ردیابی برای موجودیتی XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT نباشد، زمان اجرا نباید دادهها را در نمایه مربوط به آن موجودیت در آرایه موجود در ساختارهای فهرست پیوستشده به XrSpatialComponentDataQueryResultEXT تغییر دهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrQuerySpatialComponentDataEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
queryConditionباید اشارهگری به ساختار معتبر XrSpatialComponentDataQueryConditionEXT باشد -
queryResultباید اشارهگری به ساختار XrSpatialComponentDataQueryResultEXT باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
بهعنوان مثال، برنامه یک XrSpatialSnapshotEXT ایجاد میکند که حاوی ۵ نهاد است، که در آن -
- نهاد ۱ و ۲ دارای مؤلفههای
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTوXR_SPATIAL_COMPONENT_TYPE_PARENT_EXTهستند - نهاد ۳ و ۴ دارای مؤلفههای
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTوXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTهستند - نهاد ۵ دارای مؤلفههای
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTوXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTاست.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
1
1
2
2
3
3
4
4
5
5
Bounded2D
Bounded2D
بله
بله
بله
بله
نه
نه
نه
نه
بله
بله
ولی
ولی
بله
بله
بله
بله
نه
نه
نه
نه
نه
نه
Mesh3D
Mesh3D
نه
نه
نه
نه
بله
بله
بله
بله
بله
بله
Bounded3D
Bounded3D
نه
نه
نه
نه
بله
بله
بله
بله
نه
No Text is not SVG - cannot display
شکل ۲۰. عکس آنی نمونه
xrQuerySpatialComponentDataEXT در عکس آنی بالا با XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT فهرستشده در شرایط پُرسمان منجر به برگرداندن موجودیتهای ۱، ۲، و ۵ به برنامه میشود و برنامه میتواند آرایهای از XrSpatialBounded2DDataEXT را بهعنوان بخشی از ساختار XrSpatialComponentBounded2DListEXT به زنجیره بعدی XrSpatialComponentDataQueryResultEXT پیوست کند تا دادههای bounded2D را دریافت کند.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
1
1
2
2
۵
5
Bounded2D
Bounded2D
دادههای شناسه نهاد #۱
دادههای نهاد...
دادههای شناسه نهاد شماره ۲
دادههای نهاد...
Data for entityId #5
دادههای نهاد...
entityIds
entityIds
بعدی
بعدی
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Dat...
حدود
حدود
XrSpatialComponent Bounded2DListEXT
XrSpatialComponent Bou... نوشتار SVG نیست - نمایش داده نمیشود
شکل ۲۱. نمونه نتیجه پُرسمان
xrQuerySpatialComponentDataEXT در عکس آنی بالا با مؤلفههای XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT و XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT فهرستشده در شرایط پُرسمان منجر به برگرداندن موجودیتهای شماره ۳ و ۴ به برنامه میشود و برنامه میتواند آرایههای XrBoxf و XrSpatialMeshDataEXT را بهعنوان بخشی از ساختارهای XrSpatialComponentBounded3DListEXT و XrSpatialComponentMesh3DListEXT بهترتیب به زنجیره بعدی XrSpatialComponentDataQueryResultEXT پیوست کند تا دادههای مؤلفه را دریافت کند.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
3
3
4
4
Bounded3D
Bounded3D
دادههای شناسه نهاد شماره ۳
دادههای نهاد...
دادههای شناسه نهاد شماره ۴
دادههای نهاد...
Mesh3D
Mesh3D
دادههای شناسه نهاد شماره ۳
دادههای نهاد...
دادههای شناسه نهاد شماره ۴
دادههای نهاد...
entityIds
entityIds
بعدی
بعدی
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Da...
حدود
حدود
بعدی
بعدی
XrSpatialComponent Bounded3DListEXT
XrSpatialComponent Bo...
XrSpatialComponent Mesh3DListEXT
XrSpatialComponent Me...
توریها
meshes Text is not SVG - cannot display
شکل ۲۲. نمونه نتیجه پُرسمان
ساختار XrSpatialComponentDataQueryConditionEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentDataQueryConditionEXT {
XrStructureType type;
const void* next;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialComponentDataQueryConditionEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. componentTypeCountیکuint32_tاست که تعداد عناصر را در آرایهcomponentTypesتوصیف میکند.componentTypesآرایهای از XrSpatialComponentTypeEXT است که دادهها از عکس آنی برای آن دریافت میشود.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialComponentDataQueryConditionEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد. همچنین ببینید: XrSpatialDiscoveryPersistenceUuidFilterEXT، XrSpatialFilterArchetypeEXT، XrSpatialFilterTrackingStateEXT - اگر
componentTypeCountبرابر با0نباشد،componentTypesباید اشارهگری به آرایهای از مقادیر معتبرcomponentTypeCountXrSpatialComponentTypeEXT باشد
ساختار XrSpatialComponentDataQueryResultEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentDataQueryResultEXT {
XrStructureType type;
void* next;
uint32_t entityIdCapacityInput;
uint32_t entityIdCountOutput;
XrSpatialEntityIdEXT* entityIds;
uint32_t entityStateCapacityInput;
uint32_t entityStateCountOutput;
XrSpatialEntityTrackingStateEXT* entityStates;
} XrSpatialComponentDataQueryResultEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. entityIdCapacityInputظرفیت آرایهentityIdsاست، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.entityIdCountOutputتعدادXrSpatialEntityIdEXTدرentityIdsاست، یا ظرفیت موردنیاز درصورتیکهentityIdCapacityInputکافی نباشد.-
entityIdsآرایهای ازXrSpatialEntityIdEXTاست. اگرentityIdCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. entityStateCapacityInputظرفیت آرایهentityStatesاست، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.-
entityStateCountOutputتعداد XrSpatialEntityTrackingStateEXT درentityStatesاست، یا ظرفیت موردنیاز درصورتیکهentityStateCapacityInputکافی نباشد. این باید همیشه باentityIdCountOutputیکسان باشد. -
entityStatesآرایهای از XrSpatialEntityTrackingStateEXT است. اگرentityStateCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
entityIdsموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند از entityIds با xrCreateSpatialEntityFromIdEXT برای ایجاد دستههای XrSpatialEntityEXT برای نهادهایی که میخواهد بهروزرسانیهای منظم برای آنها دریافت کند استفاده کند. سپس برنامه میتواند از این دستههای XrSpatialEntityEXT با xrCreateSpatialUpdateSnapshotEXT برای ایجاد یک عکس آنی بهروزرسانی استفاده کند که دارای جدیدترین دادههای شناختهشده زمان اجرا از مؤلفهها برای موجودیتهای ارائهشده است.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialComponentDataQueryResultEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد. همچنین ببینید: XrSpatialComponentAnchorListEXT، XrSpatialComponentAnnotationQuadListANDROID، XrSpatialComponentBounded2DListEXT، XrSpatialComponentBounded3DListEXT، XrSpatialComponentConfidenceListANDROIDSYS، XrSpatialComponentImage2DListEXT، XrSpatialComponentKeyboardSemanticLabelListEXT، XrSpatialComponentMarkerListEXT، XrSpatialComponentMaterialTypeListANDROIDSYS، XrSpatialComponentMesh2DListEXT، XrSpatialComponentMesh3DListEXT، XrSpatialComponentMesh3DNormalsListEXT، XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT، XrSpatialComponentMesh3DVertexSemanticLabelsListEXT، XrSpatialComponentMouseSemanticLabelListEXT، XrSpatialComponentObjectSemanticLabelListANDROID، XrSpatialComponentObjectSemanticLabelListEXT، XrSpatialComponentOccupancyGridListANDROIDX1، XrSpatialComponentParentListEXT، XrSpatialComponentPersistenceListEXT، XrSpatialComponentPersistenceScopesListANDROIDX1، XrSpatialComponentPlaneAlignmentListEXT، XrSpatialComponentPlaneSemanticLabelListEXT، XrSpatialComponentPolygon2DListEXT، XrSpatialComponentRaycastResultListANDROID، XrSpatialComponentRoomEmptinessListANDROIDSYS، XrSpatialComponentRoomListANDROIDSYS، XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2، XrSpatialComponentSubsumedByListANDROID - اگر
entityIdCapacityInput0نباشد،entityIdsباید اشارهگری به آرایهای از مقادیرentityIdCapacityInputXrSpatialEntityIdEXTباشد - اگر
entityStateCapacityInput0نباشد،entityStatesباید اشارهگری به آرایهای از مقادیرentityStateCapacityInputXrSpatialEntityTrackingStateEXT باشد
typedef enum XrSpatialEntityTrackingStateEXT {
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT = 1,
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT = 2,
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT = 3,
XR_SPATIAL_ENTITY_TRACKING_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialEntityTrackingStateEXT;
XrSpatialEntityTrackingStateEXT حالتهای ممکن ردیابی موجودیت فضایی را برمیشمارد:
مقادیر شمارشی معانی زیر را دارند:
شرح شمارشی
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT
زمان اجرا ردیابی این نهاد را متوقف کرده است و هرگز ردیابی آن را ازسر نخواهد گرفت.
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT
زمان اجرا ردیابی این نهاد را موقتاً متوقف کرده است اما ممکن است در آینده ردیابی آن را ازسر بگیرد.
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT
زمان اجرا درحالحاضر این نهاد را ردیابی میکند و دادههای مؤلفه آن معتبر است.
پیگیری
موقتاً متوقف
متوقف شده است
شکل ۲۳. XrSpatialEntityTrackingStateEXT
- اگر زمان اجرا ردیابی موجودیت فضایی را تعلیق کند اما امکان ازسرگیری ردیابی آن در آینده وجود داشته باشد، زمان اجرا ممکن است وضعیت موجودیت فضایی را از
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTبهXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTتغییر دهد. برخیاز نمونههایی که زمان اجرا ممکن است این کار را انجام دهد شامل (اما نه محدود به) موارد زیر است: اگر برنامه تمرکز ورودی را ازدست بدهد؛ یا اگر موجودیت فضایی دادهشده خیلی از کاربر دور باشد و نتوان آن را بهطور دقیق ردیابی کرد؛ یا اگر موجودیتهای زیادی درحال ردیابی باشند و زمان اجرا بخواهد هزینه ردیابی را کاهش دهد. XrSpatialEntityTrackingStateEXT به برنامه کمک میکند تا خود را از خطمشیهای ردگیری متفاوت هر زمان اجرا جدا کند. - زمان اجرا ممکن است وضعیت نهاد را از
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTبهXR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTیاXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTتغییر دهد. - اگر نهاد فضایی گم شود و ردیابی آن هرگز بازیابی یا ازسر گرفته نشود، زمان اجرا باید وضعیت نهاد فضایی را از
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTیاXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTبهXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTتغییر دهد. نمونهای از چنین موردی زمانی است که دستگاه ردیابی را ازدست میدهد، جلسه ردیابی خود را بازراهاندازی میکند اما نمیتواند دوباره در محیط خود مکانیابی کند، و بنابراین با نهادهای کشفشده این جلسه ردیابی بهعنوان نهادهای جدید رفتار میکند. - وقتی وضعیت ردیابی یک موجودیت روی
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTتنظیم میشود، زمان اجرا باید هرگز آن را به وضعیت دیگری تغییر ندهد. - هنگام پرسمان دادههای مؤلفه یک موجودیت فضایی بااستفاده از xrQuerySpatialComponentDataEXT، زمان اجرا باید دادههای معتبر را در محتوای میانگیرهای ارائهشده توسط برنامه در زنجیره بعدی XrSpatialComponentDataQueryResultEXT تنظیم کند، اگر وضعیت موجودیت
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTباشد. اگر وضعیت نهادXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTیاXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTباشد، زمان اجرا نباید محتوای میانگیرها را تغییر دهد.
اصطلاح دو تماسی برای دادههای مؤلفه
ساختار XrSpatialBufferEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialBufferEXT {
XrSpatialBufferIdEXT bufferId;
XrSpatialBufferTypeEXT bufferType;
} XrSpatialBufferEXT;
توضیحات عضو
bufferIdXrSpatialBufferIdEXTدادههای میانگیر.bufferTypeXrSpatialBufferTypeEXT است تا نوع داده را درbufferIdنشان دهد. برنامه میتواند ازbufferTypeاستفاده کند تا تعیین کند از کدام تابع برای بازیابی دادههای واقعی میانگیر استفاده کند.
برخیاز مؤلفههای فضایی دادههایی با اندازه متغیر دارند و بنابراین برای بازیابی دادههایشان باید از اصطلاح دو فراخوانی استفاده شود. در چنین مواردی، ساختار داده مؤلفه فضایی یک XrSpatialBufferEXT برای هر میانگیر با اندازه متغیر موردنیاز در دادههای آن مؤلفه ارائه میدهد.
برای همان bufferId ، زمان اجرا باید دادههای یکسانی را از یک پُرسمان داده مؤلفه به پُرسمان دیگر ارائه دهد، حتی در بین یک عکس آنی به عکس آنی دیگر. وجود تفاوت bufferId بین فراخوانیهای پرسمان داده مؤلفه به برنامه نشان میدهد که دادههای آن مؤلفه ممکن است تغییر کرده باشد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialBufferEXT فعال شود -
bufferTypeباید مقدار XrSpatialBufferTypeEXT معتبری باشد
XR_DEFINE_ATOM(XrSpatialBufferIdEXT)
XrSpatialBufferIdEXT برای نمایش هر نوع داده با اندازه متغیر برای مؤلفه فضایی استفاده میشود.
زمان اجرا باید XrSpatialBufferIdEXT و دادههای آن را حداقل برای چرخه حیات XrSpatialSnapshotEXT که حاوی آن است در حافظه نگه دارد. زمان اجرا ممکن است XrSpatialBufferIdEXT و دادههای آن را برای مدت طولانیتری نسبتبه چرخه حیات XrSpatialSnapshotEXT در حافظه نگه دارد تا همان شناسه را بهعنوان بخشی از عکسهای آنی که بعداً توسط برنامه ایجاد میشود برگرداند. برای همان XrSpatialBufferIdEXT ، زمان اجرا باید همیشه همان دادهها را ازطریق تابع xrGetSpatialBuffer* مناسب برگرداند.
typedef enum XrSpatialBufferTypeEXT {
XR_SPATIAL_BUFFER_TYPE_UNKNOWN_EXT = 0,
XR_SPATIAL_BUFFER_TYPE_STRING_EXT = 1,
XR_SPATIAL_BUFFER_TYPE_UINT8_EXT = 2,
XR_SPATIAL_BUFFER_TYPE_UINT16_EXT = 3,
XR_SPATIAL_BUFFER_TYPE_UINT32_EXT = 4,
XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT = 5,
XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT = 6,
XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT = 7,
XR_SPATIAL_BUFFER_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialBufferTypeEXT;
شمارش XrSpatialBufferTypeEXT انواع مختلف دادههای میانگیر نشاندادهشده XrSpatialBufferIdEXT را شناسایی میکند.
شرحهای شمارشی
XR_SPATIAL_BUFFER_TYPE_STRING_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferStringEXT منتقل شود تا میانگیر رشتهای را بازیابی کند.XR_SPATIAL_BUFFER_TYPE_UINT8_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferUint8EXT منتقل شود تا میانگیرuint8_tرا بازیابی کند.XR_SPATIAL_BUFFER_TYPE_UINT16_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferUint16EXT منتقل شود تا میانگیرuint16_tرا بازیابی کند.XR_SPATIAL_BUFFER_TYPE_UINT32_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferUint32EXT منتقل شود تا میانگیرuint32_tرا بازیابی کند.XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferFloatEXT منتقل شود تا میانگیرfloatرا بازیابی کند.XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferVector2fEXT منتقل شود تا میانگیر XrVector2f را بازیابی کند.XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT.XrSpatialBufferIdEXTمیتواند به xrGetSpatialBufferVector3fEXT منتقل شود تا میانگیر XrVector3f را بازیابی کند.
تابع xrGetSpatialBufferStringEXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferStringEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
char* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد نویسهها یا ظرفیت موردنیاز درصورتی است کهbufferCapacityInputکافی نباشد.-
bufferآرایهای ازcharاست. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط یک مؤلفه را دریافت کند، جایی که XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferStringEXT XR_SPATIAL_BUFFER_TYPE_STRING_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_STRING_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
buffer که توسط زمان اجرا تکمیل شده است باید رشته UTF-8 با پایان تهی باشد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferStringEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInputبرابر با0نباشد،bufferباید اشارهگری به آرایهای از مقادیر نویسهbufferCapacityInputباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferUint8EXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferUint8EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint8_t* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای ازuint8_tاست. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط یک مؤلفه را دریافت کند، که در آن XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferUint8EXT XR_SPATIAL_BUFFER_TYPE_UINT8_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_UINT8_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferUint8EXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از مقادیرbufferCapacityInputuint8_tباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferUint16EXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferUint16EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint16_t* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای ازuint16_tاست. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط یک مؤلفه را دریافت کند، که در آن XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferUint16EXT XR_SPATIAL_BUFFER_TYPE_UINT16_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_UINT16_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferUint16EXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از مقادیرbufferCapacityInputuint16_tباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferUint32EXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferUint32EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint32_t* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای ازuint32_tاست. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط یک مؤلفه را دریافت کند، جایی که XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_UINT32_EXT است بااستفاده از xrGetSpatialBufferUint32EXT .
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_UINT32_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferUint32EXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از مقادیرbufferCapacityInputuint32_tباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferFloatEXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferFloatEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
float* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای ازfloatاست. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط مؤلفه را دریافت کند، که در آن XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferFloatEXT XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferFloatEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از مقادیرbufferCapacityInputfloatباشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferVector2fEXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferVector2fEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
XrVector2f* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای از XrVector2f است. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط مؤلفه را دریافت کند، که در آن XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferVector2fEXT XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferVector2fEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از ساختارهایbufferCapacityInputXrVector2f باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
تابع xrGetSpatialBufferVector3fEXT بهصورت زیر تعریف میشود:
XrResult xrGetSpatialBufferVector3fEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
XrVector3f* buffer);
شرح پارامترها
-
snapshotیک دسته برای XrSpatialSnapshotEXT است. infoاطلاعات مربوط به میانگیر را برای پُرسمان نگه میدارد.bufferCapacityInputظرفیت آرایه است، یا ۰ برای نشان دادن درخواست بازیابی ظرفیت موردنیاز.bufferCountOutputتعداد عناصر در آرایهbufferاست، یا ظرفیت موردنیاز درصورتیکهbufferCapacityInputکافی نباشد.-
bufferآرایهای از XrVector3f است. اگرbufferCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح مفصل بازیابی اندازه
bufferموردنیاز، بخش پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند دادههای XrSpatialBufferEXT ارائهشده توسط مؤلفه را دریافت کند، که در آن XrSpatialBufferEXT :: bufferType بااستفاده از xrGetSpatialBufferVector3fEXT XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT است.
اگر XrSpatialBufferTypeEXT برای XrSpatialBufferGetInfoEXT :: bufferId برابر با XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT نباشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
اگر XrSpatialBufferGetInfoEXT :: bufferId به snapshot تعلق نداشته باشد، زمان اجرا باید XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT را برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrGetSpatialBufferVector3fEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد -
infoباید اشارهگری به ساختار معتبر XrSpatialBufferGetInfoEXT باشد -
bufferCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
bufferCapacityInput0نباشد،bufferباید اشارهگری به آرایهای از ساختارهایbufferCapacityInputXrVector3f باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
ساختار XrSpatialBufferGetInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialBufferGetInfoEXT {
XrStructureType type;
const void* next;
XrSpatialBufferIdEXT bufferId;
} XrSpatialBufferGetInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. bufferIdXrSpatialBufferIdEXTبرای میانگیری که دادههای آن بازیابی میشود.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialBufferGetInfoEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
#define XR_NULL_SPATIAL_BUFFER_ID_EXT 0
XR_NULL_SPATIAL_BUFFER_ID_EXT مقداری رزروشده است که نشاندهنده XrSpatialBufferIdEXT نامعتبر است. ممکن است فقط زمانی به توابع API ارسال و از آنها برگردانده شود که بهطور خاص مجاز باشد.
ایجاد عکس آنی بهروزرسانی
تابع xrCreateSpatialUpdateSnapshotEXT بهصورت زیر تعریف میشود:
XrResult xrCreateSpatialUpdateSnapshotEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialUpdateSnapshotCreateInfoEXT* createInfo,
XrSpatialSnapshotEXT* snapshot);
شرح پارامترها
-
spatialContextیک XrSpatialContextEXT است که قبلاً بااستفاده از xrCreateSpatialContextAsyncEXT ایجاد شده است. createInfoاشارهگری به XrSpatialUpdateSnapshotCreateInfoEXT است.-
snapshotاشارهگری به نتیجه XrSpatialSnapshotEXT است.
برنامه میتواند از xrCreateSpatialUpdateSnapshotEXT برای ایجاد عکس آنی و دریافت جدیدترین دادههای مؤلفه برای نهادهای خاصی که برای زمان اجرا شناختهشده هستند استفاده کند. برنامهها میتوانند دستههای XrSpatialEntityEXT و انواع مؤلفههایی را که به آنها علاقهمند هستند هنگام ایجاد عکس آنی ارائه دهند.
برنامه میتواند از XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes برای فیلتر کردن فهرست مؤلفههایی که دادههای آنها باید در عکس آنی گنجانده شود استفاده کند. اگر برنامه فهرست معتبری از انواع مؤلفههای فضایی را در XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes ارائه دهد، زمان اجرا باید فقط موجودیتهای فضایی را در عکس آنی لحاظ کند که حداقل یکی از مؤلفههای ارائهشده در XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes را داشته باشند. همچنین، زمان اجرا باید فقط شامل دادههای مربوط به آن مؤلفهها در عکس آنی باشد.
اگر هرکدام از XrSpatialComponentTypeEXT در XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes برای قابلیتهای فضایی ارسالشده به XrSpatialContextCreateInfoEXT :: capabilityConfigs هنگام ایجاد spatialContext فعال نشده باشد، زمان اجرا باید XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT را برگرداند.
اگر برنامه فهرستی از انواع مؤلفههای فضایی را در XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes ارائه نکند، زمان اجرا باید همه موجودیتهای فضایی فهرستشده در XrSpatialUpdateSnapshotCreateInfoEXT :: entities را در عکس آنی لحاظ کند و باید دادههای مربوط به همه مؤلفههای فعالشده قابلیتهای پیکربندیشده برای spatialContext را لحاظ کند.
زمان اجرا نباید شامل موجودیتهای فضایی باشد که در XrSpatialUpdateSnapshotCreateInfoEXT :: entities در snapshot فهرست نشدهاند.
برنامه میتواند هر تعداد عکس آنی که میخواهد ایجاد کند اما باید به حافظهای که برای هر عکس آنی جدید اختصاص داده میشود توجه داشته باشد و وقتی دیگر به عکسهای آنی نیاز ندارد باید آنها را ازبین ببرد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز فراخوانی xrCreateSpatialUpdateSnapshotEXT فعال شود -
spatialContextباید یک دسته XrSpatialContextEXT معتبر باشد -
createInfoباید اشارهگری به ساختار معتبر XrSpatialUpdateSnapshotCreateInfoEXT باشد -
snapshotباید اشارهگری به دسته XrSpatialSnapshotEXT باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
ساختار XrSpatialUpdateSnapshotCreateInfoEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialUpdateSnapshotCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t entityCount;
const XrSpatialEntityEXT* entities;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
XrSpace baseSpace;
XrTime time;
} XrSpatialUpdateSnapshotCreateInfoEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. entityCountیکuint32_tاست که تعداد عناصر را در آرایهentitiesتوصیف میکند.entitiesآرایهای از XrSpatialEntityEXT است که زمان اجرا باید دادههای مؤلفه را در عکس آنی لحاظ کند.componentTypeCountیکuint32_tاست که تعداد عناصر را در آرایهcomponentTypesتوصیف میکند.componentTypesآرایهای از XrSpatialComponentTypeEXT است که زمان اجرا باید دادهها را در عکس آنی لحاظ کند.-
baseSpaceXrSpace است که همه مکانهای بهروزرسانی XrSpatialSnapshotEXT نسبت به آن قرار خواهند گرفت. timeXrTimeاست که همه مکانهای بهروزرسانی XrSpatialSnapshotEXT در آن قرار خواهند گرفت.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialUpdateSnapshotCreateInfoEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
entitiesباید اشارهگری به آرایهای ازentityCountدسته XrSpatialEntityEXT معتبر باشد - اگر
componentTypeCountبرابر با0نباشد،componentTypesباید اشارهگری به آرایهای از مقادیر معتبرcomponentTypeCountXrSpatialComponentTypeEXT باشد -
baseSpaceباید شناسه مجازی XrSpace معتبر باشد - پارامتر
entityCountباید بزرگتر از0باشد - هر دو
baseSpaceو عناصرentitiesباید از همان XrSession ایجاد، اختصاص، یا بازیابی شده باشند
ازبین بردن عکس آنی
تابع xrDestroySpatialSnapshotEXT بهصورت زیر تعریف میشود:
XrResult xrDestroySpatialSnapshotEXT(
XrSpatialSnapshotEXT snapshot);
شرح پارامترها
-
snapshotیک XrSpatialSnapshotEXT است که قبلاً توسط xrCreateSpatialDiscoverySnapshotCompleteEXT یا xrCreateSpatialUpdateSnapshotEXT ارائه شده است.
برنامه میتواند xrDestroySpatialSnapshotEXT را فراخوانی کند تا دسته XrSpatialSnapshotEXT و منابع مرتبط با آن را ازبین ببرد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز فراخوانی xrDestroySpatialSnapshotEXT فعال شود -
snapshotباید یک شناسه XrSpatialSnapshotEXT معتبر باشد
ایمنی رشتهای
- دسترسی به
snapshotو هرگونه دسته فرزند باید بهصورت خارجی همگامسازی شود
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
اجزای مشترک
دوبعدی محدودشده
دادههای مؤلفه
ساختار XrSpatialBounded2DDataEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialBounded2DDataEXT {
XrPosef center;
XrExtent2Df extents;
} XrSpatialBounded2DDataEXT;
توضیحات عضو
centerیک XrPosef است که مرکز هندسی مؤلفه دوبعدی محدودشده را تعریف میکند.extentsحدود مؤلفه دوبعدی محدودشده در امتداد محور x (extents.width)، محور y (extents.height)، با مرکزیتcenterاست.
extents XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT به اندازه نهاد در صفحه x-y سیستم مختصات صفحه اشاره دارد. صفحهای با موقعیت {0, 0, 0}، چرخش {0, 0, 0, 1} (بدون چرخش)، و وسعت {1, 1} به صفحهای ۱ متر در ۱ متر اشاره دارد که مرکز آن در {0, 0, 0} قرار دارد و بردار نرمال وجه جلویی آن بهسمت جهت +Z در فضای مؤلفه اشاره میکند.
X X Y Y Z Z ارتفاع ارتفاع Y Y Z Z X X صفحه عمودی صفحه عمودی صفحه افقی صفحه افقی عرض عرض عرض عرض ارتفاع ارتفاع
شکل ۲۴. Bounded2D Component Coordinate System
توجه
OpenXR از صفحه X-Y با +Z بهعنوان صفحه نرمال استفاده میکند، اما میاناهای برنامهسازی کاربردی دیگر ممکن است از صفحه X-Z با +Y بهعنوان صفحه نرمال استفاده کنند. صفحه X-Y میتواند با چرخش π/2- رادیان حول محور X+ به صفحه X-Z تبدیل شود.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialBounded2DDataEXT فعال شود
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentBounded2DListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentBounded2DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrSpatialBounded2DDataEXT* bounds;
} XrSpatialComponentBounded2DListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. boundCountیکuint32_tاست که تعداد عناصر را در آرایهboundsتوصیف میکند.-
boundsآرایهای از XrSpatialBounded2DDataEXT است.
اگر XrSpatialComponentBounded2DListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT ::componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر boundCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
اگر xrQuerySpatialComponentDataEXT :: snapshot از xrCreateSpatialDiscoverySnapshotCompleteEXT ایجاد شده باشد، زمان اجرا باید XrSpatialBounded2DDataEXT :: center را در XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace و XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time ارائه دهد.
اگر xrQuerySpatialComponentDataEXT :: snapshot از xrCreateSpatialUpdateSnapshotEXT ایجاد شده باشد، زمان اجرا باید XrSpatialBounded2DDataEXT :: center را در XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace و XrSpatialUpdateSnapshotCreateInfoEXT :: time ارائه دهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialComponentBounded2DListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
boundsباید اشارهگری به آرایهای از ساختارهایboundCountXrSpatialBounded2DDataEXT باشد - پارامتر
boundCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند با گنجاندن مقدار شمارشی در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents آن را فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد.
سهبعدی محدودشده
دادههای مؤلفه
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT از XrBoxf برای دادههایش استفاده میکند.
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentBounded3DListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentBounded3DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrBoxf* bounds;
} XrSpatialComponentBounded3DListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. boundCountیکuint32_tاست که تعداد عناصر را در آرایهboundsتوصیف میکند.-
boundsآرایهای از XrBoxf است.
اگر XrSpatialComponentBounded3DListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT ::componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر boundCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
If xrQuerySpatialComponentDataEXT :: snapshot was created from xrCreateSpatialDiscoverySnapshotCompleteEXT , then the runtime must provide XrBoxf :: center in XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace at XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time .
اگر xrQuerySpatialComponentDataEXT :: snapshot از xrCreateSpatialUpdateSnapshotEXT ایجاد شده باشد، زمان اجرا باید XrBoxf :: center را در XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace در XrSpatialUpdateSnapshotCreateInfoEXT :: time ارائه دهد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialComponentBounded3DListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
boundsباید اشارهگری به آرایهای از ساختارهایboundCountXrBoxf باشد - پارامتر
boundCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد.
ولی
دادههای مؤلفه
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT از XrSpatialEntityIdEXT برای دادههایش استفاده میکند.
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentParentListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentParentListEXT {
XrStructureType type;
void* next;
uint32_t parentCount;
XrSpatialEntityIdEXT* parents;
} XrSpatialComponentParentListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. parentCountیکuint32_tاست که تعداد عناصر را در آرایهparentsتوصیف میکند.-
parentsآرایهای ازXrSpatialEntityIdEXTاست.
اگر XrSpatialComponentParentListEXT در زنجیره بعدی XrSpatialComponentDataQueryResultEXT :: next باشد اما XrSpatialComponentDataQueryConditionEXT ::componentTypeCount صفر نباشد و XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes گنجانده نشده باشد، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را از xrQuerySpatialComponentDataEXT برگرداند.
اگر parentCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید پیشاز استفاده از XrSpatialComponentParentListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
parentsباید اشارهگری به آرایهای از مقادیرparentCountXrSpatialEntityIdEXTباشد - پارامتر
parentCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای برخی قابلیتها شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents فعال کند. این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد.
سهبعدی توری
دادههای مؤلفه
ساختار XrSpatialMeshDataEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialMeshDataEXT {
XrPosef origin;
XrSpatialBufferEXT vertexBuffer;
XrSpatialBufferEXT indexBuffer;
} XrSpatialMeshDataEXT;
توضیحات عضو
-
originیک XrPosef است که مبدأ مش را تعریف میکند. همه رأسهای مش باید نسبت به این مبدأ باشند. -
vertexBufferیک XrSpatialBufferEXT است که شناسه میانگیری را ارائه میدهد که نشاندهنده میانگیر رأس نهادی است که این مؤلفه روی آن قرار دارد. موقعیت رأسها باید نسبت بهoriginباشد. -
indexBufferیک XrSpatialBufferEXT است که شناسه میانگیری را ارائه میدهد که نشاندهنده آرایهای از شاخصهای مثلثی است و شاخصهای رئوس مش را درvertexBufferمشخص میکند. شاخصهای مثلث باید بهترتیب پادساعتگرد برگردانده شوند و سه شاخص نشاندهنده یک مثلث است.
نوع مؤلفهای که از XrSpatialMeshDataEXT استفاده میکند باید XrSpatialBufferTypeEXT مربوط به vertexBuffer و indexBuffer را مشخص کند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialMeshDataEXT فعال شود -
vertexBufferباید ساختار XrSpatialBufferEXT معتبری باشد -
indexBufferباید ساختار XrSpatialBufferEXT معتبری باشد
ساختار فهرست مؤلفه برای پرسمان دادهها
ساختار XrSpatialComponentMesh3DListEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialComponentMesh3DListEXT {
XrStructureType type;
void* next;
uint32_t meshCount;
XrSpatialMeshDataEXT* meshes;
} XrSpatialComponentMesh3DListEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. meshCountیکuint32_tاست که تعداد عناصر را در آرایهmeshesتوصیف میکند.-
meshesآرایهای از XrSpatialMeshDataEXT است.
برنامه میتواند با افزودن XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT در XrSpatialComponentDataQueryConditionEXT :: componentTypes و افزودن XrSpatialComponentMesh3DListEXT به زنجیره اشارهگر بعدی XrSpatialComponentDataQueryResultEXT، مؤلفه سهبعدی مش موجودیتهای فضایی را در XrSpatialSnapshotEXT پُرسمان کند.
The runtime must return XR_ERROR_VALIDATION_FAILURE from xrQuerySpatialComponentDataEXT if XrSpatialComponentMesh3DListEXT is in the next chain of XrSpatialComponentDataQueryResultEXT :: next but XrSpatialComponentDataQueryConditionEXT ::componentTypeCount is not zero and XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT is not included in XrSpatialComponentDataQueryConditionEXT :: componentTypes .
اگر meshCount کمتر از XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput باشد، زمان اجرا باید XR_ERROR_SIZE_INSUFFICIENT را از xrQuerySpatialComponentDataEXT برگرداند.
برای XrSpatialMeshDataEXT که توسط زمان اجرا در آرایه meshes تکمیل شده است، XrSpatialBufferEXT :: bufferType برای XrSpatialMeshDataEXT :: vertexBuffer باید XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT باشد و XrSpatialBufferEXT :: bufferType برای XrSpatialMeshDataEXT :: indexBuffer باید XR_SPATIAL_BUFFER_TYPE_UINT32_EXT باشد.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialComponentMesh3DListEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
meshesباید اشارهگری به آرایهای از ساختارهایmeshCountXrSpatialMeshDataEXT باشد - پارامتر
meshCountباید بزرگتر از0باشد
پیکربندی
اگر XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT در XrSpatialCapabilityComponentTypesEXT :: componentTypes برای قابلیتی شمارش شده باشد، برنامه میتواند آن را با گنجاندن enum در فهرست XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents از ساختار مشتقشده XrSpatialCapabilityConfigurationBaseHeaderEXT مربوط به قابلیتی که از این مؤلفه پشتیبانی میکند فعال کند.
این مؤلفه برای گنجانده شدن در زنجیره بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT به پیکربندی خاصی نیاز ندارد.
فیلترهای وضعیت ردیابی
ساختار XrSpatialFilterTrackingStateEXT بهصورت زیر تعریف میشود:
typedef struct XrSpatialFilterTrackingStateEXT {
XrStructureType type;
const void* next;
XrSpatialEntityTrackingStateEXT trackingState;
} XrSpatialFilterTrackingStateEXT;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. -
trackingStateهمان XrSpatialEntityTrackingStateEXT است که برنامه میخواهد فیلتر را برای آن اعمال کند.
برنامه میتواند از XrSpatialFilterTrackingStateEXT در زنجیره بعدی XrSpatialDiscoverySnapshotCreateInfoEXT استفاده کند تا دامنه کاوش را فقط به آن دسته از نهادهایی محدود کند که وضعیت ردیابی آنها trackingState است.
برنامه میتواند از XrSpatialFilterTrackingStateEXT در زنجیره بعدی XrSpatialComponentDataQueryConditionEXT استفاده کند تا پرسوجوی دادههای مؤلفه را از یک عکس آنی فقط به موجودیتهایی محدود کند که وضعیت ردیابی آنها trackingState است.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_spatial_entityباید قبلاز استفاده از XrSpatialFilterTrackingStateEXT فعال شود -
typeبایدXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
trackingStateباید مقدار XrSpatialEntityTrackingStateEXT معتبری باشد
کد نمونه
استفاده از برنامه
برنامهها معمولاً از افزونه نهاد فضایی در الگوی زیر استفاده میکنند:
- برنامه ابتدا قابلیتهای فضایی سیستم را بااستفاده از xrEnumerateSpatialCapabilitiesEXT برمیشمارد. سپس آرایه برگرداندهشده XrSpatialCapabilityEXT را بررسی میکند و مؤلفهها و ویژگیهای پشتیبانیشده برای هریک از آن قابلیتها را بهترتیب بااستفاده از xrEnumerateSpatialCapabilityComponentTypesEXT و xrEnumerateSpatialCapabilityFeaturesEXT برمیشمارد. این کار به برنامه تصویر کاملی از مؤلفههایی که میتواند فعال کند و پیکربندیهایی که این قابلیت میپذیرد ارائه میدهد.
- سپس برنامه یک یا چند دسته XrSpatialContextEXT با پیکربندیهای قابلیت فضایی خاص ایجاد میکند، که در آن پیکربندیها قابلیت خاصی را در بافت فضایی فعال و پیکربندی میکنند، و مؤلفههایی را برای آن قابلیتها فعال و پیکربندی میکنند.
- برای هر XrSpatialContextEXT، برنامه قبلاز استفاده از xrCreateSpatialDiscoverySnapshotAsyncEXT برای کشف نهادهای فضایی، منتظر دریافت رویدادهای XrEventDataSpatialDiscoveryRecommendedEXT برای آن XrSpatialContextEXT میماند. پساز تکمیل این عملیات ناهمگام، برنامه یک دسته XrSpatialSnapshotEXT دریافت میکند.
- برنامه بااستفاده از xrQuerySpatialComponentDataEXT، موجودیتها و دادههای مؤلفه موجود در این XrSpatialSnapshotEXT را جستجو میکند. اگر وضعیت نهاد
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTباشد، برنامه جدیدترین دادههای مؤلفه نهادهای پُرسمانشده را از ساختارهای پیوستشده به زنجیره بعدی XrSpatialComponentDataQueryResultEXT میخواند. - اگر نهادهای خاصی وجود داشته باشد که برنامه آنها را بهعنوان نهادهای جالب شناسایی کند و بخواهد بهروزرسانیهای آنها را درطول زمان دریافت کند، بااستفاده از xrCreateSpatialEntityFromIdEXT دستههای XrSpatialEntityEXT را برای آن نهادها ایجاد میکند. برنامه بااستفاده از xrCreateSpatialUpdateSnapshotEXT بهروزرسانیهای این نهادهای جالب را دریافت میکند و از همان تابع xrQuerySpatialComponentDataEXT در XrSpatialSnapshotEXT تازه ایجادشده استفاده میکند تا جدیدترین دادههای مؤلفه را برای آن نهادها دریافت کند.
کاوش نهادهای فضایی و دادههای مؤلفه پُرسمان
کد نمونه زیر نشان میدهد چگونه میتوان موجودیتهای فضایی را برای قابلیت «Foo» پیدا کرد و دادههای مؤلفه آن را پُرسمان کرد.
/****************************/
/* Capability definition */
/****************************/
// Foo capability has the following components -
// - XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
#define XR_SPATIAL_CAPABILITY_FOO ((XrSpatialCapabilityEXT)1000740000U)
#define XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT ((XrStructureType)1000740000U)
// Derives from XrSpatialCapabilityConfigurationBaseHeaderEXT
typedef struct XrSpatialCapabilityConfigurationFooEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationFooEXT;
/******************************/
/* End capability definition */
/******************************/
auto waitUntilReady = [](XrFutureEXT future) {
XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
pollInfo.future = future;
do {
// sleep(1);
CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
} while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};
// Create a spatial spatial context
XrSpatialContextEXT spatialContext{};
{
const std::array<XrSpatialComponentTypeEXT, 1> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
};
// Configure Foo capability for the spatial context
XrSpatialCapabilityConfigurationFooEXT fooConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT};
fooConfig.capability = XR_SPATIAL_CAPABILITY_FOO;
fooConfig.enabledComponentCount = enabledComponents.size();
fooConfig.enabledComponents = enabledComponents.data();
std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&fooConfig));
XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
XrFutureEXT createContextFuture;
CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));
waitUntilReady(createContextFuture);
XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
if (completion.futureResult != XR_SUCCESS) {
return;
}
spatialContext = completion.spatialContext;
}
auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
// We want to look for entities that have the following components.
std::array<XrSpatialComponentTypeEXT, 1> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT};
XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
snapshotCreateInfo.componentTypes = snapshotComponents.data();
XrFutureEXT future = XR_NULL_FUTURE_EXT;
CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &future));
waitUntilReady(future);
XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
completionInfo.baseSpace = localSpace;
completionInfo.time = time;
completionInfo.future = future;
XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
if (completion.futureResult == XR_SUCCESS) {
// Query for the bounded2d component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
queryResult.entityIdCapacityInput = 0;
queryResult.entityIds = nullptr;
queryResult.entityStateCapacityInput = 0;
queryResult.entityStates = nullptr;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
queryResult.entityStateCapacityInput = entityStates.size();
queryResult.entityStates = entityStates.data();
std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
boundsList.boundCount = bounded2d.size();
boundsList.bounds = bounded2d.data();
queryResult.next = &boundsList;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
// 2D extents for entity entityIds[i] is bounded2d[i].extents.
}
}
CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
}
};
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
// Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
switch (event.type) {
case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata =
*reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
// Discover spatial entities for the context that we received the "discovery
// recommended" event for.
discoverSpatialEntities(eventdata.spatialContext, time);
break;
}
}
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySpatialContextEXT(spatialContext));
دادههای میانگیر پُرسمان
کد نمونه زیر نشان میدهد که چگونه دادههای مؤلفهای را که XrSpatialBufferEXT ارائه میدهد دریافت کنید.
/****************************/
/* Component definition */
/****************************/
// Foo component that provides an XrVector3f buffer
#define XR_SPATIAL_COMPONENT_TYPE_FOO_EXT ((XrSpatialComponentTypeEXT)1000740000U)
#define XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT ((XrStructureType)1000740000U)
// XrSpatialComponentFooListEXT extends XrSpatialComponentDataQueryResultEXT
typedef struct XrSpatialComponentFooListEXT {
XrStructureType type;
void* XR_MAY_ALIAS next;
uint32_t fooCount;
XrSpatialBufferEXT* foo;
} XrSpatialComponentFooListEXT;
/******************************/
/* End Component definition */
/******************************/
// Query for the foo component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_FOO_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = 1;
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
std::vector<XrSpatialBufferEXT> fooBuffers(queryResult.entityIdCountOutput);
XrSpatialComponentFooListEXT fooList{XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT};
fooList.fooCount = fooBuffers.size();
fooList.foo = fooBuffers.data();
queryResult.next = &fooList;
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
// foo component data for entity entityIds[i]
if (fooBuffers[i].bufferType == XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT) {
XrSpatialBufferGetInfoEXT getInfo{XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT};
getInfo.bufferId = fooBuffers[i].bufferId;
uint32_t bufferCountOutput;
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, 0, &bufferCountOutput, nullptr));
std::vector<XrVector3f> vertexBuffer(bufferCountOutput);
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, bufferCountOutput, &bufferCountOutput, vertexBuffer.data()));
// XrVertex3f buffer for entity entityIds[i] is now available in vertexBuffer vector.
}
}
رهنمودهای افزونه
اگر افزونهای XrSpatialComponentTypeEXT جدیدی را تعریف کند که دادههای بیشتری درباره موجودیت فضایی ارائه میدهد،
- افزونه باید همچنین یک ساختار فهرست برای آن مؤلفه تعریف کند که به برنامه اجازه میدهد آرایهای را به زمان اجرا ارسال کند تا با دادههای مربوط به هریک از موجودیتهای فضایی که xrQuerySpatialComponentDataEXT ::
queryConditionرا برآورده میکنند، پر شود. برخیاز نمونههای چنین ساختارهای فهرستی عبارتاند از XrSpatialComponentParentListEXT و XrSpatialComponentBounded2DListEXT . اگر اندازه دادههای مؤلفه متغیر باشد و برنامه را ملزم کند که از اصطلاح دو-فراخوانی برای پرسمان آن استفاده کند، دادههای مؤلفه باید یک XrSpatialBufferEXT برای هر داده با اندازه متغیر در ساختار فهرست ارائه دهد و باید XrSpatialBufferTypeEXT را برای هر میانگیر مشخص کند. سپس برنامه میتواند بااستفاده از توابع تعریفشده در اصطلاح دو فراخوانی برای دادههای مؤلفه، دادههای میانگیر را پرسمان کند. نمونهای از چنین ساختاری XrSpatialMeshDataEXT است که در XrSpatialComponentMesh3DListEXT گنجانده شده است. - افزونه میتواند ساختارهایی را نیز ارائه دهد که برنامه میتواند به XrSpatialComponentDataQueryConditionEXT ::
nextزنجیر کند تا فیلترهای بیشتری برای پُرسمان مربوط به دادههای این مؤلفه ارائه دهد.
- افزونه باید همچنین یک ساختار فهرست برای آن مؤلفه تعریف کند که به برنامه اجازه میدهد آرایهای را به زمان اجرا ارسال کند تا با دادههای مربوط به هریک از موجودیتهای فضایی که xrQuerySpatialComponentDataEXT ::
افزونهها میتوانند ساختارهایی را تعریف کنند که XrSpatialDiscoverySnapshotCreateInfoEXT را گسترش میدهند تا فیلترهای بیشتری برای کاوش ارائه دهند. فیلترهای ایجاد عکس آنی نباید بر پیکربندی بافت فضایی تأثیر بگذارند، بلکه باید برای ارائه نکتههایی به زمان اجرا درباره اینکه چه نهادها و دادههایی باید در عکس آنی گنجانده شوند، همانطور که توسط پیکربندی فعلی بافت فضایی (و بنابراین پیکربندی فعلی سرویسهای زیربنایی) ردیابی میشود، استفاده شوند.
اگر افزونهای XrSpatialCapabilityEXT جدیدی را تعریف کند،
- همچنین باید فهرست XrSpatialComponentTypeEXT را که زمانهای اجرا باید برای آن قابلیت در نهادها ارائه دهند مشخص کند.
- همچنین باید ساختارهای مشتقشده از XrSpatialCapabilityConfigurationBaseHeaderEXT را ارائه دهد که امکان پیکربندی آن قابلیت را فراهم میکند.
اگر افزونهای XrSpatialCapabilityFeatureEXT جدیدی تعریف کند، باید ساختار پیکربندی متناظری نیز تعریف کند که بتواند به اشارهگر بعدی XrSpatialCapabilityConfigurationBaseHeaderEXT زنجیر شود، که برنامه بتواند از آن برای فعال کردن ویژگی هنگام ایجاد XrSpatialContextEXT استفاده کند.
افزونهای که XrSpatialCapabilityEXT جدیدی را تعریف میکند باید از این الگو برای مشخصات پیروی کند -
- نمای کلی
- پشتیبانی زمان اجرا
- پیکربندی
- قطعات تضمینشده
- کد نمونه
افزونهای که XrSpatialComponentTypeEXT جدیدی را تعریف میکند باید از این الگو برای مشخصات پیروی کند -
- دادههای مؤلفه
- ساختار فهرست مؤلفه برای پرسمان دادهها
- پیکربندی
When writing an api that provides the application with a
XrSpatialBufferIdEXT, it must be accompanied with a XrSpatialBufferTypeEXT to inform the application what the data type of the buffer is and the application can use an appropriatexrGetSpatialBuffer*function to retrieve the actual contents of the buffer.
دستورالعملهای طراحی و افزونه برچسب معنایی
اگرچه این افزونه هیچ مؤلفهای برای انتقال اطلاعات برچسب معنایی یک نهاد تعریف نمیکند، اما قوانین و دستورالعملهای طراحی را برای هر افزونهای که چنین مؤلفهای را تعریف میکند، تعیین میکند. در نوشتار زیر، « باید » و « باید » نویسندگان چنین عملکردی را محدود میکنند، نه پیادهسازی زمان اجرا یا برنامهای که از میانای برنامهسازی کاربردی استفاده میکند.
- اگر افزونهای برچسبهای معنایی را برای هر XrSpatialCapabilityEXT تعریف میکند، باید این کار را با تعریف یک XrSpatialComponentTypeEXT جدید و همچنین یک شمارش جدید با مجموعهای از برچسبها («مجموعه برچسب معنایی») بهعنوان دادههای آن مؤلفه انجام دهد.
- شمارشی که نشاندهنده مجموعه برچسب معنایی است باید مقداری داشته باشد که نشان دهد نهاد در هیچیک از برچسبهای این مجموعه دستهبندی نشده است. نام این شمارنده باید شامل «UNCATEGORIZED» باشد، مثلاً
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT. این مقدار به برنامهها نشان میدهد که زمان اجرا این نهاد را تشخیص میدهد، اما مجموعههای برچسب معنایی دیگری وجود دارد که این نهاد در آنها دستهبندی شده است. - شمارش این XrSpatialComponentTypeEXT جدید تعریفشده در xrEnumerateSpatialCapabilityComponentTypesEXT به این معنی است که زمان اجرا از مجموعه برچسب معنایی (و بنابراین برچسبهای تعریفشده در مجموعه) مربوط به آن نوع مؤلفه پشتیبانی میکند.
- برنامهها تمایل خود را برای کشف نهادهایی که برچسبهای متعلق به این مجموعه برچسب معنایی را دارند با گنجاندن XrSpatialComponentTypeEXT مربوطه در آرایه
enabledComponents:: XrSpatialCapabilityConfigurationBaseHeaderEXT از ساختار پیکربندی برای قابلیتی که نوع مؤلفه برای آن شمارش شده است، بیان میکنند. - ممکن است یک موجودیت فضایی واحد دارای چندین مؤلفه باشد که هرکدام برچسبی از مجموعه برچسبهای معنایی خود به آن ارائه میدهند. مثال زیر را با چند مجموعه برچسب معنایی فرضی درنظر بگیرید -
XrSpatialObjectSemanticLabel، که ممکن است مقادیری مانند صندلی، مبل، میز و غیره داشته باشد،XrSpatialSofaBrand، که ممکن است مقادیری مانند IKEA، Wayfair، و غیره داشته باشد، وXrSpatialIkeaSofa، که ممکن است نام مدلهای خاص مبل IKEA را داشته باشد. در این سناریو، همان نهاد مبل هر ۳ مؤلفه (برچسبهای هر ۳ مجموعه برچسب معنایی) را روی خود دارد که هرکدام جزئیات متفاوتی از اطلاعات مربوط به نهاد را ارائه میدهند. - اگر افزونهای درحال تعریف XrSpatialComponentTypeEXT جدیدی باشد که مجموعه برچسب معنایی جدیدی حاوی چند برچسب علاوهبر برچسب
UNCATEGORIZEDارائه میدهد، افزونه باید تعریف XrSpatialCapabilityFeatureEXT را درنظر بگیرد که به برنامهها اجازه میدهد فقط زیرمجموعهای از برچسبهای تعریفشده در مجموعه برچسب معنایی مربوط به آن نوع مؤلفه را فعال کنند. این زیرمجموعه، که در زنجیره بعدی پیکربندی قابلیت ارائه شده است، بهعنوان راهنمایی برای زمانهای اجرا عمل میکند تا خطوط لوله ردیابی خود را بهینهسازی کنند و فقط زیرمجموعه ارائهشده را ردیابی کنند. نمونهای از چنین ساختار ویژگیای در زیر ارائه شده است. - افزونهها نباید به شمارش مجموعه برچسبهای معنایی موجود برچسب اضافه کنند. آنها باید بهجای آن، شمارش جدیدی تعریف کنند که حاوی شمارندههای معادل با معناشناسی یکسان و با مقادیر برابر با مقادیر مجموعه دیگر، علاوهبر شمارندههای جدید اضافهشده باشد. مشخصات مجموعه برچسب معنایی جدید تعریفشده باید نگاشت بین مجموعه برچسب قدیمی و جدید را نیز ایجاد کند. نمونه زیر را ببینید.
نمونه تعریف ویژگی فضایی برای زیرمجموعه برچسب معنایی
// New example semantic label set.
typedef enum XrSpatialExampleSemanticLabelEXT {
// ... label values
} XrSpatialExampleSemanticLabelEXT;
/*
typedef enum XrSpatialCapabilityFeatureEXT {
// .. existing values
// new spatial feature value
XR_SPATIAL_CAPABILITY_FEATURE_EXAMPLE_SEMANTIC_LABEL_SUBSET_EXT
// .. existing values
} XrSpatialCapabilityFeatureEXT;
*/
// New spatial feaure configuration structure
typedef struct XrSpatialFeatureExampleSemanticLabelSubsetEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint32_t semanticLabelCount;
const XrSpatialExampleSemanticLabelEXT* semanticLabels;
} XrSpatialFeatureExampleSemanticLabelSubsetEXT;
نمونه افزونه برچسب معنایی فضایی
typedef enum XrSpatialExamplePlaneSemanticLabelExtensionEXT {
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT = 2,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT = 3,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT = 4,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT = 5,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT = 6,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT = 7,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialExamplePlaneSemanticLabelExtensionEXT;
مثال بالا را درنظر بگیرید که در آن یک افزونه شمارش XrSpatialExamplePlaneSemanticLabelExtensionEXT را تعریف میکند تا XrSpatialPlaneSemanticLabelEXT موجود را با مقادیری برای نمایش درها و پنجرهها گسترش دهد. مشخصات شمارش جدید باید شامل نوشتار برای فرم زیر باشد -
For all non-UNCATEGORIZED label enumerants in elink:XrSpatialPlaneSemanticLabelEXT,
the runtime must: return that enumerant if and only if it returns the corresponding
label enumerant from elink:XrSpatialExamplePlaneSemanticLabelExtensionEXT with the same value
i.e.
the ename:XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT value for that entity must:
correspond with the ename:XR_SPATIAL_COMPONENT_TYPE_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_EXT values
according to the following table -
[width="100%",options="header"]
|====
| XrSpatialExamplePlaneSemanticLabelExtensionEXT | XrSpatialPlaneSemanticLabelEXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
|====
ماکروهای جدید
انواع پایه جدید
XrSpatialBufferIdEXTXrSpatialEntityIdEXT
انواع شیء جدید
فرمانهای جدید
- xrCreateSpatialContextAsyncEXT
- xrCreateSpatialContextCompleteEXT
- xrCreateSpatialDiscoverySnapshotAsyncEXT
- xrCreateSpatialDiscoverySnapshotCompleteEXT
- xrCreateSpatialEntityFromIdEXT
- xrCreateSpatialUpdateSnapshotEXT
- xrDestroySpatialContextEXT
- xrDestroySpatialEntityEXT
- xrDestroySpatialSnapshotEXT
- xrEnumerateSpatialCapabilitiesEXT
- xrEnumerateSpatialCapabilityComponentTypesEXT
- xrEnumerateSpatialCapabilityFeaturesEXT
- xrGetSpatialBufferFloatEXT
- xrGetSpatialBufferStringEXT
- xrGetSpatialBufferUint16EXT
- xrGetSpatialBufferUint32EXT
- xrGetSpatialBufferUint8EXT
- xrGetSpatialBufferVector2fEXT
- xrGetSpatialBufferVector3fEXT
- xrQuerySpatialComponentDataEXT
سازههای جدید
- XrCreateSpatialContextCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT
- XrEventDataSpatialDiscoveryRecommendedEXT
- XrSpatialBounded2DDataEXT
- XrSpatialBufferEXT
- XrSpatialBufferGetInfoEXT
- XrSpatialCapabilityComponentTypesEXT
- XrSpatialCapabilityConfigurationBaseHeaderEXT
- XrSpatialComponentDataQueryConditionEXT
- XrSpatialComponentDataQueryResultEXT
- XrSpatialContextCreateInfoEXT
- XrSpatialDiscoverySnapshotCreateInfoEXT
- XrSpatialEntityFromIdCreateInfoEXT
- XrSpatialMeshDataEXT
- XrSpatialUpdateSnapshotCreateInfoEXT
درحال گسترش دادن XrSpatialComponentDataQueryResultEXT :
گسترش دادن XrSpatialDiscoverySnapshotCreateInfoEXT ، XrSpatialComponentDataQueryConditionEXT :
Enums جدید
- XrSpatialBufferTypeEXT
- XrSpatialCapabilityEXT
- XrSpatialCapabilityFeatureEXT
- XrSpatialComponentTypeEXT
- XrSpatialEntityTrackingStateEXT
ثابتهای شمارشی جدید
XR_EXT_SPATIAL_ENTITY_EXTENSION_NAMEXR_EXT_spatial_entity_SPEC_VERSIONدرحال گسترش دادن XrObjectType :
XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXTXR_OBJECT_TYPE_SPATIAL_ENTITY_EXTXR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
درحال گسترش دادن XrResult :
XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
درحال گسترش دادن XrStructureType :
XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT
مشکلات
آیا یک نهاد همیشه فقط از یک قابلیت مشتق میشود؟
- حل و فصل شده
- پاسخ: نه. این موضوع کاملاً به زمان اجرا براساس قابلیتهای ردیابی خودش و نحوه نمایش نهاد شناساییشده بستگی دارد. این مشخصات هیچ نمایش خاصی از موجودیت فضایی را تجویز نمیکند، بهجز مؤلفههای تضمینشده از یک قابلیت معین برای تعیین حداقل انتظار. زمان اجرا ممکن است بتواند نهادهای شناساییشده توسط قابلیتهای جداگانه را ادغام کند و آنها را بهعنوان یک نهاد واحد با مؤلفههای تضمینشده همه قابلیتهایی که به شناسایی آن کمک کردهاند نشان دهد. برای مثال، میزها را میتوان هم با قابلیت ردیابی صفحه و هم با قابلیت ردیابی شیء شناسایی کرد، بهطوریکه ردیابی صفحه مؤلفه
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTرا در موجودیت ارائه میدهد و ردیابی شیء مؤلفهXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTرا ارائه میدهد. یک زمان اجرای خاص ممکن است جدول را بهعنوان ۲ موجودیت جداگانه ارائه دهد که هرکدام مجموعه مؤلفههای تضمینشده خود را دارند، درحالیکه برخی زمانهای اجرای خاص ممکن است فقط ۱ موجودیت را برای نمایش جدول ارائه دهند و هر دوXR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTوXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTرا در همان موجودیت داشته باشند. نکته مهمی که باید در اینجا به آن توجه کرد این است که یک نهاد فضایی معین میتواند حداکثر یک مؤلفه از هر نوع مؤلفه معین داشته باشد. بنابراین، اگر دادههای مؤلفه تولیدشده توسط قابلیتهای مختلف برای نهاد خاصی تداخل داشته باشد، زمان اجرا باید آنها را بهعنوان ۲ نهاد جداگانه نشان دهد.
سابقه نسخه
بازبینی ۱، ۲۰۲۴/۰۴/۱۲ (نیهاو جین، Google)
- شرح اولیه افزونه