XR_ANDROID_avatar_eyes OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_avatar_eyes

এক্সটেনশন প্রকার

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

457

রিভিশন

1

এক্সটেনশন এবং সংস্করণ নির্ভরতা

OpenXR 1.0

সর্বশেষ সংশোধিত তারিখ

2024-09-30

আইপি স্ট্যাটাস

কোন পরিচিত আইপি দাবি.

অবদানকারী

স্পেন্সার কুইন, গুগল

জ্যারেড ফাইন্ডার, গুগল

লেভানা চেন, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশনগুলিকে ব্যবহারকারীর চোখের অবস্থান এবং অভিযোজন, সেইসাথে চোখের ট্র্যাকিং স্থিতি পেতে সক্ষম করে।

এই এক্সটেনশনটি অবতারদের জন্য চোখের ভঙ্গি এবং স্থিতি উপস্থাপনাকে আরও বাস্তবসম্মত করার উদ্দেশ্যে করা হয়েছে। সেই উদ্দেশ্যে:

  • এটি নন-ট্র্যাকড স্টেট যেমন ব্লিঙ্কিং এর জন্য অনুমতি দেয়।
  • এটি মনোকুলার বা বাইনোকুলার ট্র্যাকিংয়ের অনুমতি দেয়।

এই এক্সটেনশনটি অন্যান্য চোখের ট্র্যাকিং উদ্দেশ্যে ব্যবহার করা উচিত নয়। মিথস্ক্রিয়া জন্য, XR_EXT_eye_gaze_interaction ব্যবহার করা উচিত

আই ট্র্যাকার

একটি আই ট্র্যাকার হল একটি সেন্সিং ডিভাইস যা চোখ ট্র্যাক করে এবং সঠিকভাবে ম্যাপ করে যেখানে ব্যবহারকারী খুঁজছেন। এই এক্সটেনশনের মূল উদ্দেশ্য হল একটি ভার্চুয়াল দৃশ্যে ব্যবহারকারীর দৃষ্টিকে তাদের অবতারগুলিতে ম্যাপ করা।

আই ট্র্যাকিং ডেটা সংবেদনশীল ব্যক্তিগত তথ্য হতে পারে এবং ব্যক্তিগত গোপনীয়তা এবং অখণ্ডতার সাথে ঘনিষ্ঠভাবে যুক্ত। এটি দৃঢ়ভাবে সুপারিশ করা হয় যে অ্যাপ্লিকেশনগুলি যেগুলি আই ট্র্যাকিং ডেটা সঞ্চয় করে বা স্থানান্তর করে সেগুলি সর্বদা ব্যবহারকারীকে সক্রিয় এবং নির্দিষ্ট গ্রহণযোগ্যতার জন্য অনুরোধ করে৷

  • একটি অ্যাপ্লিকেশান XR_ERROR_PERMISSION_INSUFFICIENT পাবে যখন একটি সক্রিয় আই ট্র্যাকার তৈরি করার চেষ্টা করা হবে যতক্ষণ না অ্যাপ্লিকেশনটিকে আই ট্র্যাকারে অ্যাক্সেসের অনুমতি দেওয়া হয়।

সিস্টেমের ক্ষমতা পরিদর্শন করুন

xrGetSystemProperties কল করার সময় একটি অ্যাপ্লিকেশন XrSystemAvatarEyesPropertiesANDROID কাঠামোকে XrSystemProperties- এ চেইন করে সিস্টেমটি অবতার চোখ সমর্থন করে কিনা তা পরীক্ষা করতে পারে । যদি supportsAvatarEyes XR_FALSE ফেরত দেয়, তাহলে একটি অ্যাপ্লিকেশন xrCreateEyeTrackerANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED পাবে।

typedef struct XrSystemAvatarEyesPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsAvatarEyes;
} XrSystemAvatarEyesPropertiesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • supportsAvatarEyes হল একটি XrBool32 , বর্তমান সিস্টেম অবতার চোখ সমর্থন করে কিনা তা নির্দেশ করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

একটি আই ট্র্যাকার হ্যান্ডেল তৈরি করুন

XR_DEFINE_HANDLE(XrEyeTrackerANDROID)

