নাম স্ট্রিং
 XR_ANDROID_raycast
এক্সটেনশন প্রকার
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
464
রিভিশন
1
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধিত তারিখ
2024-10-02
আইপি স্ট্যাটাস
কোন পরিচিত আইপি দাবি.
অবদানকারী
স্পেন্সার কুইন, গুগল
নিহাভ জৈন, গুগল
জন পার্সে, গুগল
জ্যারেড ফাইন্ডার, গুগল
লেভানা চেন, গুগল
কেনি ভার্কেমার, গুগল
ওভারভিউ
এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে পরিবেশে ট্র্যাকেবলের বিরুদ্ধে রেকাস্ট করার অনুমতি দেয়। রেকাস্টগুলি পরিবেশের বস্তুগুলি সনাক্ত করার জন্য দরকারী হতে পারে যেগুলির সাথে একটি রশ্মি ছেদ করবে৷ যেমন:
- উল্লম্ব রেকাস্ট ব্যবহার করে একটি ভাসমান বস্তু কোথায় পড়ে যাবে তা নির্ধারণ করতে।
- একটি ফরওয়ার্ড-ফেসিং রেকাস্ট ব্যবহার করে একজন ব্যবহারকারী কোথায় খুঁজছেন তা নির্ধারণ করতে।
প্রশ্ন সমর্থিত raycast ক্ষমতা
xrEnumerateRaycastSupportedTrackableTypesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateRaycastSupportedTrackableTypesANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    trackableTypeCapacityInput,
    uint32_t*                                   trackableTypeCountOutput,
    XrTrackableTypeANDROID*                     trackableTypes);
পরামিতি বিবরণ
-  instanceহল XrInstance যেখান থেকেsystemIdপুনরুদ্ধার করা হয়েছিল।
-  systemIdহলXrSystemIdযার সমর্থিত ট্র্যাকযোগ্য প্রকারগুলি রেকাস্টিংয়ের জন্য গণনা করা হচ্ছে।
-  trackableTypeCapacityInputহলtrackableTypesএর ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধার করার জন্য 0।
-  trackableTypeCountOutputহল অ্যারের গণনার একটি পয়েন্টার, অথবাtrackableTypeCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।-  trackableTypesহল XrTrackableTypeANDROID- এর একটি অ্যারের একটি পয়েন্টার, কিন্তুtrackableTypeCapacityInput0হলেNULLহতে পারে ।
 
-  
-  প্রয়োজনীয় trackableTypesআকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।
xrEnumerateRaycastSupportedTrackableTypesANDROID ট্র্যাকযোগ্য প্রকারগুলি গণনা করে যা বর্তমান সেশনের মাধ্যমে রেকাস্টিং সমর্থন করে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-  XR_ANDROID_raycastএক্সটেনশনটি xrEnumerateRaycastSupportedTrackableTypesANDROID কল করার আগে সক্রিয় করা আবশ্যক
-  instanceঅবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে
-  trackableTypeCountOutputএকটিuint32_tমানের একটি পয়েন্টার হতে হবে
-  যদি trackableTypeCapacityInput0না হয়, তাহলেtrackableTypesঅবশ্যইtrackableTypeCapacityInputXrTrackableTypeANDROID মানগুলির একটি অ্যারের নির্দেশক হতে হবে
রিটার্ন কোড
-  XR_SUCCESS
-  XR_ERROR_VALIDATION_FAILURE
-  XR_ERROR_RUNTIME_FAILURE
-  XR_ERROR_HANDLE_INVALID
-  XR_ERROR_INSTANCE_LOST
-  XR_ERROR_SIZE_INSUFFICIENT
-  XR_ERROR_SYSTEM_INVALID
-  XR_ERROR_FUNCTION_UNSUPPORTED
একটি raycast সঞ্চালন
xrRaycastANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrRaycastANDROID(
    XrSession                                   session,
    const XrRaycastInfoANDROID*                 rayInfo,
    XrRaycastHitResultsANDROID*                 results);
