XR_ANDROID_trackables_marker
নামের স্ট্রিং
XR_ANDROID_trackables_marker
এক্সটেনশনের ধরন
ইনস্ট্যান্স এক্সটেনশন
রেজিস্টার করা এক্সটেনশন নম্বর
708
সংশোধন
1
অনুমোদনের স্ট্যাটাস
অনুমোদিত নয়
এক্সটেনশন ও ভার্সন ডিপেন্ডেন্সি
XR_ANDROID_trackables
বন্ধ হয়ে যাওয়ার স্ট্যাটাস
XR_EXT_spatial_marker_trackingএক্সটেনশন দ্বারা বন্ধ করা হয়েছে
শেষবার পরিবর্তন করার তারিখ
2025-07-23
IP স্ট্যাটাস
IP সংক্রান্ত কোনও দাবি নেই।
কন্ট্রিবিউটর
ক্রিস্টোফার ডোর, Google
ডিয়েগো টিপাল্ডি, Google
লেভানা চেন, Google
জ্যারেড ফাইন্ডার, Google
স্পেন্সার কুইন, Google
নিহাভ জৈন, Google
কেন ম্যাককে, Google
ড্যানিয়েল গুটেনবার্গ, Qualcomm
এক নজরে
এই এক্সটেনশন ফিজিক্যাল মার্কার ট্র্যাকিং চালু করে এবং অ্যাপ্লিকেশনগুলিকে দক্ষতার সাথে ফিজিক্যাল মার্কারগুলিতে XR কন্টেন্ট অ্যাটাচ করতে দেয়।
এক্সটেনশনটি সুপরিচিত মার্কারের ধরন, বিশেষ করে ArUco এবং April ট্যাগ সমর্থন করে। এটি রানটাইমকে মার্কার সাইজ অনুমান করার সুবিধা ঐচ্ছিকভাবে চালু করতে দেয়।
অনুমতি
Android অ্যাপ্লিকেশনের ম্যানিফেস্টে 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 কল করার সময় XrSystemMarkerTrackingPropertiesANDROID স্ট্রাকচারের সাথে XrSystemProperties এক্সটেন্ড করার মাধ্যমে সিস্টেম মার্কার ট্র্যাকিং করতে সক্ষম কিনা তা কোনও অ্যাপ্লিকেশন চেক করতে পারে। মার্কার ট্র্যাকার তৈরির জন্য রানটাইম অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করবে, যদি এবং শুধুমাত্র যদি supportsMarkerTracking XR_FALSE হয়।
রানটাইম মার্কার ট্র্যাকিং সাপোর্ট করলে, maxMarkerCount অবশ্যই কমপক্ষে ১ হতে হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSystemMarkerTrackingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_markerএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
মার্কার ট্র্যাক করা
এই এক্সটেনশন XR_TRACKABLE_TYPE_MARKER_ANDROID-কে XrTrackableTypeANDROID-এ যোগ করে।
অ্যাপ্লিকেশনটি xrCreateTrackableTrackerANDROID কল করে এবং XrTrackableTrackerCreateInfoANDROID :: trackableType-এ ট্র্যাকযোগ্য ধরন হিসেবে XR_TRACKABLE_TYPE_MARKER_ANDROID নির্দিষ্ট করে XrTrackableTrackerANDROID তৈরি করে, এর পাশাপাশি XrTrackableTrackerCreateInfoANDROID-এর পরবর্তী চেনে XrTrackableMarkerConfigurationANDROID যোগ করে একটি সঠিক কনফিগারেশন সেট করে।
XrTrackableTrackerCreateInfoANDROID :: trackableType যদি XR_TRACKABLE_TYPE_MARKER_ANDROID হয় এবং XrSystemMarkerTrackingPropertiesANDROID :: supportsMarkerTracking যদি xrGetSystemProperties-এর মাধ্যমে 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-এর একটি অ্যারের পয়েন্টার, যার প্রতিটিতে ট্র্যাক করার জন্য প্রদত্ত অভিধান থেকে কাঙ্ক্ষিত মার্কার থাকে।
xrCreateTrackableTrackerANDROID কল করার সময় XrTrackableTrackerCreateInfoANDROID :: trackableType-কে XR_TRACKABLE_TYPE_MARKER_ANDROID-এ সেট করার সময় XrTrackableTrackerCreateInfoANDROID :: next চেনে XrTrackableMarkerConfigurationANDROID যোগ করে অ্যাপ্লিকেশনকে অবশ্যই সঠিক কনফিগারেশন সেট করতে হবে। অন্যথায়, ট্র্যাকার টাইপ উপরে উল্লেখ করা অনুযায়ী সেট করা থাকলেও কনফিগারেশন স্ট্রাকচার না থাকলে বা সঠিক না হলে, রানটাইমকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে।
কোনও রানটাইম মার্কার সাইজ অনুমান করা সাপোর্ট করলে, অ্যাপ্লিকেশনটি সাইজ অনুমান করার ব্যবহার নির্দেশ করতে XrTrackableMarkerDatabaseANDROID :: entries-এ XrTrackableMarkerDatabaseEntryANDROID :: edgeSize-কে 0-এ সেট করতে পারে। অন্যথায়, অ্যাপ্লিকেশনকে অবশ্যই XrTrackableMarkerDatabaseEntryANDROID :: edgeSize-কে পজিটিভ ভ্যালুতে সেট করতে হবে অথবা রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।
trackingMode এবং XrTrackableMarkerDatabaseEntryANDROID :: edgeSize-এর সাথে ম্যাচ করার জন্য রানটাইমকে xrGetAllTrackablesANDROID থেকে আউটপুট অবশ্যই ফিল্টার করতে হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrTrackableMarkerConfigurationANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_markerএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
trackingModeঅবশ্যই একটি সঠিক XrTrackableMarkerTrackingModeANDROID ভ্যালু হতে হবে -
databasesঅবশ্যইdatabaseCountটি সঠিক XrTrackableMarkerDatabaseANDROID স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
databaseCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
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;
Enumerant-এর বিবরণ
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-এ সব মার্কার ট্র্যাক করার জন্যentryCount0সেট করতে পারবে।entriesহল XrTrackableMarkerDatabaseEntryANDROID-এর অ্যারের একটি পয়েন্টার, যার প্রত্যেকটিতে ট্র্যাক করার জন্য মার্কারের কনফিগারেশন থাকে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrTrackableMarkerDatabaseANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_markerএক্সটেনশন অবশ্যই চালু করতে হবে -
dictionaryঅবশ্যই একটি সঠিক XrTrackableMarkerDictionaryANDROID ভ্যালু হতে হবে -
entryCountযদি0না হয়, তাহলেentriesঅবশ্যইentryCountXrTrackableMarkerDatabaseEntryANDROID স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে
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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_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).
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrTrackableMarkerANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_markerএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_TRACKABLE_MARKER_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
trackingStateঅবশ্যই একটি সঠিক XrTrackingStateANDROID ভ্যালু হতে হবে -
dictionaryঅবশ্যই একটি সঠিক XrTrackableMarkerDictionaryANDROID ভ্যালু হতে হবে
ট্র্যাক করা যায় এমন মার্কার পাওয়ার জন্য কোডের উদাহরণ
নিম্নলিখিত উদাহরণ কোডটি দেখায় যে কীভাবে ট্র্যাকযোগ্য মার্কার পেতে হয়।
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));
নতুন কমান্ড
নতুন স্ট্রাকচার
- XrTrackableMarkerANDROID
- XrTrackableMarkerDatabaseANDROID
- XrTrackableMarkerDatabaseEntryANDROID
XrSystemProperties এক্সটেন্ড করা হচ্ছে :
XrTrackableTrackerCreateInfoANDROID এক্সটেন্ড করা হচ্ছে :
নতুন Enum
নতুন Enum কনস্ট্যান্ট
XR_ANDROID_TRACKABLES_MARKER_EXTENSION_NAMEXR_ANDROID_trackables_marker_SPEC_VERSIONXrStructureType এক্সটেন্ড করা হচ্ছে :
XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROIDXR_TYPE_TRACKABLE_MARKER_ANDROIDXR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID
XrTrackableTypeANDROID এক্সটেন্ড করা হচ্ছে :
XR_TRACKABLE_TYPE_MARKER_ANDROID
ইস্যু
ভার্সনের ইতিহাস
সংশোধন ১, ২৩-০৭-২০২৫ (Levana Chen)
- এক্সটেনশনের প্রাথমিক বিবরণ।