নাম স্ট্রিং
XR_ANDROID_trackables_qr_code
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
460
রিভিশন
1
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধিত তারিখ
2025-02-05
আইপি স্ট্যাটাস
কোন পরিচিত আইপি দাবি.
অবদানকারী
ক্রিস্টোফার ডোয়ার, গুগল
লেভানা চেন, গুগল
জ্যারেড ফাইন্ডার, গুগল
স্পেন্সার কুইন, গুগল
নিহাভ জৈন, গুগল
দিয়েগো টিপালডি, গুগল
কেন ম্যাকে, গুগল
ড্যানিয়েল গুটেনবার্গ, কোয়ালকম
ওভারভিউ
এই এক্সটেনশনটি শারীরিক QR কোড ট্র্যাকিং এবং QR কোড ডেটা ডিকোডিং সক্ষম করে৷
সিস্টেমের ক্ষমতা পরিদর্শন করুন
XrSystemQrCodeTracking PropertiesANDROID
XrSystemQrCodeTrackingPropertiesANDROID
গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSystemQrCodeTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsQrCodeTracking;
XrBool32 supportsQrCodeSizeEstimation;
uint32_t maxQrCodeCount;
} XrSystemQrCodeTrackingPropertiesANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোরXrStructureType
। -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
supportsQrCodeTracking
হল একটিXrBool32
যা নির্দেশ করে যে বর্তমান সিস্টেম QR কোড ট্র্যাকিং ক্ষমতা প্রদান করে কিনা। -
supportsQrCodeSizeEstimation
হল একটিXrBool32
যা নির্দেশ করে যে বর্তমান সিস্টেম QR কোডের আকার অনুমান প্রদান করে কিনা। -
maxQrCodeCount
হল মোট সর্বাধিক সংখ্যক QR কোড যা একই সময়ে ট্র্যাক করা যায়।
একটি অ্যাপ্লিকেশন xrGetSystemProperties
কল করার সময় XrSystemQrCodeTrackingPropertiesANDROID
কাঠামোর সাথে XrSystemProperties
প্রসারিত করে QR কোড ট্র্যাকিং করতে সক্ষম কিনা তা পরীক্ষা করতে পারে। QR কোড ট্র্যাকার তৈরির জন্য রানটাইম অবশ্যই XR_ERROR_FEATURE_UNSUPPORTED
প্রদান করবে যদি এবং শুধুমাত্র যদি supportsQrCodeTracking
XR_FALSE
।
যদি একটি রানটাইম QR কোড ট্র্যাকিং সমর্থন করে, তবে এটি অবশ্যই যে কোনো সময়ে maxQrCodeCount
ট্র্যাক করা QR কোড সমর্থন করবে।
যদি একটি রানটাইম QR কোডের আকার অনুমান সমর্থন করে, তাহলে অ্যাপ্লিকেশনটি আকার অনুমানের ব্যবহার নির্দেশ করতে XrTrackableQrCodeConfigurationANDROID::qrCodeEdgeSize
0
সেট করতে পারে। অন্যথায়, অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableQrCodeConfigurationANDROID::qrCodeEdgeSize
একটি ইতিবাচক মান সেট করতে হবে বা XR_ERROR_VALIDATION_FAILURE
ফেরত দেওয়া হবে৷
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_trackables_qr_code
এক্সটেনশনটি অবশ্যইXrSystemQrCodeTrackingPropertiesANDROID
ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_TYPE_SYSTEM_QR_CODE_TRACKING_PROPERTIES_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
QR কোড ট্র্যাকিং
এই এক্সটেনশনটি XR_TRACKABLE_TYPE_QR_CODE_ANDROID
XrTrackableTypeANDROID
এ যোগ করে।
অ্যাপ্লিকেশনটি xrCreateTrackableTrackerANDROID
কল করে এবং XrTrackableTrackerCreateInfoANDROID XrTrackableTrackerCreateInfoANDROID::trackableType
এ QR কোড ট্র্যাক করার জন্য XR_TRACKABLE_TYPE_QR_CODE_ANDROID
ট্র্যাকযোগ্য টাইপ হিসাবে নির্দিষ্ট করে একটি XrTrackableTrackerANDROID
তৈরি করতে পারে ।
যদি XrTrackableTrackerCreateInfoANDROID::trackableType
হয় XR_TRACKABLE_TYPE_QR_CODE_ANDROID
এবং XrSystemQrCodeTrackingPropertiesANDROID::supportsQrCodeTracking
এর মাধ্যমে XR_ERROR_FEATURE_UNSUPPORTED
XR_FALSE
ফেরত দিতে হবে xrGetSystemProperties
।
XrTrackableQrCodeConfigurationANDROID
XrTrackableQrCodeConfigurationANDROID
কাঠামোটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrTrackableQrCodeConfigurationANDROID {
XrStructureType type;
const void* next;
XrQrCodeTrackingModeANDROID trackingMode;
float qrCodeEdgeSize;
} XrTrackableQrCodeConfigurationANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোরXrStructureType
। -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
trackingMode
হল একটিXrQrCodeTrackingModeANDROID
যা ট্র্যাকিংয়ের জন্য পছন্দসই মোড নির্দেশ করে৷ -
qrCodeEdgeSize
মিটারে QR কোড প্রান্তের আকার নির্দেশ করে। শূন্য হলে, QR কোডের আকার অনলাইনে অনুমান করা হবে।
XrTrackableTrackerCreateInfoANDROID
এর পরবর্তী চেইনে একটি XrTrackableQrCodeConfigurationANDROID
যোগ করে অ্যাপ্লিকেশনটিকে একটি বৈধ কনফিগারেশন সেট করতে হবে । অন্যথায়, রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE
ফেরত দেবে।
যদি রানটাইম QR কোডের আকার অনুমান সমর্থন করে, তাহলে অ্যাপ্লিকেশনটি আকার অনুমানের ব্যবহার নির্দেশ করতে XrTrackableQrCodeConfigurationANDROID::qrCodeEdgeSize
0
এ সেট করতে পারে । অন্যথায়, অ্যাপ্লিকেশনটিকে অবশ্যই XrTrackableQrCodeConfigurationANDROID::qrCodeEdgeSize
একটি ইতিবাচক মান সেট করতে হবে বা XR_ERROR_VALIDATION_FAILURE
ফেরত দেওয়া হবে৷
রানটাইমকে অবশ্যই xrGetAllTrackablesANDROID
থেকে আউটপুট ফিল্টার করতে হবে trackingMode
এবং qrCodeEdgeSize
সাথে মেলে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_trackables_qr_code
এক্সটেনশনটি অবশ্যইXrTrackableQrCodeConfigurationANDROID
ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_TYPE_TRACKABLE_QR_CODE_CONFIGURATION_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
trackingMode
অবশ্যই একটি বৈধXrQrCodeTrackingModeANDROID
মান হতে হবে
XrQrCodeTrackingModeANDROID
XrQrCodeTrackingModeANDROID
enum QR কোডগুলির সমর্থিত ট্র্যাকিং মোডগুলি বর্ণনা করে৷
typedef enum XrQrCodeTrackingModeANDROID {
XR_QR_CODE_TRACKING_MODE_STATIC_ANDROID = 0,
XR_QR_CODE_TRACKING_MODE_DYNAMIC_ANDROID = 1,
XR_QR_CODE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrQrCodeTrackingModeANDROID;
| এনাম | বর্ণনা - | XR_QR_CODE_TRACKING_MODE_STATIC_ANDROID
| QR কোড স্থির এবং নড়াচড়া করে না। ' | XR_QR_CODE_TRACKING_MODE_DYNAMIC_ANDROID
| QR কোড গতিশীল এবং সরে যেতে পারে। |
QR কোড পান
xrGetTrackableQrCodeANDROID
xrGetTrackableQrCodeANDROID
ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrGetTrackableQrCodeANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableQrCodeANDROID* qrCodeOutput);
পরামিতি বিবরণ
-
tracker
হলXrTrackableTrackerANDROID
অনুসন্ধান করার জন্য। -
getInfo
হলXrTrackableGetInfoANDROID
যা ট্র্যাকযোগ্য QR কোড পেতে ব্যবহৃত তথ্য সহ। -
qrCodeOutput
হলXrTrackableQrCodeANDROID
কাঠামোর একটি পয়েন্টার যেখানে ট্র্যাকযোগ্য QR কোড ফেরত দেওয়া হয়।
রানটাইম অবশ্যই XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
ফেরত দিতে হবে যদি XrTrackableANDROID
এর ট্র্যাকযোগ্য ধরন XR_TRACKABLE_TYPE_QR_CODE_ANDROID
না হয়, অথবা যদি XrTrackableTrackerANDROID
এর ট্র্যাকযোগ্য ধরনটি XR_TRACKABLE_TYPE_QR_CODE_ANDROID
না হয়৷
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_trackables_qr_code
এক্সটেনশনটি অবশ্যইxrGetTrackableQrCodeANDROID
কল করার আগে সক্রিয় করতে হবে -
tracker
অবশ্যই একটি বৈধXrTrackableTrackerANDROID
হ্যান্ডেল হতে হবে -
getInfo
অবশ্যই একটি বৈধXrTrackableGetInfoANDROID
কাঠামোর একটি নির্দেশক হতে হবে -
qrCodeOutput
অবশ্যই একটিXrTrackableQrCodeANDROID
কাঠামোর একটি পয়েন্টার হতে হবে
XrTrackableQrCodeANDROID
XrTrackableQrCodeANDROID
গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrTrackableQrCodeANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrTime lastUpdatedTime;
XrPosef centerPose;
XrExtent2Df extents;
uint32_t bufferCapacityInput;
uint32_t bufferCountOutput;
char* buffer;
} XrTrackableQrCodeANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোরXrStructureType
। -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
trackingState
হল QR কোডেরXrTrackingStateANDROID
। -
lastUpdatedTime
হল QR কোডের শেষ আপডেটেরXrTime
। -
centerPose
হলXrTrackableGetInfoANDROID::baseSpace
এ অবস্থিত QR কোডেরXrPosef
। QR কোডটি XZ সমতলে রয়েছে যেখানে X QR কোডের ডানদিকে নির্দেশ করে এবং Z এর নীচে নির্দেশ করে। -
extents
হল QR কোডেরXrExtent2Df
মাত্রা। বাউন্ডিং বাক্সের সীমানা বিন্দুতে:centerPose
+/- (extents
/ 2)। -
bufferCapacityInput
হলbuffer
ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধার করার জন্য0
। -
bufferCountOutput
যদিbufferCapacityInput
0
হয়, রানটাইম প্রয়োজনীয় বাফার সাইজbufferCountOutput
এ লিখবে। অন্যথায়, এতেbuffer
লেখা মোট উপাদান রয়েছে। - ডিকোড করা QR কোড ডেটা লেখার জন্য
buffer
হলchar
অ্যারের একটি পয়েন্টার। প্রয়োজনীয় বাফার আকার নির্ধারণ করতে বা ডিকোড QR কোড ডেটার অনুরোধ না করলে অ্যাপ্লিকেশনটি একটিnullptr
পাস করতে পারে। QR কোড ডেটা নাল-টার্মিনেটেড UTF-8 স্ট্রিং হিসাবে ফেরত দেওয়া হয়। - প্রয়োজনীয়
buffer
আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_trackables_qr_code
এক্সটেনশনটি অবশ্যইXrTrackableQrCodeANDROID
ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_TYPE_TRACKABLE_QR_CODE_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
trackingState
অবশ্যই একটি বৈধXrTrackingStateANDROID
মান হতে হবে - যদি
bufferCapacityInput
0
না হয়,buffer
অবশ্যইbufferCapacityInput
char মানগুলির একটি অ্যারের একটি পয়েন্টার হতে হবে
ট্র্যাকযোগ্য QR কোড পাওয়ার জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোড দেখায় কিভাবে ট্র্যাকযোগ্য QR কোড পেতে হয়।
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_xrGetTrackableQrCodeANDROID xrGetTrackableQrCodeANDROID; // 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
XrSystemQrCodeTrackingPropertiesANDROID qrCodeProperty =
{.type = XR_TYPE_SYSTEM_QR_CODE_TRACKING_PROPERTIES_ANDROID, .next = nullptr};
XrSystemProperties systemProperties = {.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &qrCodeProperty};
CHK_XR(xrGetSystemProperties(instance, systemId, &systemProperties));
if (!qrCodeProperty.supportsQrCodeTracking) {
// QR Code tracking is not supported.
return;
}
// Create a trackable tracker for QR Code tracking.
// If the runtime does not support size estimation, configures QR Code edge size of 0.1m.
XrTrackableQrCodeConfigurationANDROID configuration =
{.type = XR_TYPE_TRACKABLE_QR_CODE_CONFIGURATION_ANDROID,
.next = nullptr,
.trackingMode = XR_QR_CODE_TRACKING_MODE_DYNAMIC_ANDROID,
.qrCodeEdgeSize = qrCodeProperty.supportsQrCodeSizeEstimation ? 0.0f : 0.1f};
XrTrackableTrackerCreateInfoANDROID createInfo =
{.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &configuration,
.trackableType = XR_TRACKABLE_TYPE_QR_CODE_ANDROID};
XrTrackableTrackerANDROID qrCodeTracker;
auto res = xrCreateTrackableTrackerANDROID(session, &createInfo, &qrCodeTracker);
if (res == XR_ERROR_PERMISSION_INSUFFICIENT) {
// Handle permission requests.
}
CHK_XR(res);
// Get QR Codes.
std::vector<XrTrackableANDROID> trackables(qrCodeProperty.maxQrCodeCount);
std::vector<XrTrackableQrCodeANDROID> qrCodes(qrCodeProperty.maxQrCodeCount);
uint32_t qrCodeSize = 0;
CHK_XR(xrGetAllTrackablesANDROID(qrCodeTracker, qrCodeProperty.maxQrCodeCount, &qrCodeSize,
trackables.data()));
for (int i = 0; i < qrCodeSize; i++) {
qrCodes[i].type = XR_TYPE_TRACKABLE_QR_CODE_ANDROID;
qrCodes[i].next = nullptr;
qrCodes[i].bufferCountOutput = 0;
XrTrackableGetInfoANDROID getInfo = {.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID,
.next = nullptr,
.trackable = trackables.at(i),
.baseSpace = appSpace,
.time = updateTime};
CHK_XR(xrGetTrackableQrCodeANDROID(qrCodeTracker, &getInfo, &qrCodes[i]));
if (qrCodes[i].bufferCountOutput > 0) {
// Allocate the buffer if it is not already allocated.
if (qrCodes[i].bufferCapacityInput == 0) {
qrCodes[i].buffer = new char[qrCodes[i].bufferCountOutput];
qrCodes[i].bufferCapacityInput = qrCodes[i].bufferCountOutput;
CHK_XR(xrGetTrackableQrCodeANDROID(qrCodeTracker, &getInfo, &qrCodes[i]));
}
}
}
// Release trackable tracker.
CHK_XR(xrDestroyTrackableTrackerANDROID(qrCodeTracker));
নতুন Enum ধ্রুবক
XrStructureType
গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_TYPE_SYSTEM_QR_CODE_TRACKING_PROPERTIES_ANDROID
-
XR_TYPE_TRACKABLE_QR_CODE_CONFIGURATION_ANDROID
-
XR_TYPE_TRACKABLE_QR_CODE_ANDROID
XrTrackableTypeANDROID
গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_TRACKABLE_TYPE_QR_CODE_ANDROID
নতুন Enums
-
XrQrCodeTrackingModeANDROID
নতুন কাঠামো
-
XrSystemQrCodeTrackingPropertiesANDROID
-
XrTrackableQrCodeConfigurationANDROID
-
XrTrackableQrCodeANDROID
নতুন ফাংশন
-
xrGetTrackableQrCodeANDROID
ইস্যু
সংস্করণ ইতিহাস
- রিভিশন 1, 2025-02-05 (লেভানা চেন)
- প্রাথমিক এক্সটেনশন বর্ণনা।
OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।