إضافة OpenXR‏ XR_ANDROID_unbounded_reference_space

سلسلة الاسم

XR_ANDROID_unbounded_reference_space

نوع الإضافة

إضافة مثيل

رقم الإضافة المسجَّل

468

المراجعة

1

التبعيات المتعلّقة بالإصدارات والإضافات

OpenXR 1.0

تاريخ آخر تعديل

2024-09-12

حالة عنوان IP

ما مِن مطالبات معروفة بعناوين IP.

المساهمون

سبنسر كوين، Google

جاريد فايندر، Google

فنغتاو فان، Google

"لاكلان فورد"، Google

نيهاف جاين، Google

ليفانا تشين، Google

نظرة عامة

تسمح هذه الإضافة للتطبيقات بإنشاء UNBOUNDED_ANDROID مساحة مرجعي ة. تتيح هذه المساحة المرجعية للمشاهد التنقّل بحرية في بيئة معقدة، غالبًا على بعد عدة أمتار من نقطة البداية، مع تحسين الأداء دائمًا لضمان استقرار نظام التنسيق بالقرب من المشاهد. وعندما يرصد الجهاز المزيد من العناصر المحيطة به لفهم المشهد بشكل أفضل، يمكن أن يتغيّر مصدر المساحة المرجعية مع إجراء تعديلات كبيرة حسب الضرورة للحفاظ على تتبُّع الجهاز.

لإنشاء UNBOUNDED_ANDROID مساحة مرجعية، يمكن للتطبيق ضبط XrReferenceSpaceCreateInfo::referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID ونقله إلى xrCreateReferenceSpace.

XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized

// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
    .type = XR_REFERENCE_SPACE_CREATE_INFO;
    .next = nullptr;
    .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
    .poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));

// After usage
CHK_XR(xrDestroySpace(referenceSpace));

تنشئ المساحة المرجعية UNBOUNDED_ANDROID نقطة مرجعية على مستوى العالم لموقع سماعة الرأس عند بدء تتبُّع الجهاز. ويتم ضبطه وفقًا لمجال الجاذبية لتجنُّب التمايل والانحراف، مع +X على اليمين و+Y للأعلى و-Z للأمام.

تكون مساحة UNBOUNDED_ANDROID مفيدة عندما يحتاج التطبيق إلى عرض محتوى على مستوى العالم يتجاوز حدود STAGE واحد، مثلاً، طابق كامل أو طوابق متعددة من مبنى.

تحافظ مساحة UNBOUNDED_ANDROID على ثباتها بالقرب من المشاهد من خلال تعديل مصدرها بمرور الوقت. يمكن أن تُجري تعديلات طفيفة وكبيرة عند الضرورة للحفاظ على تتبُّع الجهاز.

  • يجب ألا يضع وقت التشغيل الحدث XrEventDataReferenceSpaceChangePending في "قائمة الانتظار" استجابةً ل التعديلات البسيطة.
  • يجب أن يضع وقت التشغيل الحدث XrEventDataReferenceSpaceChangePending في "قائمة الانتظار" استجابةً لالتعديلات الكبيرة. على سبيل المثال، يتم إعادة ضبط الوضع في مساحة UNBOUNDED_ANDROID بسبب فقدان التتبّع، ويتم إعادة ضبط التتبّع استنادًا إلى تقدير غير متّصل للعالم ("خريطة جديدة").
  • يعمل النظام باستمرار على تعديل فهمه للعالم ويصعّد أو يخفض مستوى تتبُّع الأجهزة. إذا كان التطبيق يتطلّب موقعًا جغرافيًا ثابتًا بغض النظر عن عمليات إعادة ضبط التتبُّع، يمكن استخدام عنصر تثبيت في هذه الحالة.

حدث تغيير المساحة المرجعية

بالنسبة إلى المَعلمات التي تم تحديدها من خلال بنية XrEventDataReferenceSpaceChangePending التي تم عرضها في أحداث تغيير العالم أو تحسين إعادة تحديد الموقع الجغرافي:

typedef struct XrEventDataReferenceSpaceChangePending {
    XrStructureType         type;
    const void*             next;
    XrSession               session;
    XrReferenceSpaceType    referenceSpaceType;
    XrTime                  changeTime;
    XrBool32                poseValid;
    XrPosef                 poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;

أوصاف الأعضاء

  • referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.
  • يمثّل changeTime XrTime الذي اكتمل فيه إعادة تحديد الموقع الجغرافي.
  • سيكون poseValid false بسبب التقدير غير المتصل بالإنترنت أو true بعد إعادة الاتصال.
  • لن تكون قيمة poseInPreviousSpace صالحة عندما تكون قيمة poseValid هي false.

عندما تفقد المشاهدات أو عناصر التحكّم أو المساحات الأخرى إمكانية التتبّع بالنسبة إلى المساحة UNBOUNDED_ANDROID، يمكن للتطبيقات مواصلة تلقّي قيم position وorientation المستنتَجة أو آخر قيم معروفة. يمكن أن تستند هذه الوضعيات المستنتجة، مثلاً، إلى تعديلات على نموذج الرقبة أو التقدير النيوي بالقصور الذاتي أو الموضع المعروف الأخير. يمكن للتطبيق افتراض أنّه سيستمر في ضبط XR_SPACE_LOCATION_POSITION_VALID_BIT و XR_VIEW_STATE_POSITION_VALID_BIT، ولكن قد يتم محو XR_SPACE_LOCATION_POSITION_TRACKED_BIT و XR_VIEW_STATE_POSITION_TRACKED_BIT من خلال وقت التشغيل للإشارة إلى أنّه تم استنتاج الموضع أو آخر موضع معروف بهذه الطريقة.

عند استعادة التتبّع، قد يعيد وقت التشغيل إعادة ضبط مصدر الإعلان بشكل عشوائي، على سبيل المثال، نقل المصدر ليتزامن مع المشاهد. يمكن للتطبيق التحقّق من قيمة poseValid المعروضة من حدث XrEventDataReferenceSpaceChangePending لتحديد ما إذا كان جاهزًا للاستخدام.

أنواع العناصر الجديدة

أنواع الإبلاغ الجديدة

ثوابت قائمة التعداد الجديدة

تمّت إضافة ما يلي إلى التعداد XrReferenceSpaceType:

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

عمليات التعداد الجديدة

التصاميم الجديدة

الدوالّ الجديدة

المشاكل

سجلّ الإصدارات

  • المراجعة 1، ‎12-09-2024 (ليفانا تشين)
    • الوصف الأولي للإضافة