XR_ANDROID_raycast OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_raycast

এক্সটেনশন প্রকার

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

464

রিভিশন

1

এক্সটেনশন এবং সংস্করণ নির্ভরতা

XR_ANDROID_trackables

সর্বশেষ সংশোধিত তারিখ

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- এর একটি অ্যারের একটি পয়েন্টার, কিন্তু trackableTypeCapacityInput 0 হলে NULL হতে পারে
  • প্রয়োজনীয় trackableTypes আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

xrEnumerateRaycastSupportedTrackableTypesANDROID ট্র্যাকযোগ্য প্রকারগুলি গণনা করে যা বর্তমান সেশনের মাধ্যমে রেকাস্টিং সমর্থন করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • XR_ANDROID_raycast এক্সটেনশনটি xrEnumerateRaycastSupportedTrackableTypesANDROID কল করার আগে সক্রিয় করা আবশ্যক
  • instance অবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে
  • trackableTypeCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি trackableTypeCapacityInput 0 না হয়, তাহলে trackableTypes অবশ্যই trackableTypeCapacityInput XrTrackableTypeANDROID মানগুলির একটি অ্যারের নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • 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 কল করে রেকাস্ট করতে পারে

বৈধ ব্যবহার (অন্তর্নিহিত)

  • 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 ব্যবহার করার আগে সক্রিয় করতে হবে
  • type XR_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 স্ট্রাকচারের একটি অ্যারের নির্দেশক৷ resultsCapacityInput 0 হলে এটি NULL হতে পারে
  • প্রয়োজনীয় results আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

XrRaycastHitResultsANDROID- এ একটি রেকাস্টের হিটগুলির অ্যারে রয়েছে৷

রানটাইম অবশ্যই resultsCountOutput XrRaycastInfoANDROID::maxResults- এর থেকে কম বা সমান করতে হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrRaycastHitResultANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrRaycastHitResultANDROID {
    XrTrackableTypeANDROID    type;
    XrTrackableANDROID        trackable;
    XrPosef                   pose;
} XrRaycastHitResultANDROID;

সদস্য বিবরণ

  • type হল XrTrackableTypeANDROID এর ট্র্যাকযোগ্য যা রেকাস্ট হিট করেছে।
  • trackable হল XrTrackableANDROID যা raycast হিট করেছে, অথবা XR_NULL_TRACKABLE_ANDROID যদি ট্র্যাকযোগ্য type XR_TRACKABLE_TYPE_DEPTH_ANDROID হয়।
  • pose হল XrPosef যা raycast হিট করেছে।

XrRaycastHitResultANDROID- এ একটি রেকাস্ট হিটের বিবরণ রয়েছে।

XrRaycastHitResultANDROID::একটি প্লেনের আঘাতের ভঙ্গি এমন হতে হবে যাতে X এবং Z সমতলের সমান্তরাল হয়, এবং Y অক্ষ সমতলের জন্য স্বাভাবিক।

ট্র্যাকযোগ্য আঘাতের ধরন

বর্ণনা

XR_TRACKABLE_TYPE_PLANE_ANDROID

একটি বিন্দুর সঠিক গভীরতা এবং অভিযোজন নির্ধারণ করতে অনুভূমিক এবং/অথবা উল্লম্ব পৃষ্ঠগুলিতে আঘাত করে।

XR_TRACKABLE_TYPE_DEPTH_ANDROID

একটি বিন্দুর সঠিক গভীরতা এবং অভিযোজন নির্ধারণ করতে সমগ্র দৃশ্য থেকে গভীরতার তথ্য ব্যবহার করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

রেকাস্টিংয়ের উদাহরণ কোড

নিচের উদাহরণ কোডটি দেখায় কিভাবে রেকাস্ট করতে হয়।

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 (কেনি ভার্কেমার)
    • প্রাথমিক এক্সটেনশন বর্ণনা