تتوفّر حزمة تطوير البرامج (SDK) لنظام Android XR الآن في "معاينة المطوّر". يهمّنا معرفة ملاحظاتك. يُرجى الانتقال إلى
صفحة الدعم للتواصل معنا.
إضافة 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 (ليفانا تشين)
OpenXR™ وشعار OpenXR هما علامتان تجاريتان مملوكتان
لشركة The Khronos Group Inc. ومسجَّلتان كعلامتَين تجاريتَين في الصين
والاتحاد الأوروبي واليابان والمملكة المتحدة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# XR_ANDROID_unbounded_reference_space OpenXR extension\n\n**Name String**\n\n`XR_ANDROID_unbounded_reference_space`\n\n**Extension Type**\n\nInstance extension\n\n**Registered Extension Number**\n\n468\n\n**Revision**\n\n1\n\n**Extension and Version Dependencies**\n\n[OpenXR 1.0](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#versions-1.0)\n\n**Last Modified Date**\n\n2024-09-12\n\n**IP Status**\n\nNo known IP claims.\n\n**Contributors**\n\nSpencer Quin, Google\n\nJared Finder, Google\n\nFengtao Fan, Google\n\nLachlan Ford, Google\n\nNihav Jain, Google\n\nLevana Chen, Google\n\nOverview\n--------\n\nThis extension allows applications to create an `UNBOUNDED_ANDROID` reference\nspace. This reference space enables the viewer to move freely through a complex\nenvironment, often many meters from where they started, while always optimizing\nfor coordinate system stability near the viewer. As the device senses more of\nits environment to build a better scene understanding, the origin of the\nreference space **can** drift with **huge adjustments** as necessary to maintain\ndevice tracking.\n\nTo create an `UNBOUNDED_ANDROID` reference space, the application **can** set\n[XrReferenceSpaceCreateInfo::referenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceCreateInfo)\n`XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID` and pass to\n[xrCreateReferenceSpace](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#xrCreateReferenceSpace). \n\n XrInstance instance; // previously initialized\n XrSession session; // previously initialized\n XrPosef pose; // previously initialized\n\n // Use the new reference space type in the create info struct\n XrReferenceSpaceCreateInfo createInfo = {\n .type = XR_REFERENCE_SPACE_CREATE_INFO;\n .next = nullptr;\n .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;\n .poseInReferenceSpace = pose;\n }\n XrSpace referenceSpace;\n CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));\n\n // After usage\n CHK_XR(xrDestroySpace(referenceSpace));\n\nThe `UNBOUNDED_ANDROID` reference space establishes a world-locked origin of the\nheadset's position when the device tracking starts. It is gravity-aligned to\nexclude pitch and roll, with +X to the right, +Y up, and -Z forward.\n\n`UNBOUNDED_ANDROID` space is useful when an application needs to render\n**world-scale** content that spans beyond the bounds of a single `STAGE`, for\nexample, an entire floor or multiple floors of a building.\n\nAn `UNBOUNDED_ANDROID` space maintains stability near the viewer by adjusting\nits origin over time. It **can** make **slight** and **huge** adjustments as\nnecessary to maintain device tracking.\n\n- The runtime **should** not queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **minor adjustments**.\n- The runtime **should** queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **huge adjustments** . For example, the pose in `UNBOUNDED_ANDROID` space is reset due to a tracking loss and the tracking is re-established on a disconnected estimate of the world (a \"new map\").\n- The system is constantly updating its understanding of the world and adjusting device tracking. If an application requires a persisted location regardless of tracking resets, an anchor **can** be used in this case.\n\nReference space change event\n----------------------------\n\nFor parameters defined by\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) structure that returned\non world changing or optimizing relocalization events: \n\n typedef struct XrEventDataReferenceSpaceChangePending {\n XrStructureType type;\n const void* next;\n XrSession session;\n XrReferenceSpaceType referenceSpaceType;\n XrTime changeTime;\n XrBool32 poseValid;\n XrPosef poseInPreviousSpace;\n } XrEventDataReferenceSpaceChangePending;\n\n### Member Descriptions\n\n- `referenceSpaceType` is `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`.\n- `changeTime` will represent the [`XrTime`](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrTime) at which relocalization completed.\n- `poseValid` will be `false` due to the disconnected estimate or `true` after reconnected.\n- `poseInPreviousSpace` won't be valid when `poseValid` is `false`.\n\nWhen views, controllers or other spaces experience tracking loss relative to the\n`UNBOUNDED_ANDROID` space, applications **can** continue to receive inferred\nor last-known `position` and `orientation` values. These inferred poses **can** ,\nfor example, be based on neck model updates, inertial dead reckoning, or a\nlast-known position. An application can assume that it will continue to have the\n`XR_SPACE_LOCATION_POSITION_VALID_BIT` and\n`XR_VIEW_STATE_POSITION_VALID_BIT` set, but\n`XR_SPACE_LOCATION_POSITION_TRACKED_BIT` and\n`XR_VIEW_STATE_POSITION_TRACKED_BIT` may be cleared by the runtime to indicate\nthat the position is inferred or last-known in this way.\n\nWhen tracking is recovered, the runtime **may** recenter the origin\narbitrarily, for example moving the origin to coincide with the viewer. An\napplication **can** check the `poseValid` value returned from the\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event to determine if it's ready to\nuse.\n\n**New Object Types**\n\n**New Flag Types**\n\n**New Enum Constants**\n\n[XrReferenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceType) enumeration is extended with:\n\n- `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`\n\n**New Enums**\n\n**New Structures**\n\n**New Functions**\n\n**Issues**\n\n**Version History**\n\n- Revision 1, 2024-09-12 (Levana Chen)\n - Initial extension description\n\n*** ** * ** ***\n\nOpenXR™ and the OpenXR logo are trademarks owned\nby The Khronos Group Inc. and are registered as a trademark in China,\nthe European Union, Japan and the United Kingdom."]]