XR_ANDROID_trackables OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_trackables

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

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

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

456

রিভিশন

1

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

OpenXR 1.0

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

2024-09-30

আইপি স্ট্যাটাস

কোন পরিচিত আইপি দাবি.

অবদানকারী

স্পেন্সার কুইন, গুগল

নিহাভ জৈন, গুগল

জন পার্সে, গুগল

জ্যারেড ফাইন্ডার, গুগল

লেভানা চেন, গুগল

কেনি ভার্কেমার, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে ভৌত পরিবেশ থেকে ট্র্যাকেবল অ্যাক্সেস করতে এবং একটি ট্র্যাকেবলের সাথে সংযুক্ত অ্যাঙ্কর তৈরি করতে দেয়।

এই এক্সটেনশন প্লেন ট্র্যাকযোগ্য সংজ্ঞায়িত করে। অন্যান্য এক্সটেনশন অতিরিক্ত ট্র্যাকযোগ্য প্রকার যোগ করতে পারে । উদাহরণ স্বরূপ XR_ANDROID_trackables_object অবজেক্ট ট্র্যাকেবল যোগ করে, এবং XR_ANDROID_depth_texture ডেপথ বাফার যোগ করে যা পরিবেশের অবাধ বিন্দুতে রেকাস্টিং করার অনুমতি দেয়।

একটি ট্র্যাকযোগ্য এমন কিছু যা শারীরিক পরিবেশে ট্র্যাক করা হয় ( XrTrackableTypeANDROID দেখুন):

  • একটি সমতল (যেমন প্রাচীর, মেঝে, ছাদ, টেবিল)
  • একটি বস্তু (যেমন কীবোর্ড, মাউস, ল্যাপটপ)

একটি ট্র্যাকযোগ্য ট্র্যাকার তৈরি করুন

একটি XrTrackableTrackerANDROID হল একটি হ্যান্ডেল যা পরিবেশে একটি প্রদত্ত XrTrackableTypeANDROID- এর ট্র্যাকবলগুলি আবিষ্কার এবং আপডেট করার জন্য প্রয়োজনীয় সংস্থানগুলিকে উপস্থাপন করে৷

XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)

xrCreateTrackableTrackerANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreateTrackableTrackerANDROID(
    XrSession                                   session,
    const XrTrackableTrackerCreateInfoANDROID*  createInfo,
    XrTrackableTrackerANDROID*                  trackableTracker);

পরামিতি বিবরণ

  • session হল XrSession যা ট্র্যাকার তৈরি করে।
  • createInfo হল একটি XrTrackableTrackerCreateInfoANDROID কাঠামোর একটি পয়েন্টার যেখানে ট্র্যাকার তৈরি করতে ব্যবহার করা হবে এমন প্যারামিটার রয়েছে।
  • trackableTracker হল একটি হ্যান্ডেলের একটি পয়েন্টার যেখানে তৈরি করা XrTrackableTrackerANDROID ফেরত দেওয়া হয়।

অ্যাপ্লিকেশনটি একটি ট্র্যাকযোগ্য ট্র্যাকার তৈরি করতে xrCreateTrackableTrackerANDROID ফাংশন ব্যবহার করতে পারে

  • XR_ERROR_FEATURE_UNSUPPORTED ফেরত দেওয়া হবে যদি সিস্টেমটি নির্দিষ্ট ধরনের ট্র্যাকেবল সমর্থন না করে।
  • কলিং অ্যাপে প্রয়োজনীয় অনুমতি না দেওয়া হলে XR_ERROR_PERMISSION_INSUFFICIENT ফেরত দেওয়া হবে।

অ্যাপ্লিকেশনটি পরবর্তী API কলগুলিতে ফিরে আসা ট্র্যাকার হ্যান্ডেল ব্যবহার করতে পারেXrTrackableTrackableTrackerANDROID হ্যান্ডেলটি শেষ পর্যন্ত xrDestroyTrackableTrackerANDROID ফাংশন ব্যবহার করে মুক্ত করতে হবে

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

  • XR_ANDROID_trackables এক্সটেনশনটি অবশ্যই xrCreateTrackableTrackerANDROID কল করার আগে সক্রিয় করা উচিত
  • session অবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি বৈধ XrTrackableTrackerCreateInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে
  • trackableTracker অবশ্যই একটি XrTrackableTrackerANDROID হ্যান্ডেলের একটি পয়েন্টার হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • 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_FEATURE_UNSUPPORTED

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

