XR_ANDROID_eye_tracking
Name String
XR_ANDROID_eye_tracking
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียน
457
การแก้ไข
1
สถานะการให้สัตยาบัน
ยังไม่ให้สัตยาบัน
การขึ้นต่อกันของส่วนขยายและเวอร์ชัน
วันที่แก้ไขล่าสุด
2025-01-17
สถานะ IP
ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ
ผู้เขียน
Spencer Quin, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Prasanthi Gurumurthy, Google
Nihav Jain, Google
ภาพรวม
ส่วนขยายนี้ช่วยให้แอปพลิเคชันรับตำแหน่งและการวางแนวของดวงตาผู้ใช้ รวมถึงสถานะการติดตามดวงตาได้
ข้อมูลการติดตามดวงตาจะแสดงใน 2 โหมด ได้แก่ โหมดหยาบและโหมดละเอียด การติดตามแบบหยาบจะให้ค่าประมาณแบบหยาบของดวงตาผู้ใช้ ส่วนการติดตามแบบละเอียดจะให้ค่าประมาณที่แม่นยำกว่า การติดตามแบบหยาบมีไว้สำหรับแอปพลิเคชันที่ต้องการแสดงภาพพื้นฐานคล้ายอวตาร ส่วนการติดตามแบบละเอียดมีไว้สำหรับแอปพลิเคชันที่แม่นยำกว่า
สำหรับการโต้ตอบ ควรใช้ XR_EXT_eye_gaze_interaction
สิทธิ์
แอปพลิเคชัน Android ต้องมีสิทธิ์ android.permission.EYE_TRACKING_COARSE หรือ android.permission.EYE_TRACKING_FINE แสดงอยู่ในไฟล์ Manifest สิทธิ์เหล่านี้ถือเป็นสิทธิ์ที่เป็นอันตราย แอปพลิเคชันต้องขอสิทธิ์ขณะรันไทม์เพื่อใช้ฟังก์ชันต่อไปนี้
- xrCreateEyeTrackerANDROID (สิทธิ์อย่างน้อย 1 รายการ)
- xrGetCoarseTrackingEyesInfoANDROID (android.permission.EYE_TRACKING_COARSE)
- xrGetFineTrackingEyesInfoANDROID (android.permission.EYE_TRACKING_FINE)
(ระดับการป้องกัน: อันตราย)
ตรวจสอบความสามารถของระบบ
โครงสร้าง XrSystemEyeTrackingPropertiesANDROID มีคำจำกัดความดังนี้
typedef struct XrSystemEyeTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsEyeTracking;
} XrSystemEyeTrackingPropertiesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้supportsEyeTrackingคือXrBool32ที่ระบุว่าระบบปัจจุบันรองรับการติดตามดวงตาหรือไม่
แอปพลิเคชันสามารถตรวจสอบว่าระบบรองรับการติดตามดวงตาหรือไม่โดยขยาย XrSystemProperties ด้วยโครงสร้าง XrSystemEyeTrackingPropertiesANDROID เมื่อเรียกใช้ xrGetSystemProperties
หากรันไทม์แสดงผล XR_FALSE สำหรับ supportsEyeTracking รันไทม์ต้องแสดงผล XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateEyeTrackerANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_eye_trackingก่อนจึงจะใช้ XrSystemEyeTrackingPropertiesANDROID ได้ -
typeต้องเป็นXR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
การสร้างแฮนเดิลของอายแทร็กเกอร์
XR_DEFINE_HANDLE(XrEyeTrackerANDROID)
แฮนเดิล XrEyeTrackerANDROID แสดงถึงอายแทร็กเกอร์สำหรับการติดตามดวงตาและแมปตำแหน่งที่ผู้ใช้กำลังมองอย่างแม่นยำ
ข้อมูลการติดตามดวงตาเป็นข้อมูลส่วนบุคคลที่ละเอียดอ่อนและเชื่อมโยงอย่างใกล้ชิดกับความเป็นส่วนตัวและความสมบูรณ์ของบุคคล เราขอแนะนำอย่างยิ่งให้แอปพลิเคชันที่จัดเก็บหรือโอนข้อมูลการติดตามดวงตาขอการยอมรับที่ชัดเจนและเฉพาะเจาะจงจากผู้ใช้เสมอ
แอปพลิเคชันใช้แฮนเดิลนี้เพื่อเข้าถึงข้อมูลการติดตามดวงตาโดยใช้ฟังก์ชันอื่นๆ ในส่วนขยายนี้
การติดตามดวงตาจะแสดงท่าทางและสถานะของดวงตาในฉาก
ฟังก์ชัน xrCreateEyeTrackerANDROID มีคำจำกัดความดังนี้
XrResult xrCreateEyeTrackerANDROID(
XrSession session,
const XrEyeTrackerCreateInfoANDROID* createInfo,
XrEyeTrackerANDROID* eyeTracker);
คำอธิบายพารามิเตอร์
sessionคือแฮนเดิล XrSession ที่การติดตามดวงตาจะทำงานcreateInfoคือ XrEyeTrackerCreateInfoANDROID ที่ใช้เพื่อระบุการติดตามดวงตาeyeTrackerคือแฮนเดิล XrEyeTrackerANDROID ที่แสดงผล
แอปพลิเคชันสร้างแฮนเดิล XrEyeTrackerANDROID โดยใช้ฟังก์ชัน xrCreateEyeTrackerANDROID
หากระบบไม่รองรับการติดตามดวงตา รันไทม์ต้องส่งคืน XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateEyeTrackerANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้งานส่วนขยาย
XR_ANDROID_eye_trackingก่อนที่จะเรียกใช้ xrCreateEyeTrackerANDROID -
sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง -
createInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyeTrackerCreateInfoANDROID ที่ถูกต้อง -
eyeTrackerต้องเป็นตัวชี้ไปยังแฮนเดิล XrEyeTrackerANDROID
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrEyeTrackerCreateInfoANDROID มีคำจำกัดความดังนี้
typedef struct XrEyeTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
} XrEyeTrackerCreateInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
โครงสร้าง XrEyeTrackerCreateInfoANDROID อธิบายข้อมูลในการสร้างแฮนเดิล XrEyeTrackerANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_eye_trackingก่อนจึงจะใช้ XrEyeTrackerCreateInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
ฟังก์ชัน xrDestroyEyeTrackerANDROID มีคำจำกัดความดังนี้
XrResult xrDestroyEyeTrackerANDROID(
XrEyeTrackerANDROID eyeTracker);
คำอธิบายพารามิเตอร์
eyeTrackerคือ XrEyeTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateEyeTrackerANDROID
ฟังก์ชัน xrDestroyEyeTrackerANDROID จะปล่อย eyeTracker และทรัพยากรพื้นฐานเมื่อเสร็จสิ้นประสบการณ์การติดตามดวงตา
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_eye_trackingก่อนที่จะเรียกใช้ xrDestroyEyeTrackerANDROID -
eyeTrackerต้องเป็นแฮนเดิล XrEyeTrackerANDROID ที่ถูกต้อง
ความปลอดภัยของเธรด
- การเข้าถึง
eyeTrackerและแฮนเดิลย่อยทั้งหมดต้องซิงค์ภายนอก
รหัสการคืนสินค้า
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
กำลังรับข้อมูลดวงตา
ฟังก์ชัน xrGetCoarseTrackingEyesInfoANDROID มีคำจำกัดความดังนี้
XrResult xrGetCoarseTrackingEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* eyesOutput);
คำอธิบายพารามิเตอร์
eyeTrackerคือ XrEyeTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateEyeTrackerANDROIDgetInfoเป็น Pointer ไปยัง XrEyesGetInfoANDROID ที่ใช้เพื่อให้ข้อมูลสำหรับการค้นหาท่าทางและสถานะของดวงตาeyesOutputเป็นตัวชี้ไปยัง XrEyesANDROID ที่มีข้อมูลดวงตาที่ส่งคืน รวมถึงท่าทางและสถานะ
ฟังก์ชัน xrGetCoarseTrackingEyesInfoANDROID จะรับข้อมูลเกี่ยวกับสถานะและท่าทางของดวงตาในลักษณะที่รักษาความเป็นส่วนตัวของผู้ใช้
รันไทม์ต้องแสดงผล XR_ERROR_PERMISSION_INSUFFICIENT หากแอปพลิเคชันไม่มีสิทธิ์ android.permission.EYE_TRACKING_COARSE
ท่าทางของดวงตาจะแสดงใน XrEyesGetInfoANDROID :: baseSpace ที่ XrEyesGetInfoANDROID :: time
ระบบจะติดตามหรือเลิกติดตามทั้งตำแหน่งและทิศทางของท่าทางดวงตาได้ทุกเมื่อ ซึ่งหมายความว่ารันไทม์ต้องตั้งค่าทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT หรือล้างทั้ง 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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
ฟังก์ชัน xrGetFineTrackingEyesInfoANDROID มีคำจำกัดความดังนี้
XrResult xrGetFineTrackingEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* eyesOutput);
คำอธิบายพารามิเตอร์
eyeTrackerคือ XrEyeTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateEyeTrackerANDROIDgetInfoเป็น Pointer ไปยัง XrEyesGetInfoANDROID ที่ใช้เพื่อระบุเอาต์พุตที่ต้องการeyesOutputเป็นตัวชี้ไปยัง XrEyesANDROID ที่มีข้อมูลดวงตาที่ส่งคืน รวมถึงท่าทางและสถานะ
ฟังก์ชัน xrGetFineTrackingEyesInfoANDROID จะรับข้อมูลเกี่ยวกับสถานะและท่าทางของดวงตาที่มีความแม่นยำสูงกว่า xrGetCoarseTrackingEyesInfoANDROID
รันไทม์ต้องแสดงผล XR_ERROR_PERMISSION_INSUFFICIENT หากแอปพลิเคชันไม่มีสิทธิ์ android.permission.EYE_TRACKING_FINE
ระบบจะแก้ไขข้อมูลดวงตาและสัมพันธ์กับพื้นที่ฐาน ณ เวลาที่เรียกใช้ xrGetFineTrackingEyesInfoANDROID โดยใช้ XrEyesGetInfoANDROID :: time , XrEyesGetInfoANDROID :: baseSpace รันไทม์ต้องระบุตำแหน่งที่กำหนดโดย XrEyesGetInfoANDROID :: baseSpace ในเวลาที่เรียกใช้
ระบบจะติดตามหรือเลิกติดตามทั้งตำแหน่งและทิศทางของท่าทางดวงตาได้ทุกเมื่อ ซึ่งหมายความว่ารันไทม์ต้องตั้งค่าทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT หรือล้างทั้ง 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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrEyesGetInfoANDROID มีข้อมูลที่จำเป็นในการดึงท่าทางและสถานะของดวงตา
typedef struct XrEyesGetInfoANDROID {
XrStructureType type;
const void* next;
XrTime time;
XrSpace baseSpace;
} XrEyesGetInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้timeคือXrTimeที่ใช้ประเมินพิกัดที่สัมพันธ์กับbaseSpacebaseSpaceคือ XrSpace ที่ท่าทางของดวงตาจะสัมพันธ์กับที่time
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_eye_trackingก่อนจึงจะใช้ XrEyesGetInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_EYES_GET_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
baseSpaceต้องเป็นแฮนเดิล XrSpace ที่ถูกต้อง
โครงสร้าง XrEyesANDROID มีข้อมูลเกี่ยวกับดวงตาที่ติดตาม
typedef struct XrEyesANDROID {
XrStructureType type;
void* next;
XrEyeANDROID eyes[XR_EYE_MAX_ANDROID];
XrEyeTrackingModeANDROID mode;
} XrEyesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้eyesเป็นอาร์เรย์ของ XrEyeANDROID ที่มีขนาดXR_EYE_MAX_ANDROIDสำหรับตาซ้ายและตาขวาตามที่จัดทำดัชนีโดย XrEyeIndexANDROIDmodeคือ XrEyeTrackingModeANDROID ซึ่งระบุว่าระบบกำลังติดตามดวงตาข้างใด
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_eye_trackingก่อนจึงจะใช้ XrEyesANDROID ได้ -
typeต้องเป็นXR_TYPE_EYES_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง - องค์ประกอบใดๆ ของ
eyesต้องเป็นโครงสร้าง XrEyeANDROID ที่ถูกต้อง -
modeต้องเป็นค่า XrEyeTrackingModeANDROID ที่ถูกต้อง
โครงสร้าง XrEyeANDROID อธิบายสถานะ ตำแหน่ง และการวางแนวของดวงตา
typedef struct XrEyeANDROID {
XrEyeStateANDROID eyeState;
XrPosef eyePose;
} XrEyeANDROID;
คำอธิบายสมาชิก
eyeStateคือ XrEyeStateANDROID ของดวงตาeyePoseคือ 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,
XR_EYE_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeStateANDROID;
โดย Enum มีความหมายดังนี้
คำอธิบาย Enum
XR_EYE_STATE_INVALID_ANDROID
ระบุว่าดวงตาอยู่ในสถานะข้อผิดพลาดหรือไม่
XR_EYE_STATE_GAZING_ANDROID
ระบุว่าดวงตากำลังจ้องมอง
XR_EYE_STATE_SHUT_ANDROID
ระบุว่าดวงตาปิดอยู่เนื่องจากกะพริบตาหรือหลับตา
การแจงนับ XrEyeIndexANDROID จะระบุดัชนีของตาซ้ายหรือขวา
typedef enum XrEyeIndexANDROID {
XR_EYE_INDEX_LEFT_ANDROID = 0,
XR_EYE_INDEX_RIGHT_ANDROID = 1,
XR_EYE_INDEX_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeIndexANDROID;
โดย Enum มีความหมายดังนี้
คำอธิบาย Enum
XR_EYE_INDEX_LEFT_ANDROID
ตาซ้าย
XR_EYE_INDEX_RIGHT_ANDROID
ตาขวา
การแจงนับ 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,
XR_EYE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeTrackingModeANDROID;
โดย Enum มีความหมายดังนี้
คำอธิบาย Enum
XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID
ระบุว่าการติดตามดวงตาไม่ได้ทำงานอยู่ในขณะนี้
XR_EYE_TRACKING_MODE_RIGHT_ANDROID
แสดงว่าระบบกำลังติดตามเฉพาะตาขวา
XR_EYE_TRACKING_MODE_LEFT_ANDROID
แสดงว่าระบบกำลังติดตามเฉพาะตาซ้าย
XR_EYE_TRACKING_MODE_BOTH_ANDROID
บ่งบอกว่ากำลังติดตามทั้งตาซ้ายและตาขวา
ตัวอย่างโค้ดสำหรับการติดตามดวงตา
โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับข้อมูลดวงตาที่สัมพันธ์กับพื้นที่มุมมอง
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));
ประเภทออบเจ็กต์ใหม่
คำสั่งใหม่
- xrCreateEyeTrackerANDROID
- xrDestroyEyeTrackerANDROID
- xrGetCoarseTrackingEyesInfoANDROID
- xrGetFineTrackingEyesInfoANDROID
โครงสร้างใหม่
- XrEyeANDROID
- XrEyeTrackerCreateInfoANDROID
- XrEyesANDROID
- XrEyesGetInfoANDROID
การขยาย XrSystemProperties :
Enum ใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_EYE_TRACKING_EXTENSION_NAMEXR_ANDROID_eye_tracking_SPEC_VERSIONXR_EYE_MAX_ANDROIDการขยาย XrObjectType :
XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
การขยาย XrStructureType :
XR_TYPE_EYES_ANDROIDXR_TYPE_EYES_GET_INFO_ANDROIDXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID
ปัญหา
ประวัติเวอร์ชัน
การแก้ไข 1, 2025-01-17 (Kenny Vercaemer)
- คำอธิบายส่วนขยายเริ่มต้น