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 অবশ্যই কমপক্ষে ১ হতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSystemMarkerTrackingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_markerএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
ট্র্যাকিং মার্কার
এই এক্সটেনশনটি 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 সাথে মিলিয়ে ফিল্টার করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- 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;
গণনাকারীর বিবরণ
-
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 ভ্যালু হতে হবে। - যদি
entryCount0না হয়, তাহলে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 ) বিন্দুতে অবস্থিত।
বৈধ ব্যবহার (অন্তর্নিহিত)
- 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-এর সম্প্রসারণ:
নতুন এনাম
নতুন এনাম ধ্রুবক
-
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 (লেভানা চেন)
- প্রাথমিক সম্প্রসারণের বিবরণ।