পরামিতি বিবরণ
-  sessionহল XrSession যা রেকাস্ট করে।
-  rayInfoহল XrRaycastInfoANDROID যা রশ্মিকে কাস্ট করার জন্য বর্ণনা করে।
-  resultsহল XrRaycastHitResultsANDROID- এর একটি পয়েন্টার যা রেকাস্টের ফলাফল গ্রহণ করে।
অ্যাপ্লিকেশনটি xrRaycastANDROID কল করে রেকাস্ট করতে পারে ।
- যদি একটি রেকাস্ট XrRaycastHitResultsANDROID::maxResults এর চেয়ে বেশি ট্র্যাকেবলকে ছেদ করে, রানটাইমকে অবশ্যই সেই হিট ফলাফলগুলি ফেরত দিতে হবে যা XrRaycastHitResultsANDROID:: রশ্মির উৎপত্তির কাছাকাছি।
-  যদি একটি রেকাস্ট XR_TRACKABLE_TYPE_ANDROID_PLANEটাইপের একটি ট্র্যাকযোগ্য ছেদ করে, যা অন্য প্লেন দ্বারা সাবসাম করা হয়, রানটাইম শুধুমাত্র সাবসামিং প্লেনের জন্য হিট ফলাফল প্রদান করবে ।
- রানটাইমকে অবশ্যই XrRaycastInfoANDROID::origin থেকে XrRaycastInfoANDROID::ট্র্যাজেক্টরি ভেক্টর বরাবর নিকটতম-থেকে-দূরতম ক্রমে হিট ফলাফল প্রদান করতে হবে।
-  রানটাইমটি অবশ্যই XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDফেরত দিতে হবে যদি XrRaycastInfoANDROID ::ট্র্যাকারদের XrEnumerateRaycastSupportedTROIDspe দ্বারা গণনা করা না হয়।
বৈধ ব্যবহার (অন্তর্নিহিত)
-  xrRaycastANDROID কল করার আগে XR_ANDROID_raycastএক্সটেনশন সক্রিয় করা আবশ্যক
-  sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে
-  rayInfoঅবশ্যই একটি বৈধ XrRaycastInfoANDROID কাঠামোর একটি পয়েন্টার হতে হবে৷
-  resultsঅবশ্যই একটি XrRaycastHitResultsANDROID কাঠামোর একটি নির্দেশক হতে হবে
রিটার্ন কোড
-  XR_SUCCESS
-  XR_SESSION_LOSS_PENDING
-  XR_ERROR_FUNCTION_UNSUPPORTED
-  XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
-  XR_ERROR_VALIDATION_FAILURE
-  XR_ERROR_RUNTIME_FAILURE
-  XR_ERROR_HANDLE_INVALID
-  XR_ERROR_INSTANCE_LOST
-  XR_ERROR_SESSION_LOST
-  XR_ERROR_OUT_OF_MEMORY
-  XR_ERROR_LIMIT_REACHED
-  XR_ERROR_POSE_INVALID
-  XR_ERROR_TIME_INVALID
-  XR_ERROR_FEATURE_UNSUPPORTED
XrRaycastInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrRaycastInfoANDROID {
    XrStructureType                     type;
    void*                               next;
    uint32_t                            maxResults;
    uint32_t                            trackerCount;
    const XrTrackableTrackerANDROID*    trackers;
    XrVector3f                          origin;
    XrVector3f                          trajectory;
    XrSpace                             space;
    XrTime                              time;
} XrRaycastInfoANDROID;
সদস্য বিবরণ
-  typeহল এই কাঠামোর XrStructureType ।
-  nextহলNULLবা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
-  maxResultsহলuint32_tফলাফলের সর্বাধিক সংখ্যা যা ফেরত দিতে হবে।
-  trackerCountহলtrackersঅ্যারেরuint32_tগণনা।
-  trackersহল XrTrackableTrackerANDROID এর অ্যারে যার বিরুদ্ধে কাস্ট করা রশ্মি পরীক্ষা করা উচিত ।
-  originহল XrVector3f যেখান থেকে রশ্মি নিক্ষেপ করা হয়েছে।
-  trajectoryহল XrVector3f যে রশ্মি লক্ষ্য করে।
-  spaceহল XrSpace যেখানে রশ্মি নিক্ষেপ করা হয়।
-  timeহলXrTimeএ রশ্মি নিক্ষেপ করা হয়।
XrRaycastInfoANDROID গঠন রশ্মি ঢালাইয়ের বর্ণনা দেয়।
- XrRaycastInfoANDROID::trackers অ্যারেতে বিভিন্ন ধরনের ট্র্যাকার থাকতে পারে ।
-  XrRaycastInfoANDROID::trackers অ্যারেতে একই ধরনের একাধিক ট্র্যাকার থাকা উচিত নয়, অন্যথায় রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILUREফেরত দেবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-  XR_ANDROID_raycastএক্সটেনশনটি অবশ্যই XrRaycastInfoANDROID ব্যবহার করার আগে সক্রিয় করতে হবে
-  typeXR_TYPE_RAYCAST_INFO_ANDROIDহতে হবে
-  nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
-  trackersঅবশ্যইtrackerCountবৈধ XrTrackableTrackerANDROID হ্যান্ডেলগুলির একটি অ্যারের নির্দেশক হতে হবে
-  spaceঅবশ্যই একটি বৈধ XrSpace হ্যান্ডেল হতে হবে
-  trackerCountপ্যারামিটার অবশ্যই0এর বেশি হতে হবে
-  spaceএবংtrackersউপাদান উভয়ই একই XrSession থেকে তৈরি, বরাদ্দ বা পুনরুদ্ধার করা আবশ্যক
XrRaycastHitResultsANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrRaycastHitResultsANDROID {
    XrStructureType               type;
    void*                         next;
    uint32_t                      resultsCapacityInput;
    uint32_t                      resultsCountOutput;
    XrRaycastHitResultANDROID*    results;
} XrRaycastHitResultsANDROID;
সদস্য বিবরণ
-  typeহল এই কাঠামোর XrStructureType ।
-  nextহলNULLবা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
-  resultsCapacityInputহলresultsঅ্যারের ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের জন্য একটি অনুরোধ নির্দেশ করার জন্য 0।
-  resultsCountOutputহল লিখিতresultsগণনার একটি পয়েন্টার, অথবাresultsCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
-  resultsহল XrRaycastHitResultANDROID স্ট্রাকচারের একটি অ্যারের নির্দেশক৷resultsCapacityInput0 হলে এটিNULLহতে পারে ।
-  প্রয়োজনীয় resultsআকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।
XrRaycastHitResultsANDROID- এ একটি রেকাস্টের হিটগুলির অ্যারে রয়েছে৷
 রানটাইম অবশ্যই resultsCountOutput কে XrRaycastInfoANDROID::maxResults- এর থেকে কম বা সমান করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-  XR_ANDROID_raycastএক্সটেনশনটি XrRaycastHitResultsANDROID ব্যবহার করার আগে সক্রিয় করা আবশ্যক
