XR_ANDROID_trackables_marker

নাম স্ট্রিং

XR_ANDROID_trackables_marker

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

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

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

৭০৮

সংশোধন

অনুমোদনের অবস্থা

অনুমোদিত নয়

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

XR_ANDROID_trackables

অবচয় অবস্থা

  • XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা বাতিল করা হয়েছে

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

২০২৫-০৭-২৩

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

কোনো জ্ঞাত আইপি দাবি নেই।

অবদানকারীরা

ক্রিস্টোফার ডোয়ার, গুগল
ডিয়েগো টিপাল্ডি, গুগল
লেভানা চেন, গুগল
জ্যারেড ফাইন্ডার, গুগল
স্পেন্সার কুইন, গুগল
নিহাব জৈন, গুগল
কেন ম্যাকে, গুগল
ড্যানিয়েল গুটেনবার্গ, কোয়ালকম

সংক্ষিপ্ত বিবরণ

এই এক্সটেনশনটি ফিজিক্যাল মার্কার ট্র্যাকিং সক্ষম করে এবং অ্যাপ্লিকেশনগুলিকে ফিজিক্যাল মার্কারের সাথে কার্যকরভাবে এক্সআর (XR) কন্টেন্ট সংযুক্ত করতে সাহায্য করে।

এই এক্সটেনশনটি সুপরিচিত মার্কার টাইপ, বিশেষ করে ArUco এবং April Tags-কে সাপোর্ট করে। এটি রানটাইমগুলোকে ঐচ্ছিকভাবে মার্কারের আকার অনুমান করার সুবিধা দেয়।

অনুমতি

অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির ম্যানিফেস্টে অবশ্যই android.permission.SCENE_UNDERSTANDING_COARSE পারমিশনটি তালিকাভুক্ত থাকতে হবে, কারণ এই এক্সটেনশনটি XR_ANDROID_trackables উপর নির্ভরশীল এবং এটি পারিপার্শ্বিকের জ্যামিতি প্রকাশ করে। android.permission.SCENE_UNDERSTANDING_COARSE পারমিশনটিকে একটি বিপজ্জনক পারমিশন হিসেবে বিবেচনা করা হয়, অর্থাৎ অ্যাপ্লিকেশনগুলিকে অবশ্যই সুস্পষ্টভাবে এই পারমিশনের জন্য অনুরোধ করতে হবে।

(সুরক্ষার স্তর: বিপজ্জনক)

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

XrSystemMarkerTrackingPropertiesANDROID স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSystemMarkerTrackingPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsMarkerTracking;
    XrBool32           supportsMarkerSizeEstimation;
    uint16_t           maxMarkerCount;
} XrSystemMarkerTrackingPropertiesANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। স্ট্রাকচার চেইন সম্পর্কে আরও বিস্তারিত জানতে, যে স্ট্রাকচারটি এক্সটেন্ড করা হচ্ছে ( XrSystemProperties ) সেটি দেখুন।
  • supportsMarkerTracking হলো একটি XrBool32 যা নির্দেশ করে যে বর্তমান সিস্টেমটি মার্কার ট্র্যাকিং সক্ষমতা প্রদান করে কিনা।
  • supportsMarkerSizeEstimation হলো একটি XrBool32 যা নির্দেশ করে যে বর্তমান সিস্টেমটি মার্কার সাইজ এস্টিমেশন প্রদান করে কিনা।
  • maxMarkerCount হলো মার্কারের সর্বোচ্চ সংখ্যা যা রানটাইম একই সময়ে ট্র্যাক করতে সক্ষম।

একটি অ্যাপ্লিকেশন xrGetSystemProperties কল করার সময় XrSystemProperties-কে XrSystemMarkerTrackingPropertiesANDROID স্ট্রাকচার দিয়ে প্রসারিত করে সিস্টেমটি মার্কার ট্র্যাকিং করতে সক্ষম কিনা তা পরীক্ষা করতে পারে । মার্কার ট্র্যাকার তৈরির জন্য রানটাইমকে অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করতে হবে যদি এবং শুধুমাত্র যদি supportsMarkerTracking XR_FALSE হয়।