XrEyeTrackerANDROID হ্যান্ডেল চোখ ট্র্যাক করার জন্য একটি আই ট্র্যাকার উপস্থাপন করে এবং ব্যবহারকারী যা দেখছে তা সঠিকভাবে ম্যাপ করে।

এই হ্যান্ডেলটি এই এক্সটেনশনের অন্যান্য ফাংশন ব্যবহার করে চোখের ট্র্যাকিং ডেটা অ্যাক্সেস করতে ব্যবহার করা যেতে পারে

আই ট্র্যাকিং দৃশ্যে চোখের ভঙ্গি এবং স্থিতি উপস্থাপনা প্রদান করে।

xrCreateEyeTrackerANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreateEyeTrackerANDROID(
    XrSession                                   session,
    const XrEyeTrackerCreateInfoANDROID*        createInfo,
    XrEyeTrackerANDROID*                        eyeTracker);

পরামিতি বিবরণ

  • session হল একটি XrSession হ্যান্ডেল যেখানে চোখের ট্র্যাকিং সক্রিয় থাকবে।
  • createInfo হল XrEyeTrackerCreateInfoANDROID যা চোখের ট্র্যাকিং নির্দিষ্ট করতে ব্যবহৃত হয়।
  • eyeTracker হল ফেরত XrEyeTrackerANDROID হ্যান্ডেল৷

একটি অ্যাপ্লিকেশন xrCreateEyeTrackerANDROID ফাংশন ব্যবহার করে একটি XrEyeTrackerANDROID হ্যান্ডেল তৈরি করতে পারে

যদি সিস্টেম চোখের ট্র্যাকিং সমর্থন না করে, তাহলে xrCreateEyeTrackerANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED ফেরত দেওয়া হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • xrCreateEyeTrackerANDROID কল করার পূর্বে XR_ANDROID_avatar_eyes এক্সটেনশনটি সক্রিয় করা আবশ্যক
  • 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

XrEyeTrackerCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrEyeTrackerCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrEyeTrackerCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।

XrEyeTrackerCreateInfoANDROID কাঠামো একটি XrEyeTrackerANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

xrDestroyEyeTrackerANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrDestroyEyeTrackerANDROID(
    XrEyeTrackerANDROID                         eyeTracker);

পরামিতি বিবরণ

xrDestroyEyeTrackerANDROID ফাংশন eyeTracker এবং অন্তর্নিহিত সংস্থানগুলি প্রকাশ করে যখন চোখের ট্র্যাকিং অভিজ্ঞতাগুলি শেষ হয়৷

বৈধ ব্যবহার (অন্তর্নিহিত)

থ্রেড নিরাপত্তা

  • eyeTracker অ্যাক্সেস এবং যেকোনো শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

চোখের তথ্য পাওয়া

xrGetEyesInfoANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetEyesInfoANDROID(
    XrEyeTrackerANDROID                         eyeTracker,
    const XrEyesGetInfoANDROID*                 getInfo,
    XrEyesANDROID*                              infoOutput);

পরামিতি বিবরণ

  • eyeTracker হল একটি XrEyeTrackerANDROID যা পূর্বে xrCreateEyeTrackerANDROID দ্বারা তৈরি।
  • getInfo হল XrEyesGetInfoANDROID- এর একটি পয়েন্টার যা আউটপুট প্রয়োজন তা নির্দিষ্ট করতে ব্যবহৃত হয়।
  • infoOutput হল XrEyesANDROID- এর একটি পয়েন্টার যা ভঙ্গি এবং অবস্থা সহ প্রত্যাবর্তিত চোখের তথ্য ধারণ করে।

xrGetEyesInfoANDROID ফাংশন চোখের অবস্থা এবং ভঙ্গির তথ্য পায়।

XrEyesGetInfoANDROID::time, XrEyesGetInfoANDROID::baseSpace ব্যবহার করে xrGetEyesInfoANDROID এ কল করার সময় চোখের তথ্য সমাধান করা হয়েছে এবং বেস স্পেসের সাথে সম্পর্কিত।