-  typeXR_TYPE_RAYCAST_HIT_RESULTS_ANDROIDহতে হবে
-  nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
-  resultsঅবশ্যইresultsCapacityInputXrRaycastHitResultANDROID-ভিত্তিক কাঠামোর একটি অ্যারের নির্দেশক হতে হবে
-  resultsCapacityInputপ্যারামিটার অবশ্যই0এর বেশি হতে হবে
XrRaycastHitResultANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrRaycastHitResultANDROID {
    XrTrackableTypeANDROID    type;
    XrTrackableANDROID        trackable;
    XrPosef                   pose;
} XrRaycastHitResultANDROID;
সদস্য বিবরণ
-  typeহল XrTrackableTypeANDROID এর ট্র্যাকযোগ্য যা রেকাস্ট হিট করেছে।
-  trackableহলXrTrackableANDROIDযা raycast হিট করেছে, অথবাXR_NULL_TRACKABLE_ANDROIDযদি ট্র্যাকযোগ্যtypeXR_TRACKABLE_TYPE_DEPTH_ANDROIDহয়।
-  poseহল XrPosef যা raycast হিট করেছে।
XrRaycastHitResultANDROID- এ একটি রেকাস্ট হিটের বিবরণ রয়েছে।
XrRaycastHitResultANDROID::একটি প্লেনের আঘাতের ভঙ্গি এমন হতে হবে যাতে X এবং Z সমতলের সমান্তরাল হয়, এবং Y অক্ষ সমতলের জন্য স্বাভাবিক।
| ট্র্যাকযোগ্য আঘাতের ধরন | বর্ণনা | 
|   | একটি বিন্দুর সঠিক গভীরতা এবং অভিযোজন নির্ধারণ করতে অনুভূমিক এবং/অথবা উল্লম্ব পৃষ্ঠগুলিতে আঘাত করে। | 
|   | একটি বিন্দুর সঠিক গভীরতা এবং অভিযোজন নির্ধারণ করতে সমগ্র দৃশ্য থেকে গভীরতার তথ্য ব্যবহার করে। | 
বৈধ ব্যবহার (অন্তর্নিহিত)
-  XR_ANDROID_raycastএক্সটেনশনটি XrRaycastHitResultANDROID ব্যবহার করার আগে সক্রিয় করা আবশ্যক
-  typeএকটি বৈধ XrTrackableTypeANDROID মান হতে হবে
রেকাস্টিংয়ের উদাহরণ কোড
নিচের উদাহরণ কোডটি দেখায় কিভাবে রেকাস্ট করতে হয়।
XrSession session; // previously initialized
XrTime updateTime; // previously initialized
XrSpace appSpace;  // space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrPosef headPose;  // latest pose of the HMD.
XrTrackableTrackerANDROID planeTracker; // tracker for plane trackables.
XrTrackableTrackerANDROID depthTracker; // tracker for depth trackables.
// Perform a raycast against multiple trackers.
XrTrackableTrackerANDROID trackers[] = {
  &planeTracker,
  &depthTracker,
};
XrRaycastInfoANDROID rayInfo = {XR_TYPE_RAYCAST_INFO_ANDROID};
rayInfo.trackerCount = sizeof(trackers) / sizeof(XrTrackableTrackerANDROID);
rayInfo.trackers = trackers;
rayInfo.origin = headPose.position;
rayInfo.trajectory = CalculateForwardDirectionFromHeadPose(headPose);
rayInfo.space = appSpace;
rayInfo.time = updateTime;
uint32_t totalHitResults = 0;
constexpr uint32 NUM_DESIRED_RESULTS = 2;
XrRaycastHitResultANDROID hitResult[NUM_DESIRED_RESULTS];
XrRaycastHitResultsANDROID hitResults = {XR_TYPE_RAYCAST_HIT_RESULTS_ANDROID};
hitResults.maxResults = NUM_DESIRED_RESULTS;
hitResults.resultsCapacityInput = NUM_DESIRED_RESULTS;
hitResults.results = hitResult;
XrResult result = xrRaycastANDROID(session, &rayInfo, &hitResults);
if (result == XR_SUCCESS && hitResults.resultsCountOutput >= 1) {
  // Hit results are returned in closest-to-farthest order in
  // hitResults.results[0] .. hitResults.results[hitResults.resultsCountOutput - 1]
}
নতুন Enum ধ্রুবক
XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:
-  XR_TYPE_RAYCAST_INFO_ANDROID
-  XR_TYPE_RAYCAST_HIT_RESULTS_ANDROID
নতুন কাঠামো
নতুন ফাংশন
ইস্যু
সংস্করণ ইতিহাস
-  রিভিশন 1, 2024-10-02 (কেনি ভার্কেমার)- প্রাথমিক এক্সটেনশন বর্ণনা
 
OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।