যদি কোনো রানটাইম মার্কার ট্র্যাকিং সমর্থন করে, তাহলে maxMarkerCount অবশ্যই কমপক্ষে ১ হতে হবে।

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

ট্র্যাকিং মার্কার

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

অ্যাপ্লিকেশনটি xrCreateTrackableTrackerANDROID কল করে এবং XrTrackableTrackerCreateInfoANDROID :: trackableType এ ট্র্যাকযোগ্য প্রকার হিসেবে XR_TRACKABLE_TYPE_MARKER_ANDROID নির্দিষ্ট করে একটি XrTrackableTrackerANDROID তৈরি করে, সেইসাথে XrTrackableTrackerCreateInfoANDROID- এর পরবর্তী চেইনে একটি XrTrackableMarkerConfigurationANDROID যোগ করে একটি বৈধ কনফিগারেশন সেট করে।

যদি XrTrackableTrackerCreateInfoANDROID :: trackableType XR_TRACKABLE_TYPE_MARKER_ANDROID হয় এবং xrGetSystemProperties-এর মাধ্যমে XrSystemMarkerTrackingPropertiesANDROID :: supportsMarkerTracking XR_FALSE রিটার্ন করে, তাহলে রানটাইমকে অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করতে হবে।

XrTrackableMarkerConfigurationANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:

typedef struct XrTrackableMarkerConfigurationANDROID {
    XrStructureType                            type;
    void*                                      next;
    XrTrackableMarkerTrackingModeANDROID       trackingMode;
    uint32_t                                   databaseCount;
    const XrTrackableMarkerDatabaseANDROID*    databases;
} XrTrackableMarkerConfigurationANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।
  • trackingMode হলো একটি XrTrackableMarkerTrackingModeANDROID, যা ট্র্যাকিংয়ের জন্য কাঙ্ক্ষিত মোড নির্দেশ করে।
  • databaseCount হলো একটি uint32_t যা databases অ্যারের উপাদান সংখ্যা নির্দেশ করে।
  • databases হলো XrTrackableMarkerDatabaseANDROID- এর একটি অ্যারের দিকে নির্দেশকারী একটি পয়েন্টার, যার প্রতিটিতে একটি প্রদত্ত ডিকশনারি থেকে ট্র্যাক করার জন্য কাঙ্ক্ষিত মার্কারগুলো থাকে।

যখন XrTrackableTrackerCreateInfoANDROID :: trackableType XR_TRACKABLE_TYPE_MARKER_ANDROID এ সেট করে xrCreateTrackableTrackerANDROID কল করা হয়, তখন অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableTrackerCreateInfoANDROID :: next chain-এ একটি XrTrackableMarkerConfigurationANDROID যোগ করে একটি বৈধ কনফিগারেশন সেট করতে হবে। অন্যথায়, যদি ট্র্যাকার টাইপটি উপরে বর্ণিত উপায়ে সেট করা হয় কিন্তু কনফিগারেশন কাঠামোটি উপস্থিত না থাকে বা বৈধ না হয়, তাহলে রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।

যদি কোনো রানটাইম মার্কার সাইজ এস্টিমেশন সমর্থন করে, তাহলে অ্যাপ্লিকেশনটি সাইজ এস্টিমেশনের ব্যবহার নির্দেশ করার জন্য XrTrackableMarkerDatabaseEntryANDROID :: entries XrTrackableMarkerDatabaseEntryANDROID :: edgeSize 0 -তে সেট করতে পারে । অন্যথায়, অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableMarkerDatabaseEntryANDROID :: edgeSize কে একটি ধনাত্মক মানে সেট করতে হবে, নতুবা রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে

রানটাইমকে অবশ্যই xrGetAllTrackablesANDROID থেকে প্রাপ্ত আউটপুটকে trackingMode এবং XrTrackableMarkerDatabaseEntryANDROID :: edgeSize সাথে মিলিয়ে ফিল্টার করতে হবে।

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

XrTrackableMarkerTrackingModeANDROID enum-টি মার্কারগুলির সমর্থিত ট্র্যাকিং মোডগুলি বর্ণনা করে।

