XR_ANDROID_scene_meshing
رشته نام
XR_ANDROID_scene_meshing
نوع افزونه
افزونه نمونه
شماره داخلی ثبتشده
719
بازبینی
3
وضعیت تصویب
تصویبنشده
وابستگیهای افزونه و نسخه
تاریخ آخرین تغییر
2025-05-15
وضعیت IP
هیچ ادعای مالکیت فکری شناختهشدهای وجود ندارد.
همیاران
Spencer Quin، Google
Jared Finder، Google
Antonio Fontan، Google
Cairn Overturf، Google
Nihav Jain، Google
Salar Khan، Google
Sebastian Klose، Google
Jürgen Sturm، Google
Vinny DaSilva، Google
Ricardo Campbell، Google
نمای کلی
این افزونه برای ارائه مشهایی درنظر گرفته شده است که تقریباً اشیای فیزیکی را در محیط کاربر نشان میدهند.
برنامهها میتوانند از این افزونه برای تجسم صحنه و امکان تعامل اشیای مجازی با اشیای فیزیکی (مثلاً برخورد) استفاده کنند.
دادههای مش صحنه توسط زمان اجرا تولید میشود و بااستفاده از XrSceneMeshingTrackerANDROID و XrSceneMeshSnapshotANDROID با برنامه همرسانی میشود. برنامهها میتوانند ازطریق XrSceneSubmeshStateANDROID که از xrGetAllSubmeshStatesANDROID برگردانده شده است، به مقادیر موجود در اطلاعات زیرشبکه صحنه دسترسی پیدا کنند. برنامهها میتوانند ازطریق XrSceneSubmeshDataANDROID که از xrGetSubmeshDataANDROID برگردانده شده است به مقادیر موجود در دادههای زیرشبکه صحنه دسترسی پیدا کنند.
دادههای مشبندی صحنه اطلاعات شخصی حساس است و ارتباط نزدیکی با حریم خصوصی و یکپارچگی شخصی دارد. اکیداً توصیه میشود برنامههایی که دادههای مشبندی صحنه را ذخیره یا منتقل میکنند همیشه برای انجام این کار از کاربر درخواست پذیرش فعال و مشخص کنند.
اجازهها
برنامههای Android باید اجازه android.permission.SCENE_UNDERSTANDING_FINE را در مانیفست خود فهرست کنند. اجازه android.permission.SCENE_UNDERSTANDING_FINE اجازه حساسی محسوب میشود زیرا به زمان اجرا اجازه میدهد محیط کاربر را مطالعه کند.
برنامه باید برای استفاده از این عملکردها، در زمان اجرا درخواست اجازه کند:
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(سطح محافظت: خطرناک)
بررسی قابلیت سیستم
ساختار XrSystemSceneMeshingPropertiesANDROID بهصورت زیر تعریف میشود:
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
supportsSceneMeshingیکXrBool32است که نشان میدهد آیا سیستم از مشبندی صحنه پشتیبانی میکند یا نه.
برنامه میتواند با زنجیر کردن ساختار XrSystemSceneMeshingPropertiesANDROID به XrSystemProperties هنگام فراخوانی xrGetSystemProperties، بررسی کند که آیا سیستم قادر به مشبندی صحنه است یا نه.
اگر زمان اجرا XR_FALSE را برای supportsSceneMeshing برگرداند، سیستم از مشبندی صحنه پشتیبانی نمیکند و بنابراین باید XR_ERROR_FEATURE_UNSUPPORTED را از xrCreateSceneMeshingTrackerANDROID برگرداند. برنامه باید از عملکرد مشبندی صحنه زمانی که supportsSceneMeshing XR_FALSE است اجتناب کند.
اگر زمان اجرا XR_TRUE را برای supportsSceneMeshing برگرداند، سیستم از مشبندی صحنه پشتیبانی میکند.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSystemSceneMeshingPropertiesANDROID فعال شود -
typeبایدXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
شمارش XrSceneMeshSemanticLabelSetANDROID مجموعههای برچسب معنایی را برای مشبندی صحنه توصیف میکند. هر مقدار در این enum نشاندهنده enum دیگری است که حاوی برچسبهای معنایی است. برای مثال، مقدار XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID نشاندهنده مجموعه XrSceneMeshSemanticLabelANDROID است.
typedef enum XrSceneMeshSemanticLabelSetANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID = 1000801000,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
مقادیر فهرست معانی زیر را دارند:
شرح شمارشی
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
این مجموعه برچسب معنایی نشاندهنده عدم وجود برچسبهای معنایی است.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
این مجموعه برچسب معنایی نشاندهنده XrSceneMeshSemanticLabelANDROID است.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID
این مجموعه برچسب معنایی نشاندهنده XrSceneMeshSemanticLabel2ANDROID است. (افزودهشده توسط افزونه XR_ANDROID_scene_meshing_semantic_label2)
تابع xrEnumerateSupportedSemanticLabelSetsANDROID بهصورت زیر تعریف میشود:
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
شرح پارامترها
-
instanceیک XrInstance است که توسط برنامه ایجاد شده است. systemIdیکXrSystemIdاست که از xrGetSystem دوباره امتحان شده است.-
supportedSemanticLabelSetsInputCapacityظرفیتsupportedSemanticLabelSetsاست، یا ۰ برای بازیابی ظرفیت موردنیاز. -
supportedSemanticLabelSetsOutputCountاشارهگری به تعدادsupportedSemanticLabelSetsنوشتهشده است، یا اشارهگری به ظرفیت موردنیاز درصورتیکهsupportedSemanticLabelSetsInputCapacityکافی نباشد. -
supportedSemanticLabelSetsاشارهگری به آرایهای از XrSceneMeshSemanticLabelSetANDROID است. اگرsupportedSemanticLabelSetsInputCapacityبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح دقیق بازیابی اندازه
supportedSemanticLabelSetsموردنیاز، فصل پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند مجموعههای برچسب معنایی پشتیبانیشده توسط سیستم را بااستفاده از تابع xrEnumerateSupportedSemanticLabelSetsANDROID شمارش کند.
هر سیستم باید حداقل از XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID پشتیبانی کند زیرا این مقدار شمارشی نشاندهنده عدم تنظیم برچسب معنایی است و میتواند در مواردی که برنامه به معناشناسی رأس نیاز ندارد استفاده شود.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrEnumerateSupportedSemanticLabelSetsANDROID فعال شود -
instanceباید شناسه XrInstance معتبری باشد -
supportedSemanticLabelSetsOutputCountباید اشارهگری به مقدارuint32_tباشد - اگر
supportedSemanticLabelSetsInputCapacityبرابر با0نباشد،supportedSemanticLabelSetsباید اشارهگری به آرایهای از مقادیرsupportedSemanticLabelSetsInputCapacityXrSceneMeshSemanticLabelSetANDROID باشد
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
ایجاد دسته ردیاب مشبندی صحنه
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
دستگیره XrSceneMeshingTrackerANDROID نشاندهنده ردیاب مشبندی صحنه برای مشبندی صحنه و مدیریت منابع مرتبط است.
از این دسته میتوان برای ایجاد عکس آنی مش صحنه بااستفاده از xrCreateSceneMeshSnapshotANDROID در این افزونه استفاده کرد.
تابع xrCreateSceneMeshingTrackerANDROID بهصورت زیر تعریف میشود:
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
شرح پارامترها
-
sessionیک XrSession است که در آن ردیاب مشبندی صحنه فعال خواهد بود. -
createInfoاشارهگری به ساختار XrSceneMeshingTrackerCreateInfoANDROID است که برای توصیف ردیاب مشبندی صحنه که قرار است ایجاد شود استفاده میشود. -
trackerدسته XrSceneMeshingTrackerANDROID برگرداندهشده است.
برنامه میتواند بااستفاده از تابع xrCreateSceneMeshingTrackerANDROID، یک دسته XrSceneMeshingTrackerANDROID ایجاد کند.
اگر سیستم از مشبندی صحنه پشتیبانی نکند، زمان اجرا باید XR_ERROR_FEATURE_UNSUPPORTED را از xrCreateSceneMeshingTrackerANDROID برگرداند. در این حالت، زمان اجرا باید XR_FALSE را برای XrSystemSceneMeshingPropertiesANDROID :: supportsSceneMeshing هنگام فراخوانی تابع xrGetSystemProperties برگرداند تا برنامه بتواند از ایجاد ردیاب مشبندی صحنه اجتناب کند.
برنامه باید فقط از مجموعههای برچسب معنایی استفاده کند که توسط سیستم در XrSceneMeshingTrackerCreateInfoANDROID :: semanticLabelSet هنگام ایجاد ردیاب مشبندی صحنه پشتیبانی میشوند. اگر برنامه از مجموعه برچسب معنایی رأس مش صحنه پشتیبانینشده استفاده کند، زمان اجرا باید XR_ERROR_FEATURE_UNSUPPORTED را از xrCreateSceneMeshingTrackerANDROID برگرداند.
برنامه میتواند فهرست مجموعههای برچسب معنایی پشتیبانیشده را با تابع xrEnumerateSupportedSemanticLabelSetsANDROID شمارش کند.
دستگیره xrCreateSceneMeshingTrackerANDROID مالک همه منابع برای مشبندی صحنه است. پساز اتمام تجربه مشبندی صحنه، برنامه باید دسته را ازطریق تابع xrDestroySceneMeshingTrackerANDROID ازبین ببرد.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrCreateSceneMeshingTrackerANDROID فعال شود -
sessionباید یک دسته XrSession معتبر باشد -
createInfoباید اشارهگری به ساختار معتبر XrSceneMeshingTrackerCreateInfoANDROID باشد -
trackerباید اشارهگری به دسته XrSceneMeshingTrackerANDROID باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
ساختار XrSceneMeshingTrackerCreateInfoANDROID بهصورت زیر تعریف میشود:
typedef struct XrSceneMeshingTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet;
XrBool32 enableNormals;
} XrSceneMeshingTrackerCreateInfoANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
semanticLabelSetیک XrSceneMeshSemanticLabelSetANDROID است که برای مشخص کردن مجموعه برچسب معنایی استفاده میشود که برای مشبندی صحنه استفاده خواهد شد. اگر این مقدار رویXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDتنظیم شده باشد، زمان اجرا فیلد میانگیر XrSceneSubmeshDataANDROID ::vertexSemanticsرا نادیده میگیرد. enableNormalsیکXrBool32است که برای مشخص کردن اینکه آیا هنگام دریافت دادههای مش صحنه، نرمالهای رأس برای رئوس مش در میانگیر مش صحنه گنجانده شود یا نه استفاده میشود.
ساختار XrSceneMeshingTrackerCreateInfoANDROID اطلاعات لازم برای ایجاد دسته XrSceneMeshingTrackerANDROID را شرح میدهد.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSceneMeshingTrackerCreateInfoANDROID فعال شود -
typeبایدXR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
semanticLabelSetباید مقدار XrSceneMeshSemanticLabelSetANDROID معتبری باشد
تابع xrDestroySceneMeshingTrackerANDROID بهصورت زیر تعریف میشود:
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
شرح پارامترها
-
trackerیک XrSceneMeshingTrackerANDROID است که قبلاً توسط xrCreateSceneMeshingTrackerANDROID ایجاد شده است.
تابع xrDestroySceneMeshingTrackerANDROID پساز اتمام تجربههای مشبندی صحنه، tracker و منابع اساسی را آزاد میکند.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrDestroySceneMeshingTrackerANDROID فعال شود -
trackerباید شناسه مجازی XrSceneMeshingTrackerANDROID معتبری باشد
ایمنی رشتهای
- دسترسی به
trackerو هرگونه دسته فرزند باید بهصورت خارجی همگامسازی شود
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
ایجاد دسته عکس آنی مش صحنه
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
دسته XrSceneMeshSnapshotANDROID نشاندهنده عکس آنی مش صحنه است. این عکس آنی بااستفاده از xrCreateSceneMeshSnapshotANDROID ایجاد میشود که عکس آنی از دادههای مش صحنه را در زمان فراخوانی تابع میگیرد.
از این دسته میتوان برای بازیابی اطلاعات و دادههای زیرشبکه بااستفاده از xrGetAllSubmeshStatesANDROID و xrGetSubmeshDataANDROID استفاده کرد.
تابع xrCreateSceneMeshSnapshotANDROID بهصورت زیر تعریف میشود:
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
شرح پارامترها
-
trackerیک دسته XrSceneMeshingTrackerANDROID است که قبلاً با xrCreateSceneMeshingTrackerANDROID ایجاد شده است. -
createInfoاشارهگری به ساختار XrSceneMeshSnapshotCreateInfoANDROID است که حاوی اطلاعات لازم برای ایجاد عکس آنی مش صحنه است. -
outSnapshotCreationResultاشارهگری به شیء XrSceneMeshSnapshotCreationResultANDROID است که توسط زمان اجرا با نتیجه ایجاد عکس آنی پر میشود.
برنامه میتواند از تابع xrCreateSceneMeshSnapshotANDROID برای ایجاد عکس آنی مش صحنه از ردیاب مشبندی صحنه استفاده کند. این تابع یک دسته XrSceneMeshSnapshotANDROID را بههمراه XrSceneMeshTrackingStateANDROID که در ساختار XrSceneMeshSnapshotCreationResultANDROID پیچیده شده است برمیگرداند. این دسته ازنظر فنی یک عکس آنی از دادههای مش صحنه در زمان ایجاد است. از این دسته میتوان برای پُرسمان اطلاعات و دادههای مش صحنه بهترتیب بااستفاده از xrGetAllSubmeshStatesANDROID و xrGetSubmeshDataANDROID استفاده کرد.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrCreateSceneMeshSnapshotANDROID فعال شود -
trackerباید شناسه مجازی XrSceneMeshingTrackerANDROID معتبری باشد -
createInfoباید اشارهگری به ساختار معتبر XrSceneMeshSnapshotCreateInfoANDROID باشد -
outSnapshotCreationResultباید اشارهگری به ساختار XrSceneMeshSnapshotCreationResultANDROID باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALID
ساختار XrSceneMeshSnapshotCreateInfoANDROID بهصورت زیر تعریف میشود:
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
baseSpaceیک XrSpace است که اطلاعات وضعیت زیرشبکه صحنه در آن نمایش داده میشود. timeXrTimeاست که زمان پردازش یا نمایش مش صحنه را توصیف میکند، معمولاً XrFrameState ::predictedDisplayTime.boundingBoxیک XrBoxf است که چارگوش مرزی را که مش صحنه در آن بهدست میآید توصیف میکند.
ساختار XrSceneMeshSnapshotCreateInfoANDROID اطلاعات لازم برای ایجاد دسته XrSceneMeshSnapshotANDROID را شرح میدهد
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSceneMeshSnapshotCreateInfoANDROID فعال شود -
typeبایدXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
baseSpaceباید شناسه مجازی XrSpace معتبر باشد
ساختار XrSceneMeshSnapshotCreationResultANDROID بهصورت زیر تعریف میشود:
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
snapshotیک دسته XrSceneMeshSnapshotANDROID است که توسط زمان اجرا ایجاد شده است. -
trackingStateیک XrSceneMeshTrackingStateANDROID است که وضعیت ردیاب مشبندی صحنه را در زمان ایجاد عکس آنی شرح میدهد.
ساختار XrSceneMeshSnapshotCreationResultANDROID نتیجه ایجاد عکس آنی مش صحنه را که از xrCreateSceneMeshSnapshotANDROID برگردانده شده است ذخیره میکند.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSceneMeshSnapshotCreationResultANDROID فعال شود -
typeبایدXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
snapshotباید شناسه مجازی XrSceneMeshSnapshotANDROID معتبری باشد -
trackingStateباید مقدار XrSceneMeshTrackingStateANDROID معتبری باشد
شمارش XrSceneMeshTrackingStateANDROID وضعیت ردیابی را برای ردیاب مشبندی صحنه توصیف میکند. هر مقدار در این enum نشاندهنده وضعیتی از ردیاب مشبندی صحنه است.
typedef enum XrSceneMeshTrackingStateANDROID {
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID = 0,
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID = 1,
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID = 2,
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID = 3,
XR_SCENE_MESH_TRACKING_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshTrackingStateANDROID;
مقادیر فهرست معانی زیر را دارند:
شرح شمارشی
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID
ردیاب هنوز برای ارائه دادههای مش آماده نیست.
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID
ردیاب درحال ردیابی فعال است.
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID
ردیاب منتظر اندازهگیریهای معتبر است تا از آخرین بهروزرسانی مش ادغام شود.
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID
ردیاب برای چندین چرخه اندازهگیریهای معتبری دریافت نکرده است و در حالت خطا قرار دارد.
این وضعیت فقط بهعنوان اطلاعات تکمیلی برای برنامه ارائه میشود. درصورت نبود منابع دیگر خطا، زمان اجرا باید همچنان به برنامه اجازه دهد عکسهای آنی ایجاد کند و دادهها را از آنها بازیابی کند، صرفنظر از XrSceneMeshTrackingStateANDROID فعلی ردیاب. اگر وضعیت XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID نباشد، ممکن است عکسهای آنی بهروز نباشند یا خالی باشند.
درحال دریافت دادههای مش صحنه از عکس آنی مش صحنه
تابع xrGetAllSubmeshStatesANDROID بهصورت زیر تعریف میشود:
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
شرح پارامترها
-
snapshotیک دسته XrSceneMeshSnapshotANDROID است که قبلاً با xrCreateSceneMeshSnapshotANDROID ایجاد شده است. -
submeshStateCapacityInputظرفیتsubmeshStatesاست، یا ۰ برای بازیابی ظرفیت موردنیاز. -
submeshStateCountOutputاشارهگری به تعدادsubmeshStatesنوشتهشده است، یا اشارهگری به ظرفیت موردنیاز درصورتیکهsubmeshStateCapacityInputکافی نباشد. -
submeshStatesاشارهگری به آرایهای از ساختارهای XrSceneSubmeshStateANDROID است که زمان اجرا حالت همه زیرمشها را در مش صحنه به آن ارسال میکند. اگرsubmeshStateCapacityInputبرابر با ۰ باشد، میتواندNULLباشد. - برای شرح دقیق بازیابی اندازه
submeshStatesموردنیاز، فصل پارامترهای اندازه میانگیر را ببینید.
برنامه میتواند از تابع xrGetAllSubmeshStatesANDROID برای دریافت وضعیت همه زیرمشها در مش صحنه استفاده کند. این شامل اطلاعات پایه است تا برنامه بتواند زیرمشهایی را که برای آنها داده میخواهد انتخاب کند.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrGetAllSubmeshStatesANDROID فعال شود -
snapshotباید شناسه مجازی XrSceneMeshSnapshotANDROID معتبری باشد -
submeshStateCountOutputباید اشارهگری به مقدارuint32_tباشد - اگر
submeshStateCapacityInputبرابر با0نباشد،submeshStatesباید اشارهگری به آرایهای از ساختارهایsubmeshStateCapacityInputXrSceneSubmeshStateANDROID باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
ساختار XrSceneSubmeshStateANDROID بهصورت زیر تعریف میشود:
typedef struct XrSceneSubmeshStateANDROID {
XrStructureType type;
void* next;
XrUuid submeshId;
XrTime lastUpdatedTime;
XrPosef submeshPoseInBaseSpace;
XrExtent3Df bounds;
} XrSceneSubmeshStateANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
submeshIdیک XrUuid است که زیرمش را شناسایی میکند. lastUpdatedTimeیکXrTimeاست که نشاندهنده زمانی است که زیرشبکه آخرینبار بهروزرسانی شده است.-
submeshPoseInBaseSpaceیک XrPosef است که نشاندهنده حالت زیرشبکه در فضای پایه استفادهشده برای ایجاد عکس آنی شبکه صحنه است. این حالت همچنین مرکز چارگوش محصورکننده زیرشبکه است. boundsیک XrExtent3Df است که ابعاد چارگوش مرزی را که زیرشبکه را دربرمیگیرد توصیف میکند. این مرزها در فضای پایهای تعریف شده است که برای ایجاد دسته مش صحنه استفاده شده است.
زمان اجرا نهایت تلاش خود را میکند تا submeshId را با منطقهای از فضای فیزیکی که توسط زیرشبکه اشغال شده است نگاشت کند. زمانهای اجرا ممکن است در هر زمانی این نگاشت را ازدست بدهند و UUID جدیدی به هر زیرمجموعه از زیرمشهای شناساییشده اختصاص دهند. بهویژه، زمانهای اجرا ملزم نیستند از همان UUIDها برای همان مشها در نمونههای بعدی برنامه استفاده کنند.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSceneSubmeshStateANDROID فعال شود -
typeبایدXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
تابع xrGetSubmeshDataANDROID بهصورت زیر تعریف میشود:
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
شرح پارامترها
-
snapshotیک دسته XrSceneMeshSnapshotANDROID است که قبلاً با xrCreateSceneMeshSnapshotANDROID ایجاد شده است. -
submeshDataCountطولinoutSubmeshDataاست. -
inoutSubmeshDataآرایه اختصاصدادهشده برنامه از XrSceneSubmeshDataANDROID است که در آن زمان اجرا هر عنصر را با دادههای مش مرتبط با شناسه زیرمش ارسالشده در XrSceneSubmeshDataANDROID ::submeshIdپر میکند.
برنامه میتواند از تابع xrGetSubmeshDataANDROID برای دریافت دستههای زیرشبکه، یا همه زیرشبکهها بهطور همزمان، با ارسال فهرستی از XrSceneSubmeshDataANDROID با هر XrSceneSubmeshDataANDROID :: submeshId تنظیمشده روی شناسه مربوطه زیرشبکه برای بازیابی استفاده کند.
XrSceneSubmeshDataANDROID :: submeshId باید برای هر عنصر در inoutSubmeshData منحصربهفرد باشد و توسط xrGetAllSubmeshStatesANDROID برای همان snapshot قابلبازیابی باشد. اگر شناسه زیرشبکه نامعتبر باشد یا بیشاز یک عنصر در inoutSubmeshData شناسه زیرشبکه یکسانی داشته باشند، زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
submeshDataCount باید برابر یا کمتر از مقدار برگرداندهشده توسط xrGetAllSubmeshStatesANDROID :: submeshStateCountOutput باشد، درغیراینصورت زمان اجرا باید XR_ERROR_VALIDATION_FAILURE را برگرداند.
این میتواند در اصطلاح ۲-فراخوانی برای پرسمان تعداد رأس و نمایه برای همه زیرمشهای انتخابشده استفاده شود.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrGetSubmeshDataANDROID فعال شود -
snapshotباید شناسه مجازی XrSceneMeshSnapshotANDROID معتبری باشد -
inoutSubmeshDataباید اشارهگری به آرایهای از ساختارهایsubmeshDataCountXrSceneSubmeshDataANDROID باشد - پارامتر
submeshDataCountباید بزرگتر از0باشد
کدهای برگشتی
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
ساختار XrSceneSubmeshDataANDROID بهصورت زیر تعریف میشود:
typedef struct XrSceneSubmeshDataANDROID {
XrStructureType type;
const void* next;
XrUuid submeshId;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector3f* vertexPositions;
XrVector3f* vertexNormals;
uint8_t* vertexSemantics;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t* indices;
} XrSceneSubmeshDataANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
submeshIdیک XrUuid است که زیرمش را شناسایی میکند. vertexCapacityInputظرفیتvertexPositions،vertexNormals، وvertexSemanticsاست، یا ۰ برای بازیابی ظرفیت موردنیاز.vertexCountOutputاشارهگری به تعدادvertexPositions،vertexNormals، وvertexSemanticsنوشتهشده است، یا اشارهگری به ظرفیت موردنیاز درصورتیکهvertexCapacityInputکافی نباشد.vertexPositionsآرایهای از XrVector3f است که زمان اجرا موقعیتهای رأس زیرشبکه را به آن خروجی میدهد.-
vertexNormalsآرایهای از XrVector3f است که زمان اجرا، بردار نرمال رأسهای زیرشبکه را در آن خروجی میدهد. اگر برنامه ردیابی را با غیرفعال کردن حالت عادی ایجاد کرده باشد، این فیلد میتواندNULLباقی بماند. -
vertexSemanticsآرایهای ازuint8_tاست که زمان اجرا معناشناسی رأس زیرشبکه را به آن خروجی میدهد. اگر برنامه ردیابی با مجموعه برچسب معناییXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDایجاد کرده باشد، این فیلد میتواندNULLباقی بماند. -
indexCapacityInputظرفیتindicesاست، یا ۰ برای بازیابی ظرفیت موردنیاز. -
indexCountOutputاشارهگری به تعدادindicesنوشتهشده است، یا اشارهگری به ظرفیت موردنیاز درصورتیکهvertexCapacityInputکافی نباشد. indicesآرایهای ازuint32_tاست که زمان اجرا شاخصهای زیرشبکه را به آن ارسال میکند.- برای شرح مفصل بازیابی اندازه
vertexPositions،vertexNormals،vertexSemantics، وindicesموردنیاز، به فصل پارامترهای اندازه میانگیر مراجعه کنید.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز استفاده از XrSceneSubmeshDataANDROID فعال شود -
typeبایدXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد - اگر
vertexCapacityInput0نباشد،vertexPositionsباید اشارهگری به آرایهای از ساختارهایvertexCapacityInputXrVector3f باشد - اگر
vertexCapacityInput0نباشد،vertexNormalsباید اشارهگری به آرایهای از ساختارهایvertexCapacityInputXrVector3f باشد - اگر
vertexCapacityInput0نباشد،vertexSemanticsباید اشارهگری به آرایهای از مقادیرvertexCapacityInputuint8_tباشد - اگر
indexCapacityInput0نباشد،indicesباید اشارهگری به آرایهای از مقادیرindexCapacityInputuint32_tباشد
شمارش XrSceneMeshSemanticLabelANDROID مجموعه پیشفرض برچسبهای معنایی است که میتوان از آن برای برچسبگذاری رئوس مش استفاده کرد تا مشخص شود رأس مش روی کدام سطح محیط فیزیکی قرار دارد. این مجموعه شمارشی با مقدار XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID در XrSceneMeshSemanticLabelSetANDROID نشان داده میشود.
typedef enum XrSceneMeshSemanticLabelANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID = 2,
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID = 3,
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID = 4,
XR_SCENE_MESH_SEMANTIC_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelANDROID;
مقادیر شمارشی معانی زیر را دارند:
شرح شمارشی
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID
این برچسب معنایی نشان میدهد که عنصر مش مربوطه نشاندهنده شیء ناشناختهای است.
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID
این برچسب معنایی نشان میدهد که عنصر مش مربوطه نشاندهنده کف است.
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID
این برچسب معنایی نشان میدهد که عنصر مش مربوطه نشاندهنده سقف است.
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID
این برچسب معنایی نشان میدهد که عنصر مش مربوطه نشاندهنده دیوار است.
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID
این برچسب معنایی نشان میدهد که عنصر مش مربوطه نشاندهنده یک جدول است.
ازبین بردن عکس آنی مش صحنه
تابع xrDestroySceneMeshSnapshotANDROID بهصورت زیر تعریف میشود:
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
شرح پارامترها
-
snapshotیک دسته XrSceneMeshSnapshotANDROID است که قبلاً با xrCreateSceneMeshSnapshotANDROID ایجاد شده است و توسط این تابع ازبین خواهد رفت.
برنامه میتواند از تابع xrDestroySceneMeshSnapshotANDROID برای ازبین بردن عکس آنی مش صحنه استفاده کند. وقتی دسته ازبین رفت، برنامه دیگر نمیتواند از آن برای دریافت اطلاعات یا دادههای زیرشبکه استفاده کند. وقتی ردیاب ازبین میرود، دسته بهطور خودکار ازبین میرود زیرا دسته ردیاب والد دسته عکس آنی مش صحنه است.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_scene_meshingباید قبلاز فراخوانی xrDestroySceneMeshSnapshotANDROID فعال شود -
snapshotباید شناسه مجازی XrSceneMeshSnapshotANDROID معتبری باشد
ایمنی رشتهای
- دسترسی به
snapshotو هرگونه دسته فرزند باید بهصورت خارجی همگامسازی شود
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
کد نمونه برای مشبندی صحنه
کد نمونه زیر نشان میدهد که چگونه میتوان به دادههای مش صحنه برای رندر کردن دسترسی پیدا کرد.
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup
XrSpace appPlaySpace; // Created at app startup
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateSceneMeshingTrackerANDROID xrCreateSceneMeshingTrackerANDROID;
PFN_xrDestroySceneMeshingTrackerANDROID xrDestroySceneMeshingTrackerANDROID;
PFN_xrEnumerateSupportedSemanticLabelSetsANDROID xrEnumerateSupportedSemanticLabelSetsANDROID;
PFN_xrCreateSceneMeshSnapshotANDROID xrCreateSceneMeshSnapshotANDROID;
PFN_xrDestroySceneMeshSnapshotANDROID xrDestroySceneMeshSnapshotANDROID;
PFN_xrGetAllSubmeshStatesANDROID xrGetAllSubmeshStatesANDROID;
PFN_xrGetSubmeshDataANDROID xrGetSubmeshDataANDROID;
// Inspect system capability
XrSystemSceneMeshingPropertiesANDROID sceneMeshingProps = {
.type = XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &sceneMeshingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!sceneMeshingProps.supportsSceneMeshing) {
// scene meshing is not supported.
return;
}
uint32_t supportedsemanticLabelSetsCount = 0;
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, 0, &supportedsemanticLabelSetsCount, nullptr);
std::vector<XrSceneMeshSemanticLabelSetANDROID> supportedSemanticLabelSets(
supportedsemanticLabelSetsCount);
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, supportedsemanticLabelSetsCount,
&supportedsemanticLabelSetsCount, supportedSemanticLabelSets.data());
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID;
// Check if system supports XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
if (std::find(supportedSemanticLabelSets.begin(), supportedSemanticLabelSets.end(),
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID) !=
supportedSemanticLabelSets.end()) {
semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID;
}
XrSceneMeshingTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID,
.semanticLabelSet = semanticLabelSet,
.enableNormals = XR_TRUE
};
XrSceneMeshingTrackerANDROID tracker = XR_NULL_HANDLE;
CHK_XR(xrCreateSceneMeshingTrackerANDROID(session, &trackerCreateInfo, &tracker));
XrSceneMeshSnapshotCreationResultANDROID snapshotResult {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID,
.snapshot = XR_NULL_HANDLE
};
XrSceneMeshSnapshotANDROID& snapshot = snapshotResult.snapshot;
XrSceneMeshSnapshotCreateInfoANDROID createInfo {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
};
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrBoxf box; // populated with the bounding box of the camera frustum
// ...
createInfo.baseSpace = appPlaySpace;
createInfo.time = time;
createInfo.boundingBox = box;
// Grab the scene mesh snapshot. This way the app can: know all of the submesh infos,
// choose the appropriate submeshes for which to get data, allocate the necessary
// buffer for those submeshes, and then get the data.
CHK_XR(xrCreateSceneMeshSnapshotANDROID(tracker, &createInfo, &snapshotResult));
// check the tracking state
if (snapshotResult.trackingState == XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID) {
// unrecoverable error. Exit the app.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
break;
} else if (snapshotResult.trackingState != XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID) {
// The tracker is not tracking. Try again later.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
continue;
}
// 2-call idiom for getting submesh states
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
std::vector<XrSceneSubmeshStateANDROID> states(submeshCount, {
.type = XR_TYPE_SCENE_SUBMESH_STATE_ANDROID,
});
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, submeshCount, &submeshCount, states.data()));
// To store the poses for the selected submeshes
std::vector<XrPosef> submeshesPoses;
submeshesPoses.reserve(submeshCount);
std::vector<XrSceneSubmeshDataANDROID> submeshes;
submeshes.reserve(submeshCount);
// Iterate the states and determine which submeshes the app wants data for
for (XrSceneSubmeshStateANDROID& state : states) {
// Modify this bool as necessary by looking at states. Maybe state.lastUpdatedTime
// is below a threshold or maybe the bounding box does not intersect with camera view
// frustum (The submesh will be culled).
bool needed;
if (needed) {
// Add the selected submesh to the submeshes list. Set the capacity
// zero for now since the size of the buffer will be determined later.
XrSceneSubmeshDataANDROID submesh {
.type = XR_TYPE_SCENE_SUBMESH_DATA_ANDROID,
.submeshId = state.submeshId,
.vertexCapacityInput = 0,
.vertexCountOutput = 0,
.vertexPositions = nullptr,
.vertexNormals = nullptr,
.vertexSemantics = nullptr,
.indexCapacityInput = 0,
.indexCountOutput = 0,
.indices = nullptr,
};
submeshes.push_back(submesh);
submeshesPoses.push_back(state.submeshPoseInBaseSpace);
}
}
// Grab the data for the selected submeshes using the 2-call idiom.
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
for (XrSceneSubmeshDataANDROID& submesh : submeshes) {
submesh.vertexCapacityInput = submesh.vertexCountOutput;
submesh.vertexCountOutput = 0;
submesh.vertexPositions = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCapacityInput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCapacityInput];
}
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
// Destroy the scene mesh snapshot since we have finally grabbed the submeshes data. In
// next iteration app can: create a new one to get latest mesh data
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
// Iterate the submeshes and get the vertex positions, vertex normals and
// vertex semantics data for the selected submeshes
for (uint32_t i = 0; i < submeshes.size(); i++) {
XrSceneSubmeshDataANDROID& data = submeshes[i];
XrVector3f* vertexPositions = data.vertexPositions;
XrVector3f* vertexNormals = data.vertexNormals;
XrSceneMeshSemanticLabelANDROID* vertexSemantics =
new XrSceneMeshSemanticLabelANDROID[data.vertexCountOutput];
for (uint32_t j = 0; j < data.vertexCountOutput; j++) {
vertexSemantics[j] =
static_cast<XrSceneMeshSemanticLabelANDROID>(data.vertexSemantics[j]);
}
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] vertexSemantics;
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
انواع شیء جدید
فرمانهای جدید
- xrCreateSceneMeshSnapshotANDROID
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
سازههای جدید
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneSubmeshDataANDROID
- XrSceneSubmeshStateANDROID
درحال گسترش دادن XrSystemProperties :
Enums جدید
ثابتهای شمارشی جدید
XR_ANDROID_SCENE_MESHING_EXTENSION_NAMEXR_ANDROID_scene_meshing_SPEC_VERSIONدرحال گسترش دادن XrObjectType :
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROIDXR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
درحال گسترش دادن XrStructureType :
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
مشکلات
سابقه نسخه
بازبینی ۳، ۲۰۲۵-۰۵-۱۵ (سالار خان)
- شرح اولیه افزونه