XR_ANDROID_trackables OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_trackables_object

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

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

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

467

রিভিশন

1

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

XR_ANDROID_trackables

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

2024-10-03

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

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

অবদানকারী

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

নিহাভ জৈন, গুগল

জন পার্সে, গুগল

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

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

কেনি ভার্কেমার, গুগল

ওভারভিউ

এই এক্সটেনশনটি ফিজিক্যাল অবজেক্ট ট্র্যাকিং সক্ষম করে। উদাহরণস্বরূপ, কীবোর্ড, ইঁদুর এবং পরিবেশের অন্যান্য বস্তু।

ট্র্যাক অবজেক্ট

এই এক্সটেনশনটি XR_TRACKABLE_TYPE_OBJECT_ANDROID কে XrTrackableTypeANDROID- এ যোগ করে।

অ্যাপ্লিকেশনটি xrCreateTrackableTrackerANDROID কল করে এবং XrTrackableTrackerCreateInfoANDROID::trackableType- এ ট্র্যাকযোগ্য প্রকার হিসাবে XR_TRACKABLE_TYPE_OBJECT_ANDROID নির্দিষ্ট করে একটি XrTrackableTrackableTrackerANDROID তৈরি করতে পারে

ট্র্যাকযোগ্য বস্তু পান

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

XrResult xrGetTrackableObjectANDROID(
    XrTrackableTrackerANDROID                   tracker,
    const XrTrackableGetInfoANDROID*            getInfo,
    XrTrackableObjectANDROID*                   objectOutput);

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

  • tracker হল XrTrackableTrackerANDROID অনুসন্ধান করার জন্য।
    • getInfo হল XrTrackableGetInfoANDROID যা ট্র্যাকযোগ্য বস্তু পেতে ব্যবহৃত হয়।
    • objectOutput হল XrTrackableObjectANDROID কাঠামোর একটি পয়েন্টার যেখানে ট্র্যাকযোগ্য বস্তুটি ফেরত দেওয়া হয়।

XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID ফেরত দেওয়া হবে যদি XrTrackableANDROID এর ট্র্যাকযোগ্য প্রকারটি XR_TRACKABLE_TYPE_OBJECT_ANDROID না হয়, অথবা যদি XrTrackableTrackerANDROID- এর ট্র্যাকযোগ্য ধরনটি XR_TRACKABLE_TYPE_OBJECT_ANDROID না হয় XR_Trackable_TYPE_ANDROID।

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

রিটার্ন কোড

সফলতা

  • 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_SESSION_NOT_RUNNING
    • XR_ERROR_TIME_INVALID

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

typedef struct XrTrackableObjectANDROID {
    XrStructureType           type;
    void*                     next;
    XrTrackingStateANDROID    trackingState;
    XrPosef                   centerPose;
    XrExtent3DfEXT            extents;
    XrObjectLabelANDROID      objectLabel;
    XrTime                    lastUpdatedTime;
} XrTrackableObjectANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
    • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
    • trackingState হল বস্তুর XrTrackingStateANDROID
    • centerPose হল XrTrackableGetInfoANDROID::baseSpace- এ অবস্থিত বস্তুর XrPosef
    • extents হল বস্তুর XrExtent3DfEXT মাত্রা।
    • objectLabel হল XrObjectLabelANDROID যা রানটাইম এই অবজেক্টের জন্য নির্ধারণ করেছে।
    • lastUpdatedTime হল অবজেক্টের শেষ আপডেটের XrTime

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

  • XR_ANDROID_trackables_object এক্সটেনশনটি অবশ্যই XrTrackableObjectANDROID ব্যবহার করার আগে সক্রিয় করতে হবে
    • type XR_TYPE_TRACKABLE_OBJECT_ANDROID হতে হবে
    • next অবশ্যই NULL বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
    • trackingState অবশ্যই একটি বৈধ XrTrackingStateANDROID মান হতে হবে
    • objectLabel অবশ্যই একটি বৈধ XrObjectLabelANDROID মান হতে হবে

XrObjectLabelANDROID enum হল একটি XrTrackableANDROID অবজেক্টের জন্য একটি লেবেল৷

typedef enum XrObjectLabelANDROID {
    XR_OBJECT_LABEL_UNKNOWN_ANDROID = 0,
    XR_OBJECT_LABEL_KEYBOARD_ANDROID = 1,
    XR_OBJECT_LABEL_MOUSE_ANDROID = 2,
    XR_OBJECT_LABEL_LAPTOP_ANDROID = 3,
    XR_OBJECT_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrObjectLabelANDROID;

ট্র্যাকযোগ্য বস্তু পাওয়ার জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোড দেখায় কিভাবে ট্র্যাকযোগ্য বস্তু পেতে হয়।

XrSession session; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrGetTrackableObjectANDROID xrGetTrackableObjectANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized

XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.

XrTrackableTrackerCreateInfoANDROID
  createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_OBJECT_ANDROID;
XrTrackableTracker objectTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
  session,
  &createInfo,
  &objectrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }

uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allObjectTrackables;

// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
  objectTrackableTracker,
  0,
  &trackableCountOutput,
  nullptr
);

if (result == XR_SUCCESS) {
  allObjectTrackables.resize(trackableCountOutput, XR_NULL_TRACKABLE_ANDROID);

  // Fetch the actual trackable handles in the appropriately resized array.
  result = xrGetAllTrackablesANDROID(
    objectTrackableTracker,
    trackableCountOutput,
    &trackableCountOutput,
    allObjectTrackables.data());

  if (result == XR_SUCCESS) {
    for (XrTrackableANDROID trackable : allObjectTrackables) {

      // Object trackable query information
      XrTrackableGetInfoANDROID objectGetInfo;
      objectGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
      objectGetInfo.next = nullptr;
      objectGetInfo.trackable = trackable;
      objectGetInfo.space = appSpace;
      objectGetInfo.time = updateTime;

      // Get the object trackable. Note that the tracker only returns object types.
      XrTrackableObjectANDROID object = { XR_TYPE_TRACKABLE_OBJECT_ANDROID };
      result = xrGetTrackableObjectANDROID(
        objectTrackableTracker,
        &objectGetInfo,
        &object
      );

      if (result == XR_SUCCESS) {
        /** Do Stuff with the object */
      }
    }
  }
}

// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(objectTrackableTracker);

নতুন Enum ধ্রুবক

XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TYPE_TRACKABLE_OBJECT_ANDROID
  • XR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID

XrTrackableTypeANDROID গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TRACKABLE_TYPE_OBJECT_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

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

  • রিভিশন 1, 2024-10-03 (কেনি ভার্কেমার)
    • প্রাথমিক এক্সটেনশন বর্ণনা।