typedef enum XrTrackableMarkerTrackingModeANDROID {
    XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID = 0,
    XR_TRACKABLE_MARKER_TRACKING_MODE_STATIC_ANDROID = 1,
    XR_TRACKABLE_MARKER_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableMarkerTrackingModeANDROID;

গণনাকারীর বিবরণ

  • XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID — ডাইনামিক মার্কার ট্র্যাক করার জন্য। এই মোডটির নির্ভুলতা সর্বোচ্চ এবং এটি চলমান ও স্থির উভয় প্রকার মার্কারেই কাজ করে, তবে এর বিদ্যুৎ খরচও সর্বোচ্চ।
  • XR_TRACKABLE_MARKER_TRACKING_MODE_STATIC_ANDROID — স্থির মার্কার ট্র্যাক করার জন্য। এই মোডটি মূলত সেইসব মার্কারের জন্য উপযোগী যেগুলো স্থির বলে পরিচিত, যার ফলে ডাইনামিক মোডের তুলনায় বিদ্যুৎ খরচ কম হয়।

XrTrackableMarkerDatabaseANDROID কাঠামোটি একটি ডিকশনারি এবং ট্র্যাক করার জন্য সংশ্লিষ্ট মার্কার আইডিগুলো সংজ্ঞায়িত করে।

typedef struct XrTrackableMarkerDatabaseANDROID {
    XrTrackableMarkerDictionaryANDROID              dictionary;
    uint32_t                                        entryCount;
    const XrTrackableMarkerDatabaseEntryANDROID*    entries;
} XrTrackableMarkerDatabaseANDROID;

সদস্যদের বিবরণ

  • dictionary হলো XrTrackableMarkerDictionaryANDROID , যার অন্তর্ভুক্ত সমস্ত entries
  • entryCount হলো একটি uint32_t ভেরিয়েবল যা entries অ্যারের উপাদান সংখ্যা নির্দেশ করে। অ্যাপ্লিকেশনটি dictionary সমস্ত মার্কার ট্র্যাক করার জন্য entryCount 0 সেট করতে পারে
  • entries হলো XrTrackableMarkerDatabaseEntryANDROID- এর একটি অ্যারের পয়েন্টার, যার প্রতিটিতে ট্র্যাক করার জন্য একটি মার্কারের কনফিগারেশন থাকে।

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

  • XrTrackableMarkerDatabaseANDROID ব্যবহার করার আগে XR_ANDROID_trackables_marker এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।
  • dictionary অবশ্যই একটি বৈধ XrTrackableMarkerDictionaryANDROID ভ্যালু হতে হবে।
  • যদি entryCount 0 না হয়, তাহলে entries অবশ্যই entryCount সংখ্যক XrTrackableMarkerDatabaseEntryANDROID স্ট্রাকচারের একটি অ্যারের পয়েন্টার হতে হবে।

XrTrackableMarkerDictionaryANDROID enum-টি সমর্থিত মার্কার ডিকশনারিগুলোর বর্ণনা দেয়।

typedef enum XrTrackableMarkerDictionaryANDROID {
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_50_ANDROID = 0,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_100_ANDROID = 1,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_250_ANDROID = 2,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_1000_ANDROID = 3,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_50_ANDROID = 4,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_100_ANDROID = 5,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_250_ANDROID = 6,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_1000_ANDROID = 7,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_50_ANDROID = 8,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_100_ANDROID = 9,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_250_ANDROID = 10,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_1000_ANDROID = 11,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_50_ANDROID = 12,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_100_ANDROID = 13,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_250_ANDROID = 14,
    XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_1000_ANDROID = 15,
    XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_16H5_ANDROID = 16,
    XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_25H9_ANDROID = 17,
    XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_36H10_ANDROID = 18,
    XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_36H11_ANDROID = 19,
    XR_TRACKABLE_MARKER_DICTIONARY_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableMarkerDictionaryANDROID;

XrTrackableMarkerDatabaseEntryANDROID স্ট্রাকচারটি একটি ডিকশনারির একক মার্কার আইডি কনফিগার করে।

typedef struct XrTrackableMarkerDatabaseEntryANDROID {
    int32_t    id;
    float      edgeSize;
} XrTrackableMarkerDatabaseEntryANDROID;

সদস্যদের বিবরণ

  • id হলো ডিকশনারিতে দেওয়া মার্কার আইডি।
  • edgeSize হলো মিটারে মার্কার প্রান্তের আকার। যদি রানটাইম মার্কারের আকার অনুমান সমর্থন করে, তবে অ্যাপ্লিকেশনটি এটিকে শূন্যে সেট করতে পারে এবং মার্কারের আকার স্বয়ংক্রিয়ভাবে অনুমান করা হবে। যদি এটিকে শূন্যে সেট করা হয় কিন্তু রানটাইম মার্কারের আকার অনুমান সমর্থন না করে, তবে রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।

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

  • XrTrackableMarkerDatabaseEntryANDROID ব্যবহার করার আগে XR_ANDROID_trackables_marker এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।

মার্কার সংগ্রহ করুন

xrGetTrackableMarkerANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetTrackableMarkerANDROID(
    XrTrackableTrackerANDROID                   tracker,
    const XrTrackableGetInfoANDROID*            getInfo,
    XrTrackableMarkerANDROID*                   markerOutput);

প্যারামিটার বিবরণ

  • কোয়েরি করার জন্য tracker হলো XrTrackableTrackerANDROID
  • getInfo হলো XrTrackableGetInfoANDROID, যেখানে ট্র্যাকযোগ্য মার্কারটি পাওয়ার জন্য ব্যবহৃত তথ্য থাকে।
  • markerOutput হলো XrTrackableMarkerANDROID স্ট্রাকচারের একটি পয়েন্টার, যেখানে ট্র্যাকযোগ্য মার্কারটি ফেরত দেওয়া হয়।

যদি XrTrackableANDROID এর ট্র্যাকযোগ্য টাইপ XR_TRACKABLE_TYPE_MARKER_ANDROID না হয়, অথবা যদি XrTrackableTrackerANDROID- এর ট্র্যাকযোগ্য টাইপ XR_TRACKABLE_TYPE_MARKER_ANDROID না হয়, তাহলে রানটাইমকে অবশ্যই XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID রিটার্ন করতে হবে।

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

  • xrGetTrackableMarkerANDROID কল করার আগে XR_ANDROID_trackables_marker এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।
  • tracker অবশ্যই একটি বৈধ XrTrackableTrackerANDROID হ্যান্ডেল হতে হবে।
  • getInfo অবশ্যই একটি বৈধ XrTrackableGetInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে।
  • markerOutput অবশ্যই একটি XrTrackableMarkerANDROID স্ট্রাকচারের একটি পয়েন্টার হতে হবে।

রিটার্ন কোড

সাফল্য

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

XrTrackableMarkerANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:

typedef struct XrTrackableMarkerANDROID {
    XrStructureType                       type;
    void*                                 next;
    XrTrackingStateANDROID                trackingState;
    XrTime                                lastUpdatedTime;
    XrTrackableMarkerDictionaryANDROID    dictionary;
    int32_t                               markerId;
    XrPosef                               centerPose;
    XrExtent2Df                           extents;
} XrTrackableMarkerANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • trackingState হলো মার্কারটির XrTrackingStateANDROID
  • lastUpdatedTime হলো মার্কারটির সর্বশেষ আপডেটের XrTime
  • dictionary হলো মার্কারটির XrTrackableMarkerDictionaryANDROID
  • markerId হলো ডিকশনারিতে দেওয়া মার্কার আইডি।
  • centerPose হলো XrTrackableGetInfoANDROID :: baseSpace এ অবস্থিত মার্কারটির XrPosef । মার্কারটি XZ সমতলে অবস্থিত, যেখানে X অক্ষটি মার্কারটির ডানদিকে, Z অক্ষটি এর নিচের দিকে নির্দেশ করে এবং Y অক্ষটি নরমাল হিসেবে মার্কারটি থেকে বাইরের দিকে প্রসারিত হয়।
  • extents হলো মার্কারটির XrExtent2Df মাত্রা। বাউন্ডিং বক্সের সীমানাটি centerPose +/- ( extents / 2 ) বিন্দুতে অবস্থিত।

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

ট্র্যাকযোগ্য মার্কার পাওয়ার জন্য উদাহরণ কোড

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

XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session;   // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetSystemProperties xrGetSystemProperties;                       // previously initialized
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID;   // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID;               // previously initialized
PFN_xrGetTrackableMarkerANDROID xrGetTrackableMarkerANDROID;           // 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.

// Inspect system capability
XrSystemMarkerTrackingPropertiesANDROID markerProperty {
  .type = XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROID,
  .next = nullptr,
};
XrSystemProperties systemProperties {
  .type = XR_TYPE_SYSTEM_PROPERTIES,
  .next = &markerProperty,
};
CHK_XR(xrGetSystemProperties(instance, systemId, &systemProperties));
if (!markerProperty.supportsMarkerTracking) {
    // Marker tracking is not supported.
    return;
}

// Create a trackable tracker for marker tracking.
// If the runtime does not support size estimation, configures marker edge size of 0.1m.
XrTrackableMarkerDatabaseEntryANDROID markerEntries {
  .id = 0,
  .edgeSize = markerProperty.supportsMarkerSizeEstimation ? 0.0f : 0.1f,
};
XrTrackableMarkerDatabaseANDROID markerDatabases {
  .dictionary = XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_50_ANDROID,
  .entryCount = 1,
  .entries = &markerEntries,
};
XrTrackableMarkerConfigurationANDROID configuration {
  .type = XR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID,
  .next = nullptr,
  .trackingMode = XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID,
  .databaseCount = 1,
  .databases = &markerDatabases,
};
XrTrackableTrackerCreateInfoANDROID createInfo {
  .type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
  .next = &configuration,
  .trackableType = XR_TRACKABLE_TYPE_MARKER_ANDROID,
};
XrTrackableTrackerANDROID markerTracker;
auto res = xrCreateTrackableTrackerANDROID(session, &createInfo, &markerTracker);
if (res == XR_ERROR_PERMISSION_INSUFFICIENT) {
    // Handle permission requests.
}
CHK_XR(res);

// Get markers.
std::vector<XrTrackableANDROID> trackables(markerProperty.maxMarkerCount);
std::vector<XrTrackableMarkerANDROID> markers(markerProperty.maxMarkerCount, {
  .type = XR_TYPE_TRACKABLE_MARKER_ANDROID,
  .next = nullptr,
});
uint32_t markerSize = 0;
CHK_XR(xrGetAllTrackablesANDROID(markerTracker, markerProperty.maxMarkerCount, &markerSize,
                                 trackables.data()));
for (int i = 0; i < markerSize; i++) {
    XrTrackableGetInfoANDROID getInfo {
      .type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID,
      .next = nullptr,
      .trackable = trackables[i],
      .baseSpace = appSpace,
      .time = updateTime,
    };
    CHK_XR(xrGetTrackableMarkerANDROID(markerTracker, &getInfo, &markers[i]));
    // Handle markers.
}

// Release trackable tracker.
CHK_XR(xrDestroyTrackableTrackerANDROID(markerTracker));

নতুন কমান্ড

নতুন কাঠামো

নতুন এনাম

নতুন এনাম ধ্রুবক

  • XR_ANDROID_TRACKABLES_MARKER_EXTENSION_NAME
  • XR_ANDROID_trackables_marker_SPEC_VERSION
  • XrStructureType সম্প্রসারণ :

    • XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROID
    • XR_TYPE_TRACKABLE_MARKER_ANDROID
    • XR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID
  • XrTrackableTypeANDROID সম্প্রসারণ করা হচ্ছে :

    • XR_TRACKABLE_TYPE_MARKER_ANDROID

সমস্যা

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

  • রিভিশন 1, 2025-07-23 (লেভানা চেন)

    • প্রাথমিক সম্প্রসারণের বিবরণ।