নাম স্ট্রিং
 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ব্যবহার করার আগে সক্রিয় করতে হবে
-  typeXR_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ব্যবহার করার আগে সক্রিয় করতে হবে
-  typeXR_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যদিbufferCapacityInput0হয়, রানটাইম প্রয়োজনীয় বাফার সাইজbufferCountOutputএ লিখবে। অন্যথায়, এতেbufferলেখা মোট উপাদান রয়েছে।
-  ডিকোড করা QR কোড ডেটা লেখার জন্য bufferহলcharঅ্যারের একটি পয়েন্টার। প্রয়োজনীয় বাফার আকার নির্ধারণ করতে বা ডিকোড QR কোড ডেটার অনুরোধ না করলে অ্যাপ্লিকেশনটি একটিnullptrপাস করতে পারে। QR কোড ডেটা নাল-টার্মিনেটেড UTF-8 স্ট্রিং হিসাবে ফেরত দেওয়া হয়।
-  প্রয়োজনীয় bufferআকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।
বৈধ ব্যবহার (অন্তর্নিহিত)
-  XR_ANDROID_trackables_qr_codeএক্সটেনশনটি অবশ্যইXrTrackableQrCodeANDROIDব্যবহার করার আগে সক্রিয় করতে হবে
-  typeXR_TYPE_TRACKABLE_QR_CODE_ANDROIDহতে হবে
-  nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
-  trackingStateঅবশ্যই একটি বৈধXrTrackingStateANDROIDমান হতে হবে
-  যদি bufferCapacityInput0না হয়,bufferঅবশ্যইbufferCapacityInputchar মানগুলির একটি অ্যারের একটি পয়েন্টার হতে হবে
ট্র্যাকযোগ্য 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. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।
