Android XR SDK اکنون در پیش نمایش برنامه نویس در دسترس است. ما بازخورد شما را می خواهیم! برای ارتباط با ما به
صفحه پشتیبانی ما مراجعه کنید.
XR_ANDROID_unbounded_reference_space پسوند OpenXR
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
رشته نام
XR_ANDROID_unbounded_reference_space
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
468
تجدید نظر
1
وابستگی های افزونه و نسخه
OpenXR 1.0
آخرین تاریخ اصلاح
12-09-2024
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
اسپنسر کوین، گوگل
جارد فایندر، گوگل
فن فنگتائو، گوگل
لاچلان فورد، گوگل
نیهاو جین، گوگل
لوانا چن، گوگل
نمای کلی
این برنامه افزودنی به برنامه های کاربردی اجازه می دهد تا یک فضای مرجع 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
یک مبدأ قفل جهانی موقعیت هدست را تعیین می کند. با گرانش تراز شده است تا pitch and roll را حذف کند، با +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
پس از اتصال مجدد خواهد بود. - وقتی
poseValid
false
باشد poseInPreviousSpace
معتبر نخواهد بود.
هنگامی که نماها، کنترلکنندهها یا فضاهای دیگر نسبت به فضای 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 را بررسی کند تا مشخص کند آیا آماده استفاده است یا خیر.
انواع اشیاء جدید
انواع پرچم جدید
ثابت های جدید Enum
شمارش XrReferenceSpaceType با:
-
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
فهرست های جدید
ساختارهای جدید
توابع جدید
مسائل
تاریخچه نسخه
- بازبینی 1، 12/09/2024 (لوانا چن)
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]