যেকোনো সময়ে চোখের ভঙ্গির অবস্থান এবং দিক উভয়ই ট্র্যাক বা আনট্র্যাক করা হয়। এর মানে হল যে অ্যাপ্লিকেশানগুলি আশা করতে পারে যে XR_SPACE_LOCATION_POSITION_TRACKED_BIT এবং XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT উভয়ই সরবরাহকৃত XrEyesANDROID::eyes তে সেট বা সাফ করা হবে এবং XrEyesANDROID::মোড ট্র্যাকিং অবস্থা নির্দেশ করবে৷

বৈধ ব্যবহার (অন্তর্নিহিত)

  • XR_ANDROID_avatar_eyes এক্সটেনশনটি অবশ্যই xrGetEyesInfoANDROID কল করার আগে সক্রিয় করতে হবে
  • eyeTracker অবশ্যই একটি বৈধ XrEyeTrackerANDROID হ্যান্ডেল হতে হবে৷
  • getInfo অবশ্যই একটি বৈধ XrEyesGetInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে
  • infoOutput একটি 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

XrEyesGetInfoANDROID কাঠামোতে চোখের ভঙ্গি এবং অবস্থা পুনরুদ্ধার করার জন্য প্রয়োজনীয় তথ্য রয়েছে।

typedef struct XrEyesGetInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrTime             time;
    XrSpace            baseSpace;
} XrEyesGetInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • time হল XrTime যেখানে baseSpace সাপেক্ষে স্থানাঙ্কগুলি মূল্যায়ন করা হয়।
  • baseSpace এই time চোখের ভঙ্গি এই XrSpace আপেক্ষিক হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrEyesANDROID গঠনে ট্র্যাক করা চোখের তথ্য রয়েছে।

typedef struct XrEyesANDROID {
    XrStructureType             type;
    void*                       next;
    XrEyeANDROID                eyes[XR_EYE_MAX_ANDROID];
    XrEyeTrackingModeANDROID    mode;
} XrEyesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • eyes হল XrEyeIndexANDROID দ্বারা সূচীকৃত বাম এবং ডান চোখের জন্য XrEyeANDROID- এর একটি অ্যারে৷
  • mode হল XrEyeTrackingModeANDROID যা নির্দেশ করে যে চোখ ট্র্যাক করছে এবং কোনটি।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrEyeANDROID গঠন একটি চোখের অবস্থা, অবস্থান এবং অভিযোজন বর্ণনা করে।

typedef struct XrEyeANDROID {
    XrEyeStateANDROID    eyeState;
    XrPosef              eyePose;
} XrEyeANDROID;

সদস্য বিবরণ

  • eyeState হল একটি চোখের XrEyeStateANDROID
  • pose হল একটি XrPosef যা সংশ্লিষ্ট XrEyesGetInfoANDROID::baseSpace- এর রেফারেন্স ফ্রেমের মধ্যে একটি চোখের উৎপত্তির অবস্থান এবং অভিযোজন সংজ্ঞায়িত করে। এখানে একটি পরিচয় অভিযোজন ব্যবহারকারীর চোখে +Z সহ একটি স্থানাঙ্ক অক্ষ, +X ডানদিকে এবং +Y উপরে উপস্থাপন করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • XR_ANDROID_avatar_eyes এক্সটেনশনটি অবশ্যই 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;

enums নিম্নলিখিত অর্থ আছে:

এনাম

বর্ণনা

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
} XrEyeIndexANDROID;

enums নিম্নলিখিত অর্থ আছে:

এনাম

বর্ণনা

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
} XrEyeTrackingModeANDROID;

enums নিম্নলিখিত অর্থ আছে:

এনাম

বর্ণনা

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, for example, 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_xrGetEyesInfoANDROID xrGetEyesInfoANDROID; // 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 eyesInfo{.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(xrGetEyesInfoANDROID(eyeTracker, &eyesGetInfo, &eyesInfo));

    // 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_AVATAR_EYES_PROPERTIES_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

সংস্করণ ইতিহাস

  • রিভিশন 1, 2024-09-04 (লেভানা চেন)
    • প্রাথমিক এক্সটেনশন বর্ণনা