رشته نام
XR_ANDROID_trackables
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
456
تجدید نظر
1
وابستگی های افزونه و نسخه
آخرین تاریخ اصلاح
30-09-2024
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
اسپنسر کوین، گوگل
نیهاو جین، گوگل
جان پورسی، گوگل
جارد فایندر، گوگل
لوانا چن، گوگل
کنی ورکامر، گوگل
نمای کلی
این برنامه افزودنی به برنامه اجازه می دهد تا به ردیابی ها از محیط فیزیکی دسترسی داشته باشد و لنگرهای متصل به یک ردیابی ایجاد کند.
این برنامه افزودنی ردیابی هواپیما را تعریف می کند. سایر برنامه های افزودنی ممکن است انواع قابل ردیابی اضافی را اضافه کنند. به عنوان مثال XR_ANDROID_trackables_object
ردیابیهای شی را اضافه میکند و XR_ANDROID_depth_texture
بافرهای عمقی را اضافه میکند که امکان ارسال پرتو به نقاط دلخواه در محیط را فراهم میکند.
ردیابی چیزی است که در محیط فیزیکی ردیابی می شود (به XrTrackableTypeANDROID مراجعه کنید):
- یک هواپیما (به عنوان مثال دیوار، کف، سقف، میز)
- یک شی (به عنوان مثال صفحه کلید، ماوس، لپ تاپ)
یک ردیاب قابل ردیابی ایجاد کنید
XrTrackableTrackerANDROID دستهای است که منابع مورد نیاز برای کشف و بهروزرسانی ردیابیهای یک XrTrackableTypeANDROID معین را در محیط نشان میدهد.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
تابع xrCreateTrackableTrackerANDROID به صورت زیر تعریف می شود:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
توضیحات پارامترها
-
session
XrSession است که ردیاب را ایجاد می کند. -
createInfo
یک اشاره گر به ساختار XrTrackableTrackerCreateInfoANDROID است که حاوی پارامترهایی است که برای ایجاد ردیاب استفاده می شود. -
trackableTracker
یک اشاره گر به یک دسته است که در آن XrTrackableTrackerANDROID ایجاد شده برگردانده می شود.
این برنامه می تواند از عملکرد xrCreateTrackableTrackerANDROID برای ایجاد یک ردیاب قابل ردیابی استفاده کند.
-
XR_ERROR_FEATURE_UNSUPPORTED
اگر سیستم از ردیابیهای نوع مشخص شده پشتیبانی نکند، بازگردانده میشود. - اگر مجوزهای لازم به برنامه تماس اعطا نشده باشد،
XR_ERROR_PERMISSION_INSUFFICIENT
برگردانده خواهد شد.
برنامه میتواند از دسته ردیاب برگشتی در تماسهای API بعدی استفاده کند. دسته XrTrackableTrackerANDROID باید در نهایت با استفاده از تابع xrDestroyTrackableTrackerANDROID آزاد شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از فراخوانی xrCreateTrackableTrackerANDROID فعال شود -
session
باید یک دسته XrSession معتبر باشد -
createInfo
باید نشانگر یک ساختار معتبر XrTrackableTrackerCreateInfoANDROID باشد -
trackableTracker
باید یک اشاره گر به دسته XrTrackableTrackerANDROID باشد
کدهای بازگشت
-
XR_SUCCESS
-
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED
-
XR_ERROR_VALIDATION_FAILURE
-
XR_ERROR_RUNTIME_FAILURE
-
XR_ERROR_HANDLE_INVALID
-
XR_ERROR_INSTANCE_LOST
-
XR_ERROR_SESSION_LOST
-
XR_ERROR_OUT_OF_MEMORY
-
XR_ERROR_LIMIT_REACHED
-
XR_ERROR_FEATURE_UNSUPPORTED
ساختار XrTrackableTrackerCreateInfoANDROID به صورت زیر تعریف می شود:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
trackableType
XrTrackableTypeANDROID است که ردیاب آن را ردیابی می کند.
ساختار XrTrackableTrackerCreateInfoANDROID گزینه های ایجاد XrTrackableTrackerANDROID را هنگامی که به xrCreateTrackableTrackerANDROID منتقل می شود، ارائه می دهد.
برنامههای افزودنی ممکن است ساختارهایی را تعریف کنند که میتوانند به next
متصل شوند تا پیکربندی اضافی برای ردیابهای قابل ردیابی را فراهم کنند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_trackables
باید قبل از استفاده از XrTrackableTrackerCreateInfoANDROID فعال شود -
type
بایدXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
باشد -
next
بایدNULL
یا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد. همچنین ببینید: XrTrackableObjectConfigurationANDROID -
trackableType
باید یک مقدار معتبر XrTrackableTypeANDROID باشد
شماره XrTrackableTypeANDROID به صورت زیر تعریف می شود:
typedef enum XrTrackableTypeANDROID {
XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;
تابع xrDestroyTrackableTrackerANDROID به صورت زیر تعریف می شود:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
توضیحات پارامترها
-
trackableTracker
یک دسته XrTrackableTrackerANDROID است که قبلا توسط xrCreateTrackableTrackerANDROID ایجاد شده است.
تابع xrDestroyTrackableTrackerANDROID ردیاب قابل ردیابی را از بین می برد.
اگر XrTrackableTrackerANDROID معتبر دیگری وجود نداشته باشد که با همان XrTrackableTypeANDROID ایجاد شده باشد، سیستم ممکن است خدمات ردیابی مورد نیاز برای آن نوع قابل ردیابی را غیرفعال کند تا منابع سیستم ذخیره شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از فراخوانی xrDestroyTrackableTrackerANDROID فعال شود -
trackableTracker
باید یک دسته معتبر XrTrackableTrackerANDROID باشد
ایمنی نخ
- دسترسی به
trackableTracker
و هر دسته کودک باید به صورت خارجی همگام شود
کدهای بازگشت
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED
-
XR_ERROR_HANDLE_INVALID
همه موارد قابل پیگیری را دریافت کنید
اتم XrTrackableANDROID
به صورت زیر تعریف می شود:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID
برای نشان دادن یک ردیابی منفرد استفاده می شود و فقط در چرخه عمر XrTrackableTrackerANDROID مرتبط با آن معتبر است.
تابع xrGetAllTrackablesANDROID به صورت زیر تعریف می شود:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
توضیحات پارامترها
trackableTracker
XrTrackableTracker ANDROID برای پرس و جو است.trackableCapacityInput
ظرفیت آرایهtrackables
یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است.trackableCountOutput
یک اشارهگر به تعدادtrackables
نوشته شده است، یا اشارهگر به ظرفیت مورد نیاز در مواردی کهtrackables
کافی نیست.trackables
یک اشاره گر به آرایه ای ازXrTrackableANDROID
است. اگرtrackableCapacityInput
0 باشد می تواندNULL
باشد.برای توضیحات مفصل در مورد بازیابی اندازه
trackables
مورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
xrGetAllTrackablesANDROID آرایه ای از XrTrackableANDROID
را پر می کند که نشان دهنده ردیابی های موجود در محیط است. XrTrackableTypeANDROID trackables
برگشتی باید با XrTrackableTypeANDROID trackableTracker
مطابقت داشته باشد.
هواپیمای قابل ردیابی بگیرید
تابع xrGetTrackablePlaneANDROID به صورت زیر تعریف می شود:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
توضیحات پارامترها
trackableTracker
XrTrackableTracker ANDROID برای پرس و جو است.getInfo
XrTrackableGetInfoANDROID با اطلاعات مورد استفاده برای دریافت هواپیمای قابل ردیابی است.planeOutput
یک اشاره گر به ساختار XrTrackablePlaneANDROID است که در آن صفحه قابل ردیابی برگردانده می شود.
تابع xrGetTrackablePlaneANDROID جزئیات مربوط به صفحه قابل ردیابی، مانند هندسه، جهت و وضعیت ردیابی آن را برمی گرداند.
اطلاعات صفحه در زمان تماس با xrGetTrackablePlaneANDROID با استفاده از XrTrackableGetInfoANDROID::time، XrTrackableGetInfoANDROID::baseSpace، نسبت به فضای پایه حل می شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از تماس با xrGetTrackablePlaneANDROID فعال شود -
trackableTracker
باید یک دسته معتبر XrTrackableTrackerANDROID باشد -
getInfo
باید یک اشاره گر به یک ساختار معتبر XrTrackableGetInfoANDROID باشد -
planeOutput
باید یک اشاره گر به یک ساختار XrTrackablePlaneANDROID باشد
کدهای بازگشت
-
XR_SUCCESS
-
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED
-
XR_ERROR_VALIDATION_FAILURE
-
XR_ERROR_RUNTIME_FAILURE
-
XR_ERROR_HANDLE_INVALID
-
XR_ERROR_INSTANCE_LOST
-
XR_ERROR_SESSION_LOST
-
XR_ERROR_LIMIT_REACHED
-
XR_ERROR_TIME_INVALID
ساختار XrTrackableGetInfoANDROID به صورت زیر تعریف می شود:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
trackable
صفحهXrTrackableANDROID
برای پرس و جو است. -
baseSpace
وضعیت هواپیما درtime
نسبت به این XrSpace خواهد بود. -
time
XrTime
است که در آن مختصات نسبت بهbaseSpace
ارزیابی می شود.
ساختار XrTrackableGetInfoANDROID هنگامی که به xrGetTrackablePlaneANDROID ارسال می شود، گزینه های پرس و جو را ارائه می دهد. trackable
باید با trackableTracker
مورد استفاده در xrGetTrackablePlaneANDROID مطابقت داشته باشد.
اگر نوع قابل ردیابی trackable
XR_TRACKABLE_TYPE_PLANE_ANDROID
نباشد، XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
برگردانده خواهد شد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_trackables
باید قبل از استفاده از XrTrackableGetInfoANDROID فعال شود -
type
بایدXR_TYPE_TRACKABLE_GET_INFO_ANDROID
باشد -
next
بایدNULL
یا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد -
baseSpace
باید یک دسته XrSpace معتبر باشد
ساختار XrTrackablePlaneANDROID به صورت زیر تعریف می شود:
typedef struct XrTrackablePlaneANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent2Df extents;
XrPlaneTypeANDROID planeType;
XrPlaneLabelANDROID planeLabel;
XrTrackableANDROID subsumedByPlane;
XrTime lastUpdatedTime;
uint32_t vertexCapacityInput;
uint32_t* vertexCountOutput;
XrVector2f* vertices;
} XrTrackablePlaneANDROID;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
trackingState
XrTrackingStateANDROID هواپیما است. -
centerPose
یک XrPosef است که موقعیت و جهت صفحه را در چارچوب مرجع XrTrackableGetInfoANDROID::baseSpace مربوطه تعریف می کند. یک جهت هویت در اینجا نشان دهنده یک محور مختصات با +Y موازی با نرمال صفحه است. -
extents
بعد XrExtent2Df هواپیما است. -
planeType
XrPlaneTypeANDROID است که زمان اجرا برای این هواپیما مشخص شده است. -
planeLabel
XrPlaneLabelANDROID است که زمان اجرا برای این صفحه تعیین شده است. -
subsumedByPlane
XrTrackableANDROID
صفحه ای است که زیرمجموعه این صفحه است (در صورت وجودXR_NULL_TRACKABLE_ANDROID
). -
lastUpdatedTime
XrTime
آخرین به روز رسانی هواپیما است. -
vertexCapacityInput
ظرفیت آرایهvertices
یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است. -
vertexCountOutput
یک اشاره گر برای تعدادvertices
نوشته شده، یا یک اشاره گر به ظرفیت مورد نیاز در صورتی کهvertices
کافی نیست. -
vertices
یک اشاره گر به آرایه ای از XrVector2f است. اگرvertexCapacityInput
0 باشد، می تواندNULL
باشد. راس ها به ترتیب خلاف جهت عقربه های ساعت هستند. چند ضلعی ممکن است مقعر باشد و نباید خود متقاطع باشد. - برای توضیح دقیق بازیابی اندازه
vertices
مورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از استفاده از XrTrackablePlaneANDROID فعال شود -
type
بایدXR_TYPE_TRACKABLE_PLANE_ANDROID
باشد -
next
بایدNULL
یا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد -
trackingState
باید یک مقدار معتبر XrTrackingStateANDROID باشد -
planeType
باید یک مقدار معتبر XrPlaneTypeANDROID باشد -
planeLabel
باید یک مقدار معتبر XrPlaneLabelANDROID باشد -
vertexCountOutput
باید یک اشاره گر به یک مقدارuint32_t
باشد -
vertices
باید نشانگر آرایه ای از ساختارهایvertexCapacityInput
XrVector2f باشند. - پارامتر
vertexCapacityInput
باید بزرگتر از0
باشد
فهرست XrTrackingStateANDROID وضعیت ردیابی یک XrTrackableANDROID
را توصیف می کند.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
توضیحات | |
| نشان می دهد که ردیابی قابل ردیابی یا لنگر متوقف شده است اما ممکن است در آینده از سر گرفته شود. |
| ردیابی در این Trackable متوقف شده است و هرگز از سر گرفته نخواهد شد. |
| شی ردیابی می شود و وضعیت آن جاری است. |
شماره XrPlaneTypeANDROID نوع یک هواپیمای XrTrackableANDROID
است.
typedef enum XrPlaneTypeANDROID {
XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;
XrPlaneLabelANDROID enum یک برچسب برای هواپیمای XrTrackableANDROID
است.
typedef enum XrPlaneLabelANDROID {
XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
XR_PLANE_LABEL_WALL_ANDROID = 1,
XR_PLANE_LABEL_FLOOR_ANDROID = 2,
XR_PLANE_LABEL_CEILING_ANDROID = 3,
XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;
فضای لنگر ایجاد کنید
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
توضیحات پارامترها
-
session
XrSession است که فضای لنگر را ایجاد می کند. -
createInfo
یک اشاره گر به یک ساختار XrAnchorSpaceCreateInfoANDROID است که حاوی پارامترهایی است که برای ایجاد فضای لنگر استفاده می شود. -
anchorOutput
یک اشاره گر به یک دسته است که در آن XrSpace ایجاد شده برگردانده می شود.
در هر نقطه از زمان هم موقعیت و هم جهت لنگر ردیابی می شود یا ردیابی نمی شود. این بدان معناست که هر دو XR_SPACE_LOCATION_POSITION_TRACKED_BIT
و XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT
باید تنظیم شوند یا هر دو باید پاک شوند زمانی که برنامه xrLocateSpace یا xrLocateSpaces را برای anchorOutput
فرا می خواند.
برنامه در نهایت باید XrSpace برگشتی را با استفاده از xrDestroySpace آزاد کند.
- اگر سیستم از لنگرها پشتیبانی نمیکند،
XR_ERROR_FEATURE_UNSUPPORTED
باید برگردانده شود. - اگر پیوست لنگر خاص پشتیبانی نمیشود،
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
باید برگردانده شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از فراخوانی xrCreateAnchorSpaceANDROID فعال شود -
session
باید یک دسته XrSession معتبر باشد -
createInfo
باید نشانگر یک ساختار معتبر XrAnchorSpaceCreateInfoANDROID باشد -
anchorOutput
باید یک اشاره گر به دسته XrSpace باشد
کدهای بازگشت
-
XR_SUCCESS
-
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED
-
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
-
XR_ERROR_VALIDATION_FAILURE
-
XR_ERROR_RUNTIME_FAILURE
-
XR_ERROR_HANDLE_INVALID
-
XR_ERROR_INSTANCE_LOST
-
XR_ERROR_SESSION_LOST
-
XR_ERROR_LIMIT_REACHED
-
XR_ERROR_POSE_INVALID
-
XR_ERROR_TIME_INVALID
-
XR_ERROR_OUT_OF_MEMORY
ساختار XrAnchorSpaceCreateInfoANDROID به صورت زیر تعریف می شود:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
space
XrSpace است که لنگر روی آن ایجاد می شود. -
time
XrTime
ایجاد لنگر است. -
pose
XrPosef لنگر است. -
trackable
XrTrackableANDROID
است که لنگر روی آن وصل خواهد شد. ممکن استXR_NULL_TRACKABLE_ANDROID
ایجاد یک لنگر فضایی باشد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_trackables
باید قبل از استفاده از XrAnchorSpaceCreateInfoANDROID فعال شود -
type
بایدXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
باشد -
next
بایدNULL
یا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد -
space
باید یک دسته XrSpace معتبر باشد
کد مثال برای دریافت همه موارد قابل پیگیری
کد مثال زیر نشان می دهد که چگونه می توان همه ردیابی ها را از یک نوع مشخص دریافت کرد.
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allPlaneTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allPlaneTrackables) {
// You now have all trackables of the specified type.
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);
کد مثال برای گرفتن هواپیمای قابل ردیابی
کد مثال زیر نشان می دهد که چگونه می توان یک هواپیمای قابل ردیابی را از یک XrTrackableANDROID
موجود بدست آورد که از یک نتیجه ضربه ای XR_ANDROID_raycast
یا xrGetTrackablesANDROID
بدست می آید.
XrTrackableTrackerANDROID planeTracker; // previously created
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;
XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
planeTracker,
&planeGetInfo,
&plane
);
if (result == XR_SUCCESS) {
// Plane tracking state, center pose, extents, type now available in plane.
}
کد مثال برای ایجاد فضای لنگر
کد مثال زیر نحوه ایجاد یک فضای لنگر متصل به یک ردیابی را نشان می دهد.
XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };
XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&spatialAnchorCreateInfo,
&spatialAnchor
);
// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;
XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&trackableAnchorCreateInfo,
&trackableAnchor
);
while (true) {
// app update loop
// ...
// Get the current location of the anchor's space w.r.t the world.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);
if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
// Update anchor pose.
doDrawingForAnchor(anchorLocation.pose);
} else {
// ...
}
}
// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);
انواع پایه جدید
انواع اشیاء جدید
ثابت های جدید Enum
شمارش XrStructureType با:
-
XR_TYPE_TRACKABLE_GET_INFO_ANDROID
-
XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
-
XR_TYPE_TRACKABLE_PLANE_ANDROID
-
XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
شمارش XrObjectType با:
-
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
شمارش XrResult با:
-
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
-
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
فهرست های جدید
ساختارهای جدید
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
توابع جدید
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 27/09/2024 (کنی ورکامر)
- توضیحات پسوند اولیه