رشته نام
XR_ANDROID_eye_tracking
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
457
تجدید نظر
1
وابستگی های افزونه و نسخه
آخرین تاریخ اصلاح
17-01-2025
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
اسپنسر کوین، گوگل
جارد فایندر، گوگل
لوانا چن، گوگل
کنی ورکامر، گوگل
پراسانتی گورمورتی، گوگل
نیهاو جین، گوگل
نمای کلی
این برنامه افزودنی به برنامه ها امکان می دهد موقعیت و جهت چشم های کاربر و همچنین وضعیت ردیابی چشم را بدست آورند.
داده های ردیابی چشم در دو حالت درشت و ریز ارائه می شود. ردیابی درشت تخمین درشتی از چشم کاربر ارائه می دهد، در حالی که ردیابی دقیق تخمین دقیق تری ارائه می دهد. ردیابی درشت برای برنامههایی است که میخواهند نمایشی شبیه به آواتار ارائه دهند، در حالی که ردیابی دقیق برای برنامههای کاربردی دقیقتر است.
برای تعامل باید از XR_EXT_eye_gaze_interaction استفاده شود.
قابلیت سیستم را بررسی کنید
ساختار XrSystemEyeTrackingPropertiesANDROID به صورت زیر تعریف می شود:
typedef struct XrSystemEyeTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsEyeTracking;
} XrSystemEyeTrackingPropertiesANDROID;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
supportsEyeTrackingیکXrBool32است که نشان میدهد آیا سیستم فعلی از ردیابی چشم پشتیبانی میکند یا خیر.
هنگام فراخوانی xrGetSystemProperties XrSystemEyeTrackingPropertiesANDROID برنامه کاربردی می تواند بررسی کند که آیا سیستم قادر به ردیابی چشم است یا خیر. اگر supportsEyeTracking XR_FALSE را برگرداند، برنامه XR_ERROR_FEATURE_UNSUPPORTED از xrCreateEyeTrackerANDROID دریافت خواهد کرد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از استفاده ازXrSystemEyeTrackingPropertiesANDROIDفعال شود -
typeبایدXR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد
یک دسته ردیاب چشم ایجاد کنید
XR_DEFINE_HANDLE(XrEyeTrackerANDROID)
دسته XrEyeTrackerANDROID یک ردیاب چشم برای ردیابی چشم ها را نشان می دهد و به طور دقیق آنچه کاربر به آن نگاه می کند را ترسیم می کند.
داده های ردیابی چشم می تواند اطلاعات شخصی حساس باشد و ارتباط نزدیکی با حریم خصوصی و یکپارچگی شخصی دارد. اکیداً توصیه میشود که برنامههایی که دادههای ردیابی چشم را ذخیره یا انتقال میدهند همیشه از کاربر درخواست پذیرش فعال و خاص برای انجام این کار را داشته باشند.
از این دسته می توان برای دسترسی به داده های ردیابی چشم با استفاده از سایر عملکردهای این افزونه استفاده کرد.
ردیابی چشم وضعیت و وضعیت چشم را در صحنه نمایش می دهد.
تابع xrCreateEyeTrackerANDROID به صورت زیر تعریف می شود:
XrResult xrCreateEyeTrackerANDROID(
XrSession session,
const XrEyeTrackerCreateInfoANDROID* createInfo,
XrEyeTrackerANDROID* eyeTracker);
توضیحات پارامترها
-
sessionیک دستهXrSessionاست که ردیابی چشم در آن فعال خواهد بود. -
createInfoXrEyeTrackerCreateInfoANDROIDاست که برای تعیین ردیابی چشم استفاده می شود. -
eyeTrackerدستهXrEyeTrackerANDROIDبرگشتی است.
یک برنامه می تواند با استفاده از تابع xrCreateEyeTrackerANDROID یک دسته XrEyeTrackerANDROID ایجاد کند.
اگر سیستم از ردیابی چشم پشتیبانی نمی کند، XR_ERROR_FEATURE_UNSUPPORTED از xrCreateEyeTrackerANDROID برگردانده می شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از فراخوانیxrCreateEyeTrackerANDROIDفعال شود -
sessionباید یک دستهXrSessionمعتبر باشد -
createInfoباید یک اشاره گر به یک ساختار معتبرXrEyeTrackerCreateInfoANDROIDباشد -
eyeTrackerباید یک اشاره گر به دستهXrEyeTrackerANDROIDباشد
کدهای بازگشت
-
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
ساختار XrEyeTrackerCreateInfoANDROID به صورت زیر تعریف می شود:
typedef struct XrEyeTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
} XrEyeTrackerCreateInfoANDROID;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است.
ساختار XrEyeTrackerCreateInfoANDROID اطلاعاتی را برای ایجاد یک دسته XrEyeTrackerANDROID توصیف می کند.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از استفاده ازXrEyeTrackerCreateInfoANDROIDفعال شود -
typeبایدXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد
تابع xrDestroyEyeTrackerANDROID به صورت زیر تعریف می شود:
XrResult xrDestroyEyeTrackerANDROID(
XrEyeTrackerANDROID eyeTracker);
توضیحات پارامترها
-
eyeTrackerیکXrEyeTrackerANDROIDاست که قبلا توسطxrCreateEyeTrackerANDROIDایجاد شده است.
تابع xrDestroyEyeTrackerANDROID پس از اتمام تجربه ردیابی چشم، eyeTracker و منابع زیرین را آزاد می کند.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از فراخوانیxrDestroyEyeTrackerANDROIDفعال شود -
eyeTrackerباید یک دسته معتبرXrEyeTrackerANDROIDباشد.
ایمنی نخ
- دسترسی به
eyeTrackerو هر دسته کودک باید به صورت خارجی همگام شود
کدهای بازگشت
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID
دریافت اطلاعات چشم
تابع xrGetCoarseTrackingEyesInfoANDROID به صورت زیر تعریف می شود:
XrResult xrGetCoarseTrackingEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* eyesOutput);
توضیحات پارامترها
-
eyeTrackerیکXrEyeTrackerANDROIDاست که قبلا توسطxrCreateEyeTrackerANDROIDایجاد شده است. -
getInfoیک اشاره گر بهXrEyesGetInfoANDROIDاست که برای تعیین خروجی مورد نیاز استفاده می شود. -
infoOutputیک اشاره گر بهXrEyesANDROIDاست که حاوی اطلاعات بازگشتی چشم از جمله وضعیت ها و وضعیت ها است.
تابع xrGetCoarseTrackingEyesInfoANDROID اطلاعات حالت های چشم را دریافت می کند و به گونه ای حالت می گیرد که حریم خصوصی کاربر حفظ شود.
اگر برنامه مجوز android.permission.EYE_TRACKING_COARSE را ندارد، زمان اجرا باید XR_ERROR_PERMISSION_INSUFFICIENT برگرداند.
اطلاعات چشم در زمان تماس با xrGetCoarseTrackingEyesInfoANDROID با استفاده از XrEyesGetInfoANDROID::time ، XrEyesGetInfoANDROID::baseSpace ، حل و فصل شده و نسبت به فضای پایه است.
در هر نقطه از زمان هم موقعیت و هم جهت ژست چشم ردیابی می شود یا ردیابی نمی شود. این بدان معناست که برنامهها میتوانند انتظار داشته باشند که XR_SPACE_LOCATION_POSITION_TRACKED_BIT و XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT روی XrEyesANDROID::eyes ارائهشده تنظیم یا پاک شوند و XrEyesANDROID::mode وضعیت ردیابی را نشان میدهد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از تماس باxrGetCoarseTrackingEyesInfoANDROIDفعال شود -
eyeTrackerباید یک دسته معتبرXrEyeTrackerANDROIDباشد -
getInfoباید نشانگر یک ساختار معتبرXrEyesGetInfoANDROIDباشد -
eyesOutputباید یک اشاره گر به یک ساختارXrEyesANDROIDباشد
کدهای بازگشت
-
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_TIME_INVALID -
XR_ERROR_PERMISSION_INSUFFICIENT
تابع xrGetFineTrackingEyesInfoANDROID به صورت زیر تعریف میشود: {:#xrGetFineTrackingEyesInfoANDROID} C++ XrResult xrGetFineTrackingEyesInfoANDROID( XrEyeTrackerANDROID eyeTracker, const XrEyesGetInfoANDROID* getInfo, XrEyesANDROID* eyesOutput);
توضیحات پارامترها
-
eyeTrackerیکXrEyeTrackerANDROIDاست که قبلا توسطxrCreateEyeTrackerANDROIDایجاد شده است. -
getInfoیک اشاره گر بهXrEyesGetInfoANDROIDاست که برای تعیین خروجی مورد نیاز استفاده می شود. -
infoOutputیک اشاره گر بهXrEyesANDROIDاست که حاوی اطلاعات بازگشتی چشم از جمله وضعیت ها و وضعیت ها است. تابعxrGetFineTrackingEyesInfoANDROIDاطلاعات مربوط به حالات و وضعیت های چشم را با دقت بالاتری نسبت بهxrGetCoarseTrackingEyesInfoANDROIDدریافت می کند.
اگر برنامه مجوز android.permission.EYE_TRACKING_FINE را نداشته باشد، زمان اجرا باید XR_ERROR_PERMISSION_INSUFFICIENT برگرداند.
اطلاعات چشم در زمان تماس با xrGetFineTrackingEyesInfoANDROID با استفاده از XrEyesGetInfoANDROID::time ، XrEyesGetInfoANDROID::baseSpace ، حل و فصل شده و نسبت به فضای پایه است.
در هر نقطه از زمان هم موقعیت و هم جهت ژست چشم ردیابی می شود یا ردیابی نمی شود. این بدان معناست که برنامهها میتوانند انتظار داشته باشند که XR_SPACE_LOCATION_POSITION_TRACKED_BIT و XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT روی XrEyesANDROID::eyes ارائهشده تنظیم یا پاک شوند و XrEyesANDROID::mode وضعیت ردیابی را نشان میدهد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از تماس باxrGetFineTrackingEyesInfoANDROIDفعال شود -
eyeTrackerباید یک دسته معتبرXrEyeTrackerANDROIDباشد -
getInfoباید نشانگر یک ساختار معتبرXrEyesGetInfoANDROIDباشد -
eyesOutputباید یک اشاره گر به یک ساختارXrEyesANDROIDباشد
کدهای بازگشت
-
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_TIME_INVALID -
XR_ERROR_PERMISSION_INSUFFICIENT
ساختار XrEyesGetInfoANDROID حاوی اطلاعات مورد نیاز برای بازیابی حالت ها و حالت های چشم است.
typedef struct XrEyesGetInfoANDROID {
XrStructureType type;
void* next;
XrTime time;
XrSpace baseSpace;
} XrEyesGetInfoANDROID;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
timeXrTimeاست که در آن مختصات نسبت بهbaseSpaceارزیابی می شود. -
baseSpaceحالت چشم نسبت به اینXrSpaceدرtimeخواهد بود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از استفاده ازXrEyesGetInfoANDROIDفعال شود -
typeبایدXR_TYPE_EYES_GET_INFO_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد -
baseSpaceباید یک دستهXrSpaceمعتبر باشد
ساختار XrEyesANDROID حاوی اطلاعاتی در مورد چشم های ردیابی شده است.
typedef struct XrEyesANDROID {
XrStructureType type;
void* next;
XrEyeANDROID eyes[XR_EYE_MAX_ANDROID];
XrEyeTrackingModeANDROID mode;
} XrEyesANDROID;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
eyesآرایه ای ازXrEyeANDROIDبرای چشم چپ و راست است که توسطXrEyeIndexANDROIDایندکس شده است. -
modeXrEyeTrackingModeANDROIDاست که نشان می دهد آیا چشم ها در حال ردیابی هستند و کدام یک.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از استفاده ازXrEyesANDROIDفعال شود -
typeبایدXR_TYPE_EYES_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد - هر عنصر مشخصی از
eyesباید یک ساختار معتبرXrEyeANDROIDباشد -
modeباید یک مقدار معتبرXrEyeTrackingModeANDROIDباشد
ساختار XrEyeANDROID وضعیت، موقعیت و جهت یک چشم را توصیف می کند.
typedef struct XrEyeANDROID {
XrEyeStateANDROID eyeState;
XrPosef eyePose;
} XrEyeANDROID;
توضیحات اعضا
-
eyeStateXrEyeStateANDROIDیک چشم است. -
poseیکXrPosefاست که موقعیت و جهت مبدا چشم را در چارچوب مرجعXrEyesGetInfoANDROID::baseSpaceمربوطه تعریف می کند. جهت هویت در اینجا یک محور مختصات با +Z در چشم کاربر، +X در سمت راست و +Y به بالا را نشان می دهد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_eye_trackingباید قبل از استفاده ازXrEyeANDROIDفعال شود -
eyeStateباید یک مقدار معتبرXrEyeStateANDROIDباشد
شمارش XrEyeStateANDROID حالت های مختلف چشم های ردیابی شده را مشخص می کند.
typedef enum XrEyeStateANDROID {
XR_EYE_STATE_INVALID_ANDROID = 0,
XR_EYE_STATE_GAZING_ANDROID = 1,
XR_EYE_STATE_SHUT_ANDROID = 2
} XrEyeStateANDROID;
enum ها معانی زیر را دارند:
Enum | توضیحات |
| نشان می دهد که چشم در حالت خطا قرار دارد یا وجود ندارد. |
| نشان می دهد که چشم در حال خیره شدن است. |
| نشان دهنده بسته شدن چشم در اثر چشمک زدن یا پلک زدن است. |
شمارش XrEyeIndexANDROID شاخص چشم چپ یا راست را مشخص می کند.
typedef enum XrEyeIndexANDROID {
XR_EYE_INDEX_LEFT_ANDROID = 0,
XR_EYE_INDEX_RIGHT_ANDROID = 1
} XrEyeIndexANDROID;
enum ها معانی زیر را دارند:
Enum | توضیحات |
| چشم چپ. |
| چشم راست |
شمارش XrEyeTrackingModeANDROID حالت های مختلف چشم های ردیابی شده را مشخص می کند.
typedef enum XrEyeTrackingModeANDROID {
XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID = 0,
XR_EYE_TRACKING_MODE_RIGHT_ANDROID = 1,
XR_EYE_TRACKING_MODE_LEFT_ANDROID = 2,
XR_EYE_TRACKING_MODE_BOTH_ANDROID = 3
} XrEyeTrackingModeANDROID;
enum ها معانی زیر را دارند:
Enum | توضیحات |
| نشان می دهد که ردیابی چشم فعال نیست. |
| نشان می دهد که فقط چشم راست در حال ردیابی است. |
| نشان می دهد که فقط چشم چپ در حال ردیابی است. |
| نشان می دهد که هر دو چشم چپ و راست در حال ردیابی هستند. |
کد مثال برای ردیابی چشم
کد مثال زیر نحوه بدست آوردن اطلاعات چشم را نسبت به فضای دید نشان می دهد.
XrSession session; // previously initialized, e.g. created at app startup.
XrSpace viewSpace; // space created for XR_REFERENCE_SPACE_TYPE_VIEW.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateEyeTrackerANDROID xrCreateEyeTrackerANDROID; // previously initialized
PFN_xrDestroyEyeTrackerANDROID xrDestroyEyeTrackerANDROID; // previously initialized
PFN_xrGetCoarseTrackingEyesInfoANDROID xrGetCoarseTrackingEyesInfoANDROID; // previously initialized
PFN_xrGetFineTrackingEyesInfoANDROID xrGetFineTrackingEyesInfoANDROID; // previously initialized
// This will use the XrSession that is bound to the eye tracker done at time of creation.
XrEyeTrackerANDROID eyeTracker;
XrEyeTrackerCreateInfoANDROID createInfo{
.type = XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID,
.next = nullptr};
CHK_XR(xrCreateEyeTrackerANDROID(session, &createInfo, &eyeTracker));
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrEyesANDROID fineEyesInfo{.type = XR_TYPE_EYES_ANDROID,
.next = nullptr,
.mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
XrEyesANDROID coarseEyesInfo{.type = XR_TYPE_EYES_ANDROID,
.next = nullptr,
.mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
XrEyesGetInfoANDROID eyesGetInfo{.type = XR_TYPE_EYES_GET_INFO_ANDROID,
.next = nullptr,
.time = time,
.baseSpace = viewSpace};
CHK_XR(xrGetCoarseTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &coarseEyesInfo));
CHK_XR(xrGetFineTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &fineEyesInfo));
// eyes tracking information is now available:
// drawLeftEye(eyesInfo.eyes[XR_EYE_INDEX_LEFT_ANDROID].eyePose);
// drawRightEye(eyesInfo.eyes[XR_EYE_INDEX_RIGHT_ANDROID].eyePose);
// ...
// Finish frame loop
// ...
}
// after usage
CHK_XR(xrDestroyEyeTrackerANDROID(eyeTracker));
انواع اشیاء جدید
ثابت های جدید Enum
-
XR_EYE_MAX_ANDROID
شمارش XrObjectType با:
-
XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
شمارش XrStructureType با:
-
XR_TYPE_EYES_ANDROID -
XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID -
XR_TYPE_EYES_GET_INFO_ANDROID -
XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID
فهرست های جدید
ساختارهای جدید
-
XrEyeANDROID -
XrEyesANDROID -
XrEyesGetInfoANDROID -
XrEyeTrackerCreateInfoANDROID -
XrSystemEyeTrackingPropertiesANDROID
توابع جدید
-
xrCreateEyeTrackerANDROID -
xrDestroyEyeTrackerANDROID -
xrGetCoarseTrackingEyesInfoANDROID -
xrGetFineTrackingEyesInfoANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 17/01/2025 (کنی ورکامر)
- توضیحات پسوند اولیه
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.