XR_ANDROID_trackables_image
নাম স্ট্রিং
XR_ANDROID_trackables_image
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
৭১০
সংশোধন
১
অনুমোদনের অবস্থা
অনুমোদিত নয়
এক্সটেনশন এবং সংস্করণ নির্ভরতা
XR_EXT_future
এবং
XR_ANDROID_trackables
সর্বশেষ সংশোধনের তারিখ
২০২৫-০৪-০৮
আইপি স্ট্যাটাস
কোনো জ্ঞাত আইপি দাবি নেই।
অবদানকারীরা
ক্রিস্টোফার ডোয়ার, গুগল
লেভানা চেন, গুগল
জ্যারেড ফাইন্ডার, গুগল
স্পেন্সার কুইন, গুগল
নিহাব জৈন, গুগল
ডিয়েগো টিপাল্ডি, গুগল
ড্যানিয়েল গুটেনবার্গ, কোয়ালকম
মার্ক ভাদাসি, কোয়ালকম
মার্কাস বার্কনার, কোয়ালকম
ম্যাক্সিমিলিয়ান মেয়ার, কোয়ালকম
সংক্ষিপ্ত বিবরণ
এই এক্সটেনশনটি ইনপুট রেফারেন্স ইমেজের সেট দ্বারা নির্দিষ্ট প্ল্যানার ইমেজ ট্র্যাক করতে সক্ষম করে।
অনুমতি
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির ম্যানিফেস্টে অবশ্যই android.permission.SCENE_UNDERSTANDING_COARSE পারমিশনটি তালিকাভুক্ত থাকতে হবে, কারণ এই এক্সটেনশনটি XR_ANDROID_trackables উপর নির্ভরশীল এবং পরিবেশের জ্যামিতি প্রকাশ করে। android.permission.SCENE_UNDERSTANDING_COARSE পারমিশনটিকে একটি বিপজ্জনক পারমিশন হিসেবে বিবেচনা করা হয়।
(সুরক্ষার স্তর: বিপজ্জনক)
সিস্টেমের সক্ষমতা পরীক্ষা করুন
XrSystemImageTrackingPropertiesANDROID স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSystemImageTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsImageTracking;
XrBool32 supportsPhysicalSizeEstimation;
uint32_t maxTrackedImageCount;
uint32_t maxLoadedImageCount;
} XrSystemImageTrackingPropertiesANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। স্ট্রাকচার চেইন সম্পর্কে আরও বিস্তারিত জানতে, যে স্ট্রাকচারটি এক্সটেন্ড করা হচ্ছে ( XrSystemProperties ) সেটি দেখুন। -
supportsImageTrackingহলো একটিXrBool32যা নির্দেশ করে বর্তমান সিস্টেমে ইমেজ ট্র্যাকিং সক্ষমতা আছে কিনা। -
supportsPhysicalSizeEstimationহলো একটিXrBool32যা নির্দেশ করে যে বর্তমান সিস্টেমটি ছবির আকার অনুমান করার সুবিধা প্রদান করে কিনা। -
maxTrackedImageCountহলো একই সময়ে ট্র্যাক করা যেতে পারে এমন মোট সর্বোচ্চ ছবির সংখ্যা। -
maxLoadedImageCountহলো সমস্ত ডেটাবেস জুড়ে লোড করা যেতে পারে এমন রেফারেন্স ইমেজের মোট সর্বোচ্চ সংখ্যা।
একটি অ্যাপ্লিকেশন xrGetSystemProperties কল করার সময় XrSystemProperties-কে XrSystemImageTrackingPropertiesANDROID স্ট্রাকচার দিয়ে বর্ধিত করে সিস্টেমটি ইমেজ ট্র্যাকিং করতে সক্ষম কিনা তা যাচাই করতে পারে । ইমেজ ট্র্যাকার তৈরির জন্য রানটাইমকে অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করতে হবে যদি এবং শুধুমাত্র যদি supportsImageTracking XR_FALSE হয়।
যদি কোনো রানটাইম ইমেজ ট্র্যাকিং সমর্থন করে, তবে এটিকে যেকোনো নির্দিষ্ট সময়ে maxTrackedImageCount সংখ্যক ট্র্যাক করা ইমেজ সমর্থন করতে হবে ।
যদি কোনো রানটাইম ইমেজ ট্র্যাকিং সমর্থন করে, তবে তাকে যেকোনো নির্দিষ্ট সময়ে maxLoadedImageCount ইমেজ লোড করার ক্ষমতা রাখতে হবে ।
যদি কোনো রানটাইম ইমেজ সাইজ এস্টিমেশন সমর্থন করে, তাহলে অ্যাপ্লিকেশনটি সাইজ এস্টিমেশন ব্যবহারের ইঙ্গিত দিতে XrTrackableImageDatabaseEntryANDROID :: physicalWidth 0 সেট করতে পারে । অন্যথায়, অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableImageDatabaseEntryANDROID :: physicalWidth একটি ধনাত্মক মানে সেট করতে হবে, নইলে XR_ERROR_VALIDATION_FAILURE রিটার্ন করা হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSystemImageTrackingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SYSTEM_IMAGE_TRACKING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
ডাটাবেস তৈরি করা
অ্যাপ্লিকেশনটি এক বা একাধিক XrTrackableImageDatabaseEntryANDROID স্ট্রাকচার তৈরি করে এবং সেগুলোকে একটি XrTrackableImageDatabaseCreateInfoANDROID স্ট্রাকচারের মাধ্যমে xrCreateTrackableImageDatabaseAsyncANDROID ফাংশনে পাস করার মাধ্যমে একটি XrTrackableImageDatabaseANDROID হ্যান্ডেল তৈরি করতে পারে ।
একটি XrTrackableImageDatabaseANDROID হ্যান্ডেল তৈরি করার সময় অ্যাপ্লিকেশনটিকে অবশ্যই অন্তত একটি XrTrackableImageDatabaseEntryANDROID প্রদান করতে হবে ।
একটি XrTrackableImageDatabaseANDROID হলো একটি হ্যান্ডেল, যা পরিবেশে শনাক্তযোগ্য ও ট্র্যাকযোগ্য এক সেট প্রক্রিয়াজাত রেফারেন্স ইমেজকে প্রতিনিধিত্ব করে।
XR_DEFINE_HANDLE(XrTrackableImageDatabaseANDROID)
XrTrackableImageDatabaseEntryANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrTrackableImageDatabaseEntryANDROID {
XrStructureType type;
const void* next;
XrTrackableImageTrackingModeANDROID trackingMode;
float physicalWidth;
uint32_t imageWidth;
uint32_t imageHeight;
XrTrackableImageFormatANDROID format;
uint32_t bufferSize;
const uint8_t* buffer;
} XrTrackableImageDatabaseEntryANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
trackingModeহলো একটি XrTrackableImageTrackingModeANDROID , যা ট্র্যাকিংয়ের জন্য কাঙ্ক্ষিত মোড নির্দেশ করে। -
physicalWidthমিটারে ছবির প্রস্থ নির্দেশ করে। এর মান শূন্য হলে, ছবির আকার অনলাইনে অনুমান করা হবে। -
imageWidthপিক্সেল এককে ছবির প্রস্থ নির্দেশ করে। -
imageHeightপিক্সেল এককে ছবির উচ্চতা নির্দেশ করে। -
formatহলো একটি XrTrackableImageFormatANDROID, যাbufferথাকা ইমেজ ডেটার ফরম্যাট নির্দেশ করে। -
bufferSizebufferবাইট দৈর্ঘ্য নির্দেশ করে। -
bufferহলো একটিuint8_tবাফার যা রেফারেন্স ইমেজের পিক্সেল ডেটা ধারণ করে।bufferএর বিষয়বস্তু অবশ্যই ডাটাবেস তৈরির অ্যাসিঙ্ক অপারেশন চলাকালীন বৈধ থাকতে হবে, যা xrCreateTrackableImageDatabaseAsyncANDROID দ্বারা শুরু হয় এবং xrCreateTrackableImageDatabaseCompleteANDROID দ্বারা সম্পন্ন হয়।
যদি XrSystemImageTrackingPropertiesANDROID :: supportsPhysicalSizeEstimation মান XR_TRUE হয়, তবে অনলাইন আকার অনুমানের অনুরোধ করার জন্য অ্যাপ্লিকেশনটি physicalWidth এর মান 0 নির্ধারণ করতে পারে ।
যদি এন্ট্রির imageWidth , imageHeight এবং format এর উপর ভিত্তি করে bufferSize প্রত্যাশিত আকারের সাথে না মেলে, তাহলে রানটাইম xrCreateTrackableImageDatabaseAsyncANDROID থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে পারে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrTrackableImageDatabaseEntryANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_TRACKABLE_IMAGE_DATABASE_ENTRY_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
trackingModeঅবশ্যই একটি বৈধ XrTrackableImageTrackingModeANDROID ভ্যালু হতে হবে। -
formatঅবশ্যই একটি বৈধ XrTrackableImageFormatANDROID মান হতে হবে -
bufferঅবশ্যইbufferSizeuint8_tমানের একটি অ্যারের পয়েন্টার হতে হবে। -
bufferSizeপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
XrTrackableImageDatabaseCreateInfoANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrTrackableImageDatabaseCreateInfoANDROID {
XrStructureType type;
const void* next;
uint32_t entryCount;
const XrTrackableImageDatabaseEntryANDROID* entries;
} XrTrackableImageDatabaseCreateInfoANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
entryCountহলো একটিuint32_tযাentriesঅ্যারের উপাদান সংখ্যা নির্দেশ করে। -
entriesহলো XrTrackableImageDatabaseEntryANDROID স্ট্রাকচারগুলোর একটি অ্যারে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrTrackableImageDatabaseCreateInfoANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_TRACKABLE_IMAGE_DATABASE_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
entriesঅবশ্যইentryCountসংখ্যক বৈধ XrTrackableImageDatabaseEntryANDROID স্ট্রাকচারের একটি অ্যারের পয়েন্টার হতে হবে। -
entryCountপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
XrCreateTrackableImageDatabaseCompletionANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrCreateTrackableImageDatabaseCompletionANDROID {
XrStructureType type;
void* next;
XrResult futureResult;
XrTrackableImageDatabaseANDROID database;
} XrCreateTrackableImageDatabaseCompletionANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
futureResultহলো অ্যাসিঙ্ক্রোনাস অপারেশনটির XrResult । -
databaseহলো তৈরি করা XrTrackableImageDatabaseANDROID হ্যান্ডেল।
ভবিষ্যতের রিটার্ন কোড
futureResult মান:
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_SESSION_LOST -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_LIMIT_REACHED
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrCreateTrackableImageDatabaseCompletionANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_CREATE_TRACKABLE_IMAGE_DATABASE_COMPLETION_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
futureResultঅবশ্যই একটি বৈধ XrResult মান হতে হবে -
databaseঅবশ্যই একটি বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেল হতে হবে।
xrCreateTrackableImageDatabaseAsyncANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateTrackableImageDatabaseAsyncANDROID(
XrSession session,
const XrTrackableImageDatabaseCreateInfoANDROID* createInfo,
XrFutureEXT* future);
প্যারামিটার বিবরণ
-
sessionহলো xrCreateSession ব্যবহার করে পূর্বে তৈরি করা একটি XrSession- এর হ্যান্ডেল। -
createInfoহলো XrTrackableImageDatabaseCreateInfoANDROID স্ট্রাকচারের একটি পয়েন্টার। -
futureহলো তৈরি করাXrFutureEXTএর একটি পয়েন্টার।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrCreateTrackableImageDatabaseAsyncANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে। -
createInfoঅবশ্যই একটি বৈধ XrTrackableImageDatabaseCreateInfoANDROID স্ট্রাকচারের একটি পয়েন্টার হতে হবে। -
futureঅবশ্যই একটিXrFutureEXTমানের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FEATURE_UNSUPPORTED -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_IMAGE_FORMAT_UNSUPPORTED_ANDROID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_VALIDATION_FAILURE
xrCreateTrackableImageDatabaseCompleteANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateTrackableImageDatabaseCompleteANDROID(
XrSession session,
XrFutureEXT future,
XrCreateTrackableImageDatabaseCompletionANDROID* completion);
প্যারামিটার বিবরণ
-
sessionহলো xrCreateSession ব্যবহার করে পূর্বে তৈরি করা একটি XrSession- এর হ্যান্ডেল। -
futureহলো ভবিষ্যতেরXrFutureEXTযা সম্পূর্ণ করতে হবে। -
completionহলো XrCreateTrackableImageDatabaseCompletionANDROID নামক একটি স্ট্রাকচারের পয়েন্টার, যা অপারেশনটির ফলাফল ধারণ করে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrCreateTrackableImageDatabaseCompleteANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে। -
completionঅবশ্যই একটি XrCreateTrackableImageDatabaseCompletionANDROID স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_FUTURE_INVALID_EXT -
XR_ERROR_FUTURE_PENDING_EXT -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_VALIDATION_FAILURE
xrDestroyTrackableImageDatabaseANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroyTrackableImageDatabaseANDROID(
XrTrackableImageDatabaseANDROID database);
প্যারামিটার বিবরণ
-
databaseহলো ধ্বংস করার জন্য XrTrackableImageDatabaseANDROID হ্যান্ডেল।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrDestroyTrackableImageDatabaseANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
databaseঅবশ্যই একটি বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেল হতে হবে।
থ্রেড নিরাপত্তা
-
databaseএবং এর যেকোনো চাইল্ড হ্যান্ডেলে অ্যাক্সেস অবশ্যই বাহ্যিকভাবে সিঙ্ক্রোনাইজড হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_RUNTIME_FAILURE
ট্র্যাকিং ছবি
এই এক্সটেনশনটি XrTrackableTypeANDROID- এ XR_TRACKABLE_TYPE_IMAGE_ANDROID যোগ করে।
ইমেজ ট্র্যাক করার জন্য, অ্যাপ্লিকেশনটি xrCreateTrackableTrackerANDROID কল করে এবং XrTrackableTrackerCreateInfoANDROID :: trackableType এ ট্র্যাকযোগ্য প্রকার হিসেবে XR_TRACKABLE_TYPE_IMAGE_ANDROID নির্দিষ্ট করে একটি XrTrackableTrackerANDROID তৈরি করতে পারে ।
যদি XrTrackableTrackerCreateInfoANDROID :: trackableType XR_TRACKABLE_TYPE_IMAGE_ANDROID হয় এবং xrGetSystemProperties- এর মাধ্যমে XrSystemImageTrackingPropertiesANDROID :: supportsImageTracking XR_FALSE রিটার্ন করে, তাহলে রানটাইমকে অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করতে হবে।
XrTrackableImageConfigurationANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrTrackableImageConfigurationANDROID {
XrStructureType type;
const void* next;
uint32_t databaseCount;
const XrTrackableImageDatabaseANDROID* databases;
} XrTrackableImageConfigurationANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
databaseCountহলো একটিuint32_tযাdatabasesথাকা উপাদানের সংখ্যা নির্দিষ্ট করে। -
databasesহলো XrTrackableImageDatabaseANDROID- এর একটি অ্যারে, যা ট্র্যাকারটি তৈরি করার জন্য ডেটাবেসগুলোকে নির্দিষ্ট করে।
অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableTrackerCreateInfoANDROID- এর next চেইনে একটি XrTrackableImageConfigurationANDROID যোগ করে একটি বৈধ কনফিগারেশন সেট করতে হবে। অন্যথায়, রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।
ট্র্যাকার তৈরি করার জন্য অ্যাপ্লিকেশনটিকে অবশ্যই অন্তত একটি XrTrackableImageDatabaseANDROID স্ট্রাকচার প্রদান করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrTrackableImageConfigurationANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
databasesঅবশ্যইdatabaseCountসংখ্যক বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেলের একটি অ্যারের পয়েন্টার হতে হবে। -
databaseCountপ্যারামিটারটি অবশ্যই0এর চেয়ে বড় হতে হবে।
XrTrackableImageTrackingModeANDROID enum-টি ইমেজের সমর্থিত ট্র্যাকিং মোডগুলো বর্ণনা করে।
typedef enum XrTrackableImageTrackingModeANDROID {
XR_TRACKABLE_IMAGE_TRACKING_MODE_DYNAMIC_ANDROID = 1,
XR_TRACKABLE_IMAGE_TRACKING_MODE_STATIC_ANDROID = 2,
XR_TRACKABLE_IMAGE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableImageTrackingModeANDROID;
গণনাকারীর বিবরণ
-
XR_TRACKABLE_IMAGE_TRACKING_MODE_DYNAMIC_ANDROID— এই মোডটির নির্ভুলতা সর্বোচ্চ এবং এটি চলমান ছবির লো-লেটেন্সি ট্র্যাকিং করতে দেয়। এছাড়াও, এর বিদ্যুৎ খরচও সর্বোচ্চ। -
XR_TRACKABLE_IMAGE_TRACKING_MODE_STATIC_ANDROID— এই মোডটি সেইসব ইমেজের জন্য ব্যবহার করা উচিত যেগুলো স্থির বা আধা-স্থির বলে পরিচিত। ডাইনামিক মোডের তুলনায় এই মোডে বিদ্যুৎ খরচ কম হয়। যদি কোনো স্থির ইমেজ সরানো হয়, তবে ডাইনামিক মোড ব্যবহারের চেয়ে অনেক বেশি ল্যাটেন্সিতে এটি আপডেট হবে।
XrTrackableImageFormatANDROID enum-টি ইমেজের সমর্থিত ফরম্যাটগুলো বর্ণনা করে।
typedef enum XrTrackableImageFormatANDROID {
XR_TRACKABLE_IMAGE_FORMAT_R8G8B8A8_ANDROID = 1,
XR_TRACKABLE_IMAGE_FORMAT_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableImageFormatANDROID;
গণনাকারীর বিবরণ
-
XR_TRACKABLE_IMAGE_FORMAT_R8G8B8A8_ANDROID— প্রতি চ্যানেলে ৮ বিটের রঙ এবং স্বচ্ছতার ডেটা সহ RGBA ইমেজ ফরম্যাট।
xrAddTrackableImageDatabaseANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrAddTrackableImageDatabaseANDROID(
XrTrackableTrackerANDROID tracker,
XrTrackableImageDatabaseANDROID database);
প্যারামিটার বিবরণ
-
trackerহলোdatabaseযোগ করার জন্য ব্যবহৃত XrTrackableTrackerANDROID হ্যান্ডেল। -
databaseহলোtrackerযোগ করার জন্য XrTrackableImageDatabaseANDROID হ্যান্ডেল।
যখন কোনো ট্র্যাকারে একটি XrTrackableImageDatabaseANDROID যোগ করা হয়, তখন ডিটেকশন ও ট্র্যাকিংয়ের জন্য সেই ডেটাবেসের রেফারেন্স ইমেজগুলোকেও বিবেচনা করতে হবে । এর পাশাপাশি, ট্র্যাকারটি প্রাথমিকভাবে তৈরি করার সময় xrAddTrackableImageDatabaseANDROID ব্যবহার করে অথবা XrTrackableImageConfigurationANDROID স্ট্রাকচারের মাধ্যমে পূর্বে যোগ করা অন্য যেকোনো ডেটাবেসকেও বিবেচনা করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrAddTrackableImageDatabaseANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
trackerঅবশ্যই একটি বৈধ XrTrackableTrackerANDROID হ্যান্ডেল হতে হবে। -
databaseঅবশ্যই একটি বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেল হতে হবে। -
databaseএবংtrackerউভয়কেই অবশ্যই একই XrSession থেকে তৈরি, বরাদ্দ বা পুনরুদ্ধার করা হয়ে থাকতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_VALIDATION_FAILURE
xrRemoveTrackableImageDatabaseANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrRemoveTrackableImageDatabaseANDROID(
XrTrackableTrackerANDROID tracker,
XrTrackableImageDatabaseANDROID database);
প্যারামিটার বিবরণ
-
trackerহলো সেই XrTrackableTrackerANDROID হ্যান্ডেল, যেখান থেকেdatabaseমুছে ফেলতে হবে। -
trackerথেকে অপসারণ করার জন্যdatabaseহলো XrTrackableImageDatabaseANDROID হ্যান্ডেল।
যখন একটি XrTrackableTrackerANDROID থেকে একটি XrTrackableImageDatabaseANDROID সরানো হয়, তখন সেই ডাটাবেসের XrTrackableImageDatabaseEntryANDROID কাঠামোসমূহকে সনাক্তকরণ এবং ট্র্যাকিংয়ের জন্য আর বিবেচনা করা যাবে না। সেই ডাটাবেসের সক্রিয়ভাবে ট্র্যাক করা কোনো এন্ট্রি আর রিপোর্ট করা যাবে না। এই অপারেশনের অংশ হিসেবে সরানো XrTrackableImageDatabaseANDROID হ্যান্ডেলটি পরোক্ষভাবে ধ্বংস করা যাবে না।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrRemoveTrackableImageDatabaseANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
trackerঅবশ্যই একটি বৈধ XrTrackableTrackerANDROID হ্যান্ডেল হতে হবে। -
databaseঅবশ্যই একটি বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেল হতে হবে। -
databaseএবংtrackerউভয়কেই অবশ্যই একই XrSession থেকে তৈরি, বরাদ্দ বা পুনরুদ্ধার করা হয়ে থাকতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_VALIDATION_FAILURE
ছবি পাওয়া
xrGetTrackableImageANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrGetTrackableImageANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableImageANDROID* trackable);
প্যারামিটার বিবরণ
- কোয়েরি করার জন্য
trackerহলো XrTrackableTrackerANDROID । -
getInfoহলো XrTrackableGetInfoANDROID, যেখানে ট্র্যাকযোগ্য কিউআর কোড পাওয়ার জন্য ব্যবহৃত তথ্য থাকে। -
trackableহলো XrTrackableImageANDROID স্ট্রাকচারের একটি পয়েন্টার, যেখানে ট্র্যাকযোগ্য ছবিটি ফেরত দেওয়া হয়।
যদি XrTrackableANDROID এর ট্র্যাকযোগ্য টাইপ XR_TRACKABLE_TYPE_IMAGE_ANDROID না হয়, অথবা যদি XrTrackableTrackerANDROID- এর ট্র্যাকযোগ্য টাইপ XR_TRACKABLE_TYPE_IMAGE_ANDROID না হয়, তাহলে রানটাইমকে অবশ্যই XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID রিটার্ন করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrGetTrackableImageANDROID কল করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
trackerঅবশ্যই একটি বৈধ XrTrackableTrackerANDROID হ্যান্ডেল হতে হবে। -
getInfoঅবশ্যই একটি বৈধ XrTrackableGetInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে। -
trackableঅবশ্যই একটি XrTrackableImageANDROID স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_TIME_INVALID -
XR_ERROR_VALIDATION_FAILURE
XrTrackableImageANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrTrackableImageANDROID {
XrStructureType type;
const void* next;
XrTrackingStateANDROID trackingState;
XrTime lastUpdatedTime;
XrTrackableImageDatabaseANDROID database;
uint32_t databaseEntryIndex;
XrPosef centerPose;
XrExtent2Df extents;
} XrTrackableImageANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
trackingStateহলো ইমেজটির XrTrackingStateANDROID । -
lastUpdatedTimeহলো ইমেজটির সর্বশেষ আপডেটেরXrTime। -
databaseহলো সেই XrTrackableImageDatabaseANDROID হ্যান্ডেল, যেখান থেকে এই ছবিটি ট্র্যাক করা হয়েছিল। -
databaseEntryIndexহলো সেই ইনডেক্স যাdatabaseএর XrTrackableImageDatabaseCreateInfoANDROID ::entriesঅ্যারেতে ম্যাপ করে। -
centerPoseহলো XrTrackableGetInfoANDROID ::baseSpaceএ অবস্থিত ছবিটির XrPosef । ছবিটি XZ সমতলে অবস্থিত, যেখানে X অক্ষ ছবিটির ডানদিকে এবং Z অক্ষ এর নিচের দিকে নির্দেশ করে। -
extentsহলো ছবিটির XrExtent2Df মাত্রা। বাউন্ডিং বক্সের সীমানাটিcenterPose+/- (extents/ 2 ) বিন্দুতে অবস্থিত।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrTrackableImageANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। typeঅবশ্যইXR_TYPE_TRACKABLE_IMAGE_ANDROIDহতে হবেnextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।-
trackingStateঅবশ্যই একটি বৈধ XrTrackingStateANDROID ভ্যালু হতে হবে। databaseঅবশ্যই একটি বৈধ XrTrackableImageDatabaseANDROID হ্যান্ডেল হতে হবে।
ব্যর্থতা পরিচালনা
অ্যাপ্লিকেশনটিকে অবশ্যই xrPollEvent ব্যবহার করে XrEventDataImageTrackingLostANDROID ইভেন্টটির জন্য পোল করতে হবে এবং এটিকে উপেক্ষা করা যাবে না।
XrEventDataImageTrackingLostANDROID স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrEventDataImageTrackingLostANDROID {
XrStructureType type;
const void* next;
XrTime time;
} XrEventDataImageTrackingLostANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
timeXrTime
XrEventDataImageTrackingLostANDROID ইভেন্টটি পাওয়া গেলে বোঝা যায় যে ইমেজ ট্র্যাকিং-এ একটি অভ্যন্তরীণ ত্রুটি ঘটেছে, যার ফলে বিদ্যমান রিসোর্সগুলো অকার্যকর হয়ে গেছে। অ্যাপ্লিকেশনটি যদি ইমেজ ট্র্যাকিং চালিয়ে যেতে চায়, তবে তাকে অবশ্যই সমস্ত XrTrackableImageDatabaseANDROID হ্যান্ডেল ধ্বংস করে পুনরায় তৈরি করতে হবে । এছাড়াও, অ্যাপ্লিকেশনটিকে ইমেজ ট্র্যাকিং সম্পর্কিত সমস্ত XrTrackableTrackerANDROID হ্যান্ডেল ধ্বংস করে পুনরায় তৈরি করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrEventDataImageTrackingLostANDROID ব্যবহার করার আগে
XR_ANDROID_trackables_imageএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_EVENT_DATA_IMAGE_TRACKING_LOST_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
ট্র্যাকযোগ্য ছবি পাওয়ার জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে ট্র্যাকযোগ্য ছবি পাওয়া যায়।
XrInstance instance; // Previously initialized.
XrSession session; // Previously initialized.
XrSystemId systemId; // Previously initialized.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetSystemProperties xrGetSystemProperties; // Previously initialized.
PFN_xrPollFutureEXT xrPollFutureEXT; // Previously initialized.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // Previously initialized.
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // Previously initialized.
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // Previously initialized.
PFN_xrGetTrackableImageANDROID xrGetTrackableImageANDROID; // Previously initialized.
PFN_xrCreateTrackableImageDatabaseAsyncANDROID xrCreateTrackableImageDatabaseAsyncANDROID; // Previously initialized.
PFN_xrCreateTrackableImageDatabaseCompleteANDROID xrCreateTrackableImageDatabaseCompleteANDROID; // Previously initialized.
PFN_xrDestroyTrackableImageDatabaseANDROID xrDestroyTrackableImageDatabaseANDROID; // Previously initialized.
PFN_xrAddTrackableImageDatabaseANDROID xrAddTrackableImageDatabaseANDROID; // Previously initialized.
PFN_xrRemoveTrackableImageDatabaseANDROID xrRemoveTrackableImageDatabaseANDROID; // 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
XrSystemImageTrackingPropertiesANDROID imageProperty {
.type = XR_TYPE_SYSTEM_IMAGE_TRACKING_PROPERTIES_ANDROID,
.next = nullptr,
};
XrSystemProperties systemProperties {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &imageProperty,
};
CHK_XR(xrGetSystemProperties(instance, systemId, &systemProperties));
if (!imageProperty.supportsImageTracking) {
// image tracking is not supported.
return;
}
uint8_t* imageBuffer; // Load the image buffer.
uint32_t imageBufferSize; // Get the image buffer size.
XrTrackableImageDatabaseEntryANDROID imageDatabaseEntries[1] = {
{
.type = XR_TYPE_TRACKABLE_IMAGE_DATABASE_ENTRY_ANDROID,
.next = nullptr,
.trackingMode = XR_TRACKABLE_IMAGE_TRACKING_MODE_STATIC_ANDROID,
.physicalWidth = 0.1f, // The width of the image in meters.
.imageWidth = 640,
.imageHeight = 480,
.format = XR_TRACKABLE_IMAGE_FORMAT_R8G8B8A8_ANDROID,
.bufferSize = imageBufferSize, // RGBA buffer size in bytes.
.buffer = imageBuffer, // RGBA data.
}
};
XrTrackableImageDatabaseCreateInfoANDROID imageDatabaseCreateInfo {
.type = XR_TYPE_TRACKABLE_IMAGE_DATABASE_CREATE_INFO_ANDROID,
.next = nullptr,
.entryCount = 1,
.entries = imageDatabaseEntries
};
XrFutureEXT imageDatabaseFuture;
CHK_XR(xrCreateTrackableImageDatabaseAsyncANDROID(session, &imageDatabaseCreateInfo, &imageDatabaseFuture));
bool keepLooping = true;
bool futureReady = false;
while (keepLooping) {
XrFuturePollInfoEXT pollInfo{
.type = XR_TYPE_FUTURE_POLL_INFO_EXT,
.future = imageDatabaseFuture,
};
XrFuturePollResultEXT pollResult{
.type = XR_TYPE_FUTURE_POLL_RESULT_EXT,
};
CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
if (pollResult.state == XR_FUTURE_STATE_READY_EXT) {
futureReady = true;
keepLooping = false;
} else {
// Throttle the loop to not fully expend this CPU core.
std::this_thread::yield();
}
}
XrTrackableImageDatabaseANDROID imageDatabase;
if (futureReady) {
XrCreateTrackableImageDatabaseCompletionANDROID imageDatabaseCompletion {
.type = XR_TYPE_CREATE_TRACKABLE_IMAGE_DATABASE_COMPLETION_ANDROID,
.next = nullptr,
};
CHK_XR(xrCreateTrackableImageDatabaseCompleteANDROID(session, imageDatabaseFuture, &imageDatabaseCompletion));
CHK_XR(imageDatabaseCompletion.futureResult);
imageDatabase = imageDatabaseCompletion.database;
}
XrTrackableImageConfigurationANDROID imageConfig {
.type = XR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROID,
.next = nullptr,
.databaseCount = 1,
.databases = &imageDatabase
};
XrTrackableTrackerCreateInfoANDROID createInfo {
.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &imageConfig,
.trackableType = XR_TRACKABLE_TYPE_IMAGE_ANDROID
};
XrTrackableTrackerANDROID imageTrackableTracker;
CHK_XR(xrCreateTrackableTrackerANDROID(session, &createInfo, &imageTrackableTracker));
XrTrackableImageDatabaseANDROID anotherImageDatabase; // Load another database.
// ... dynamically add it to the existing tracker
CHK_XR(xrAddTrackableImageDatabaseANDROID(imageTrackableTracker, anotherImageDatabase));
while (1) {
uint32_t trackableCountOutput = 0;
CHK_XR(xrGetAllTrackablesANDROID(imageTrackableTracker, 0, &trackableCountOutput, nullptr));
std::vector<XrTrackableANDROID> allImageTrackables;
allImageTrackables.resize(trackableCountOutput);
CHK_XR(xrGetAllTrackablesANDROID(imageTrackableTracker, 0, &trackableCountOutput, allImageTrackables.data()));
for (XrTrackableANDROID trackable : allImageTrackables) {
XrTrackableGetInfoANDROID imageGetInfo {
.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID,
.next = nullptr,
.trackable = trackable,
.baseSpace = appSpace,
.time = updateTime
};
XrTrackableImageANDROID trackableImage{
.type = XR_TYPE_TRACKABLE_IMAGE_ANDROID,
};
CHK_XR(xrGetTrackableImageANDROID(imageTrackableTracker, &imageGetInfo, &trackableImage));
// Use XrTrackableImageANDROID data.
(void)trackableImage.trackingState;
(void)trackableImage.lastUpdatedTime;
(void)trackableImage.centerPose;
(void)trackableImage.extents;
if (trackableImage.database == imageDatabase && trackableImage.databaseEntryIndex == 0) {
// Knowing which image the index of 0 maps to, use the specific image database
// entry (e.g. rendering A for image A).
}
// indices 1+N comparisons for another specific image database entry.
}
// Throttle the loop to not fully expend this CPU core.
std::this_thread::yield();
}
// Remove image database from an existing tracker to stop tracking the images
// of that specific database. To resume tracking of those images re-add the
// database at a later point.
CHK_XR(xrRemoveTrackableImageDatabaseANDROID(imageTrackableTracker, anotherImageDatabase));
// Destroy the image tracker to stop image tracking completely. Re-creating the
// image tracker with existing image databases will restart image tracking.
CHK_XR(xrDestroyTrackableTrackerANDROID(imageTrackableTracker));
// Destroy image databases to unload the associated resources. Re-creatingd
// databases requires going through the asynchronous creation procedure again.
CHK_XR(xrDestroyTrackableImageDatabaseANDROID(anotherImageDatabase));
CHK_XR(xrDestroyTrackableImageDatabaseANDROID(imageDatabase));
রানটাইমে ইমেজ ডেটাবেস পরিচালনার জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে ট্র্যাক করা ছবির সেট পরিবর্তন করতে হয়।
XrSession session; // Previously initialized.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // Previously initialized.
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // Previously initialized.
PFN_xrDestroyTrackableImageDatabaseANDROID xrDestroyTrackableImageDatabaseANDROID; // Previously initialized.
PFN_xrAddTrackableImageDatabaseANDROID xrAddTrackableImageDatabaseANDROID; // Previously initialized.
PFN_xrRemoveTrackableImageDatabaseANDROID xrRemoveTrackableImageDatabaseANDROID; // Previously initialized.
// See previous C++ sample for database and tracker initialization.
XrTrackableImageDatabaseANDROID imageDatabases[2]; // Previously initialized.
XrTrackableImageDatabaseANDROID anotherImageDatabase; // Previously initialized.
// Create the image tracker config with two input databases to track.
XrTrackableImageConfigurationANDROID imageConfig {
.type = XR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROID,
.next = nullptr,
.databaseCount = 2,
.databases = imageDatabases
};
XrTrackableTrackerCreateInfoANDROID createInfo {
.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &imageConfig,
.trackableType = XR_TRACKABLE_TYPE_IMAGE_ANDROID
};
XrTrackableTrackerANDROID imageTrackableTracker;
CHK_XR(xrCreateTrackableTrackerANDROID(session, &createInfo, &imageTrackableTracker));
// The tracker currently tracks the images of the two databases 'imageDatabases[0]' and
// 'imageDatabases[1]' supplied through 'imageConfig'.
CHK_XR(xrRemoveTrackableImageDatabaseANDROID(imageTrackableTracker, imageDatabases[1]));
// The tracker currently tracks 'imageDatabases[0]', but no longer tracks
// 'imageDatabases[1]'.
// The 'imageDatabases[1]' database handle is still valid.
CHK_XR(xrAddTrackableImageDatabaseANDROID(imageTrackableTracker, imageDatabases[1]));
// The tracker currently tracks 'imageDatabases[0]' and 'imageDatabases[1]'.
CHK_XR(xrDestroyTrackableImageDatabaseANDROID(imageDatabases[1]));
// The tracker currently tracks 'imageDatabases[0]', but no longer tracks
// 'imageDatabases[1]'.
// The 'imageDatabases[1]' database handle is no longer valid and the corresponding
// resources have been released internally. The database needs to be re-initialized
// and re-added to resume tracking of 'imageDatabases[0]'.
CHK_XR(xrAddTrackableImageDatabaseANDROID(imageTrackableTracker, anotherImageDatabase));
// The tracker currently tracks 'imageDatabases[0]' and 'anotherImageDatabase'.
CHK_XR(xrDestroyTrackableTrackerANDROID(imageTrackableTracker));
// The 'imageTrackableTracker' tracker handle is invalid and image tracking has been
// stopped.
// The 'imageDatabases[0]' and 'anotherImageDatabase' database handles are still valid.
// Create another the image tracker config to re-create the image tracker.
XrTrackableImageConfigurationANDROID anotherImageConfig {
.type = XR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROID,
.next = nullptr,
.databaseCount = 1,
.databases = &anotherImageDatabase
};
XrTrackableTrackerCreateInfoANDROID anotherCreateInfo {
.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &anotherImageConfig,
.trackableType = XR_TRACKABLE_TYPE_IMAGE_ANDROID
};
CHK_XR(xrCreateTrackableTrackerANDROID(session, &anotherCreateInfo, &imageTrackableTracker));
// The tracker handle has been re-initialized and image tracking has been started again.
// The tracker currently tracks 'anotherImageDatabase'.
// The 'imageDatabases[0]' database handle is still valid, but not currently tracked.
ইমেজ ট্র্যাকিং ব্যর্থতার প্রতিক্রিয়া জানানোর জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোডটি XrEventDataImageTrackingLostANDROID ইভেন্টের জন্য পোলিং করার মাধ্যমে ব্যর্থতা কীভাবে পরিচালনা করতে হয় তা দেখায়।
XrInstance instance; // Previously initialized.
XrSession session; // Previously initialized.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrPollFutureEXT xrPollFutureEXT; // Previously initialized.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // Previously initialized.
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // Previously initialized.
PFN_xrCreateTrackableImageDatabaseAsyncANDROID xrCreateTrackableImageDatabaseAsyncANDROID; // Previously initialized.
PFN_xrCreateTrackableImageDatabaseCompleteANDROID xrCreateTrackableImageDatabaseCompleteANDROID; // Previously initialized.
PFN_xrDestroyTrackableImageDatabaseANDROID xrDestroyTrackableImageDatabaseANDROID; // Previously initialized.
XrTrackableImageDatabaseEntryANDROID imageDatabaseEntries[1]; // Previously initialized.
XrTrackableImageDatabaseANDROID imageDatabase; // Previously initialized.
XrTrackableTrackerANDROID imageTrackableTracker; // Previously initialized.
// Initialize an event buffer to hold the output.
XrEventDataBuffer event = {
.type = XR_TYPE_EVENT_DATA_BUFFER,
};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
switch (event.type) {
case XR_TYPE_EVENT_DATA_IMAGE_TRACKING_LOST_ANDROID: {
const XrEventDataImageTrackingLostANDROID& eventdata =
*reinterpret_cast<XrEventDataImageTrackingLostANDROID*>(&event);
// All existing databases and trackers need to be destroyed.
CHK_XR(xrDestroyTrackableTrackerANDROID(imageTrackableTracker));
CHK_XR(xrDestroyTrackableImageDatabaseANDROID(imageDatabase));
// To resume image tracking, the database(s) and the tracker need to be re-created.
XrTrackableImageDatabaseCreateInfoANDROID imageDatabaseCreateInfo {
.type = XR_TYPE_TRACKABLE_IMAGE_DATABASE_CREATE_INFO_ANDROID,
.next = nullptr,
.entryCount = 1,
.entries = imageDatabaseEntries
};
XrFutureEXT imageDatabaseFuture;
CHK_XR(xrCreateTrackableImageDatabaseAsyncANDROID(session, &imageDatabaseCreateInfo, &imageDatabaseFuture));
while (true) {
XrFuturePollInfoEXT pollInfo{
.type = XR_TYPE_FUTURE_POLL_INFO_EXT,
.future = imageDatabaseFuture,
};
XrFuturePollResultEXT pollResult{
.type = XR_TYPE_FUTURE_POLL_RESULT_EXT,
};
CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
if (pollResult.state == XR_FUTURE_STATE_READY_EXT) {
break;
} else {
// Throttle the loop to not fully expend this CPU core.
std::this_thread::yield();
}
}
XrCreateTrackableImageDatabaseCompletionANDROID imageDatabaseCompletion {
.type = XR_TYPE_CREATE_TRACKABLE_IMAGE_DATABASE_COMPLETION_ANDROID,
.next = nullptr,
};
CHK_XR(xrCreateTrackableImageDatabaseCompleteANDROID(session, imageDatabaseFuture, &imageDatabaseCompletion));
CHK_XR(imageDatabaseCompletion.futureResult);
imageDatabase = imageDatabaseCompletion.database;
XrTrackableImageConfigurationANDROID imageConfig {
.type = XR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROID,
.next = nullptr,
.databaseCount = 1,
.databases = &imageDatabase
};
XrTrackableTrackerCreateInfoANDROID createInfo {
.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &imageConfig,
.trackableType = XR_TRACKABLE_TYPE_IMAGE_ANDROID
};
XrTrackableTrackerANDROID imageTrackableTracker;
CHK_XR(xrCreateTrackableTrackerANDROID(session, &createInfo, &imageTrackableTracker));
break;
}
}
}
নতুন অবজেক্টের প্রকারভেদ
নতুন কমান্ড
- xrAddTrackableImageDatabaseANDROID
- xrCreateTrackableImageDatabaseAsyncANDROID
- xrCreateTrackableImageDatabaseCompleteANDROID
- xrDestroyTrackableImageDatabaseANDROID
- xrGetTrackableImageANDROID
- xrRemoveTrackableImageDatabaseANDROID
নতুন কাঠামো
- XrCreateTrackableImageDatabaseCompletionANDROID
- XrEventDataImageTrackingLostANDROID
- XrTrackableImageANDROID
- XrTrackableImageConfigurationANDROID
- XrTrackableImageDatabaseCreateInfoANDROID
- XrTrackableImageDatabaseEntryANDROID
XrSystemProperties-এর সম্প্রসারণ :
নতুন এনাম
নতুন এনাম ধ্রুবক
-
XR_ANDROID_TRACKABLES_IMAGE_EXTENSION_NAME -
XR_ANDROID_trackables_image_SPEC_VERSION XrObjectType- এর সম্প্রসারণ:
-
XR_OBJECT_TYPE_TRACKABLE_IMAGE_DATABASE_ANDROID
-
XrResult- এর সম্প্রসারণ:
-
XR_ERROR_IMAGE_FORMAT_UNSUPPORTED_ANDROID
-
XrStructureType সম্প্রসারণ :
-
XR_TYPE_CREATE_TRACKABLE_IMAGE_DATABASE_COMPLETION_ANDROID -
XR_TYPE_EVENT_DATA_IMAGE_TRACKING_LOST_ANDROID -
XR_TYPE_SYSTEM_IMAGE_TRACKING_PROPERTIES_ANDROID -
XR_TYPE_TRACKABLE_IMAGE_ANDROID -
XR_TYPE_TRACKABLE_IMAGE_CONFIGURATION_ANDROID -
XR_TYPE_TRACKABLE_IMAGE_DATABASE_CREATE_INFO_ANDROID -
XR_TYPE_TRACKABLE_IMAGE_DATABASE_ENTRY_ANDROID
-
XrTrackableTypeANDROID সম্প্রসারণ করা হচ্ছে :
-
XR_TRACKABLE_TYPE_IMAGE_ANDROID
-
সমস্যা
সংস্করণ ইতিহাস
সংস্করণ ১, ২০২৫-০৪-০৮ (ড্যানিয়েল গুটেনবার্গ)
- প্রাথমিক সম্প্রসারণের বিবরণ।