typedef struct XrTrackableTrackerCreateInfoANDROID {
    XrStructureType           type;
    void*                     next;
    XrTrackableTypeANDROID    trackableType;
} XrTrackableTrackerCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • trackableType হল XrTrackableTypeANDROID যা ট্র্যাকার ট্র্যাক করবে।

XrTrackableTrackableTrackerCreateInfoANDROID কাঠামো XrCreateTrackableTrackerANDROID- এ পাস করা হলে XrTrackableTrackerANDROID- এর জন্য তৈরির বিকল্পগুলি প্রদান করে।

এক্সটেনশনগুলি ট্র্যাকযোগ্য ট্র্যাকারগুলির জন্য অতিরিক্ত কনফিগারেশনের অনুমতি দেওয়ার জন্য next সংযুক্ত করা যেতে পারে এমন কাঠামোগুলিকে সংজ্ঞায়িত করতে পারে

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

XrTrackableTypeANDROID enum এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef enum XrTrackableTypeANDROID {
    XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
    XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
    XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
    XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;

xrDestroyTrackableTrackerANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrDestroyTrackableTrackerANDROID(
    XrTrackableTrackerANDROID                   trackableTracker);

পরামিতি বিবরণ

xrDestroyTrackableTrackerANDROID ফাংশন ট্র্যাকযোগ্য ট্র্যাকারকে ধ্বংস করে।

যদি একই XrTrackableTypeANDROID দিয়ে তৈরি করা অন্য কোন বৈধ XrTrackableTrackerANDROID না থাকে, তাহলে সিস্টেম রিসোর্স সংরক্ষণ করতে সেই ট্র্যাকযোগ্য ধরনের জন্য প্রয়োজনীয় ট্র্যাকিং পরিষেবাগুলি অক্ষম করতে পারে

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

থ্রেড নিরাপত্তা

  • trackableTracker অ্যাক্সেস এবং যে কোনও শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

সব trackables পান

XrTrackableANDROID পরমাণুকে সংজ্ঞায়িত করা হয়েছে:

XR_DEFINE_ATOM(XrTrackableANDROID)

XrTrackableANDROID একটি একক ট্র্যাকযোগ্য প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং এটি শুধুমাত্র তার সম্পর্কিত XrTrackableTrackerANDROID- এর জীবনচক্রের মধ্যেই বৈধ।

xrGetAllTrackablesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetAllTrackablesANDROID(
    XrTrackableTrackerANDROID                   trackableTracker,
    uint32_t                                    trackableCapacityInput,
    uint32_t*                                   trackableCountOutput,
    XrTrackableANDROID*                         trackables);

পরামিতি বিবরণ

  • trackableTracker হল XrTrackableTrackerANDROID অনুসন্ধান করার জন্য।

  • trackableCapacityInput হল trackables অ্যারের ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের জন্য একটি অনুরোধ নির্দেশ করার জন্য 0।

  • trackableCountOutput হল trackables সংখ্যার জন্য একটি নির্দেশক, অথবা trackables অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।

  • trackables হল XrTrackableANDROID এর একটি অ্যারের একটি পয়েন্টার। trackableCapacityInput 0 হলে এটি NULL হতে পারে

  • প্রয়োজনীয় trackables আকার পুনরুদ্ধার করার বিশদ বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

xrGetAllTrackablesANDROID পরিবেশে পাওয়া ট্র্যাকেবলগুলির প্রতিনিধিত্ব করে XrTrackableANDROID এর একটি অ্যারে পূরণ করে৷ ফিরে আসা trackables XrTrackableTypeANDROID অবশ্যই trackableTracker এর XrTrackableTypeANDROID-এর সাথে মিলবে৷

ট্র্যাকযোগ্য প্লেন পান

xrGetTrackablePlaneANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetTrackablePlaneANDROID(
    XrTrackableTrackerANDROID                   trackableTracker,
    const XrTrackableGetInfoANDROID*            getInfo,
    XrTrackablePlaneANDROID*                    planeOutput);

পরামিতি বিবরণ

  • trackableTracker হল XrTrackableTrackerANDROID অনুসন্ধান করার জন্য।

  • getInfo হল XrTrackableGetInfoANDROID যা ট্র্যাকযোগ্য প্লেন পেতে ব্যবহৃত তথ্য সহ।

  • planeOutput হল XrTrackablePlaneANDROID কাঠামোর একটি পয়েন্টার যেখানে ট্র্যাকযোগ্য প্লেনটি ফেরত দেওয়া হয়।

xrGetTrackablePlaneANDROID ফাংশন ট্র্যাকযোগ্য সমতল সম্পর্কে বিশদ বিবরণ প্রদান করে, যেমন এর জ্যামিতি, অভিযোজন এবং ট্র্যাকিং অবস্থা।

XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace ব্যবহার করে xrGetTrackablePlaneANDROID- এ কল করার সময় প্লেনের তথ্য সমাধান করা হয়েছে এবং বেস স্পেসের সাথে সম্পর্কিত।

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

  • XR_ANDROID_trackables এক্সটেনশনটি xrGetTrackablePlaneANDROID কল করার আগে সক্রিয় করা আবশ্যক
  • trackableTracker অবশ্যই একটি বৈধ XrTrackableTrackerANDROID হ্যান্ডেল হতে হবে
  • getInfo অবশ্যই একটি বৈধ XrTrackableGetInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে
  • planeOutput অবশ্যই একটি XrTrackablePlaneANDROID কাঠামোর একটি পয়েন্টার হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_TIME_INVALID

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

typedef struct XrTrackableGetInfoANDROID {
    XrStructureType       type;
    void*                 next;
    XrTrackableANDROID    trackable;
    XrSpace               baseSpace;
    XrTime                time;
} XrTrackableGetInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • trackable হল XrTrackableANDROID সমতল অনুসন্ধান করার জন্য।
  • baseSpace প্লেন পোজ এই time এই XrSpace আপেক্ষিক হবে.
  • time হল XrTime যেখানে baseSpace সাপেক্ষে স্থানাঙ্কগুলি মূল্যায়ন করা হয়।

XrTrackableGetInfoANDROID কাঠামো xrGetTrackablePlaneANDROID- এ পাস করা হলে ক্যোয়ারী বিকল্প প্রদান করে। trackable অবশ্যই xrGetTrackablePlaneANDROID- এ ব্যবহৃত trackableTracker এর সাথে মিল থাকতে হবে।

XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID ফেরত দেওয়া হবে যদি trackable করার যোগ্য ধরনটি XR_TRACKABLE_TYPE_PLANE_ANDROID না হয়।

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

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

typedef struct XrTrackablePlaneANDROID {
    XrStructureType           type;
    void*                     next;
    XrTrackingStateANDROID    trackingState;
    XrPosef                   centerPose;
    XrExtent2Df               extents;
    XrPlaneTypeANDROID        planeType;
    XrPlaneLabelANDROID       planeLabel;
    XrTrackableANDROID        subsumedByPlane;
    XrTime                    lastUpdatedTime;
    uint32_t                  vertexCapacityInput;
    uint32_t*                 vertexCountOutput;
    XrVector2f*               vertices;
} XrTrackablePlaneANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • trackingState হল প্লেনের XrTrackingStateANDROID
  • centerPose হল একটি XrPosef যা সংশ্লিষ্ট XrTrackableGetInfoANDROID::baseSpace- এর রেফারেন্স ফ্রেমের মধ্যে সমতলের অবস্থান এবং অভিযোজন নির্ধারণ করে। এখানে একটি পরিচয় অভিযোজন সমতলের স্বাভাবিকের সাথে +Y সমান্তরাল সহ একটি স্থানাঙ্ক অক্ষের প্রতিনিধিত্ব করে।
  • extents হল সমতলের XrExtent2Df মাত্রা।
  • planeType হল XrPlaneTypeANDROID যা এই প্লেনের জন্য রানটাইম নির্ধারণ করেছে।
  • planeLabel হল XrPlaneLabelANDROID যা এই প্লেনের জন্য রানটাইম নির্ধারণ করেছে।
  • subsumedByPlane হল প্লেনের XrTrackableANDROID যা এই প্লেনটিকে সাবসাম করে ( XR_NULL_TRACKABLE_ANDROID যদি কোনটি না থাকে)৷
  • lastUpdatedTime হল প্লেনের শেষ আপডেটের XrTime
  • vertexCapacityInput হল vertices অ্যারের ধারণক্ষমতা, অথবা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের জন্য একটি অনুরোধ নির্দেশ করার জন্য 0।
  • vertexCountOutput হল লিখিত vertices গণনার একটি পয়েন্টার, অথবা vertices অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
  • vertices হল XrVector2f এর একটি অ্যারের একটি পয়েন্টার। vertexCapacityInput 0 হলে এটি NULL হতে পারে । শীর্ষবিন্দুগুলো ঘড়ির কাঁটার বিপরীতে থাকে। বহুভুজ অবতল হতে পারে এবং স্ব-ছেদ করা উচিত নয়।
  • প্রয়োজনীয় vertices আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

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

  • XR_ANDROID_trackables এক্সটেনশনটি অবশ্যই XrTrackablePlaneANDROID ব্যবহার করার আগে সক্রিয় করতে হবে
  • type XR_TYPE_TRACKABLE_PLANE_ANDROID হতে হবে
  • next অবশ্যই NULL বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
  • trackingState অবশ্যই একটি বৈধ XrTrackingStateANDROID মান হতে হবে
  • planeType অবশ্যই একটি বৈধ XrPlaneTypeANDROID মান হতে হবে
  • planeLabel অবশ্যই একটি বৈধ XrPlaneLabelANDROID মান হতে হবে
  • vertexCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • vertices অবশ্যই vertexCapacityInput XrVector2f স্ট্রাকচারের একটি অ্যারের নির্দেশক হতে হবে
  • vertexCapacityInput প্যারামিটার অবশ্যই 0 এর বেশি হতে হবে

XrTrackingStateANDROID enum একটি XrTrackableANDROID এর ট্র্যাকিং অবস্থা বর্ণনা করে।

typedef enum XrTrackingStateANDROID {
    XR_TRACKING_STATE_PAUSED_ANDROID = 0,
    XR_TRACKING_STATE_STOPPED_ANDROID = 1,
    XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;

XrTrackingStateANDROID

বর্ণনা

XR_TRACKING_STATE_PAUSED_ANDROID

নির্দেশ করে যে ট্র্যাকযোগ্য বা অ্যাঙ্কর ট্র্যাকিং বিরাম দেওয়া হয়েছে কিন্তু ভবিষ্যতে আবার শুরু করা হতে পারে।

XR_TRACKING_STATE_STOPPED_ANDROID

এই Trackable এ ট্র্যাকিং বন্ধ হয়ে গেছে এবং আর কখনোই শুরু হবে না।

XR_TRACKING_STATE_TRACKING_ANDROID

বস্তুটি ট্র্যাক করা হয় এবং এর ভঙ্গি বর্তমান।

XrPlaneTypeANDROID enum হল একটি XrTrackableANDROID প্লেনের প্রকার।

typedef enum XrPlaneTypeANDROID {
    XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
    XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
    XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
    XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;

XrPlaneLabelANDROID enum হল একটি XrTrackableANDROID প্লেনের জন্য একটি লেবেল৷

typedef enum XrPlaneLabelANDROID {
    XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
    XR_PLANE_LABEL_WALL_ANDROID = 1,
    XR_PLANE_LABEL_FLOOR_ANDROID = 2,
    XR_PLANE_LABEL_CEILING_ANDROID = 3,
    XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;

অ্যাঙ্কর স্পেস তৈরি করুন

XrResult xrCreateAnchorSpaceANDROID(
    XrSession                                   session,
    const XrAnchorSpaceCreateInfoANDROID*       createInfo,
    XrSpace*                                    anchorOutput);

পরামিতি বিবরণ

  • session হল XrSession যা অ্যাঙ্কর স্পেস তৈরি করে।
  • createInfo হল একটি XrAnchorSpaceCreateInfoANDROID স্ট্রাকচারের একটি পয়েন্টার যেখানে অ্যাঙ্কর স্পেস তৈরি করতে ব্যবহৃত পরামিতি রয়েছে।
  • anchorOutput হল একটি হ্যান্ডেলের একটি পয়েন্টার যেখানে তৈরি করা XrSpace ফেরত দেওয়া হয়।

যে কোনো সময়ে অ্যাঙ্করের অবস্থান এবং দিক উভয়ই ট্র্যাক বা আনট্র্যাক করা হয়। এর মানে হল যে XR_SPACE_LOCATION_POSITION_TRACKED_BIT এবং XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT উভয়কেই সেট করতে হবে অথবা anchorOutput জন্য যখন অ্যাপ্লিকেশনটি xrLocateSpace বা xrLocateSpaces কল করবে তখন উভয়কেই সাফ করতে হবে।

অ্যাপ্লিকেশনটিকে অবশেষে xrDestroySpace ব্যবহার করে রিটার্ন করা XrSpace মুক্ত করতে হবে

  • সিস্টেম অ্যাঙ্কর সমর্থন না করলে XR_ERROR_FEATURE_UNSUPPORTED অবশ্যই ফেরত দিতে হবে।
  • নির্দিষ্ট অ্যাঙ্কর সংযুক্তি সমর্থিত না হলে XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID অবশ্যই ফেরত দিতে হবে৷

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

  • XR_ANDROID_trackables এক্সটেনশনটি অবশ্যই xrCreateAnchorSpaceANDROID কল করার আগে সক্রিয় করতে হবে
  • session অবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি বৈধ XrAnchorSpaceCreateInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে
  • anchorOutput অবশ্যই একটি XrSpace হ্যান্ডেলের একটি পয়েন্টার হতে হবে

রিটার্ন কোড

সফলতা

  • 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_LIMIT_REACHED
  • XR_ERROR_POSE_INVALID
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_OUT_OF_MEMORY

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

typedef struct XrAnchorSpaceCreateInfoANDROID {
    XrStructureType       type;
    void*                 next;
    XrSpace               space;
    XrTime                time;
    XrPosef               pose;
    XrTrackableANDROID    trackable;
} XrAnchorSpaceCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • space হল XrSpace যার উপর অ্যাঙ্কর তৈরি করা হবে।
  • time হল অ্যাঙ্কর সৃষ্টির XrTime
  • pose হল অ্যাঙ্করের XrPosef
  • trackable হল XrTrackableANDROID যার উপর অ্যাঙ্কর সংযুক্ত করা হবে। এটি একটি স্থানিক অ্যাঙ্কর তৈরি করতে XR_NULL_TRACKABLE_ANDROID হতে পারে

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

সমস্ত ট্র্যাকযোগ্য পাওয়ার জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোড দেখায় কিভাবে একটি প্রদত্ত ধরনের সমস্ত ট্র্যাকবল পেতে হয়।

XrSession session; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized

XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
  session,
  &createInfo,
  &planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }

uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;

// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
  planeTrackableTracker,
  0,
  &trackableCountOutput,
  nullptr
);

if (result == XR_SUCCESS) {
  allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);

  // Fetch the actual trackable handles in the appropriately resized array.
  result = xrGetAllTrackablesANDROID(
    planeTrackableTracker,
    trackableCountOutput,
    &trackableCountOutput,
    allPlaneTrackables.data());

  if (result == XR_SUCCESS) {
    for (XrTrackableANDROID trackable : allPlaneTrackables) {
      // You now have all trackables of the specified type.
    }
  }
}

// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);

ট্র্যাকযোগ্য প্লেন পাওয়ার জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে একটি বিদ্যমান XrTrackableANDROID থেকে একটি ট্র্যাকযোগ্য প্লেন পেতে হয়, একটি হিট ফলাফল XR_ANDROID_raycast বা xrGetTrackablesANDROID থেকে প্রাপ্ত।

XrTrackableTrackerANDROID planeTracker; // previously created

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized

XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().

XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;

XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
  planeTracker,
  &planeGetInfo,
  &plane
);

if (result == XR_SUCCESS) {
  // Plane tracking state, center pose, extents, type now available in plane.
}

অ্যাঙ্কর স্পেস তৈরির জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোড প্রদর্শন করে কিভাবে একটি ট্র্যাকযোগ্য সাথে সংযুক্ত একটি অ্যাঙ্কর স্পেস তৈরি করতে হয়।

XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().

// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };

XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
  session,
  &spatialAnchorCreateInfo,
  &spatialAnchor
);

// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;

XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
  session,
  &trackableAnchorCreateInfo,
  &trackableAnchor
);
while (true) {
  // app update loop
  // ...

  // Get the current location of the anchor's space w.r.t the world.
  XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
  result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);

  if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
    // Update anchor pose.
    doDrawingForAnchor(anchorLocation.pose);
  } else {
    // ...
  }
}

// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);

নতুন বেস প্রকার

নতুন অবজেক্টের ধরন

নতুন Enum ধ্রুবক

XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TYPE_TRACKABLE_GET_INFO_ANDROID
  • XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
  • XR_TYPE_TRACKABLE_PLANE_ANDROID
  • XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID

XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID

XrResult গণনা এর সাথে বর্ধিত করা হয়েছে:

  • XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
  • XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

সংস্করণ ইতিহাস

  • রিভিশন 1, 2024-09-27 (কেনি ভার্কেমার)
    • প্রাথমিক এক্সটেনশন বর্ণনা।