XR_EXT_spatial_entity

নামের স্ট্রিং

XR_EXT_spatial_entity

এক্সটেনশনের ধরন

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

রেজিস্টার করা এক্সটেনশন নম্বর

741

সংশোধন

1

অনুমোদনের স্ট্যাটাস

অনুমোদিত

এক্সটেনশন ও ভার্সন ডিপেন্ডেন্সি

XR_EXT_future

কন্ট্রিবিউটর

নিহভ জৈন, Google
জ্যারেড ফাইন্ডার, Google
নাটালি ফ্লুরি, Meta
ইউইচি তাগুচি, Meta
রন বেসেমস, Meta
ইন লি, Microsoft
কার্তিক কাদাপ্পান, Magic Leap
জিমি আলমপারাম্বিল, ByteDance
ঝিপেং লিউ, ByteDance
জুন ইয়ান, ByteDance

এক নজরে

এই এক্সটেনশন OpenXR-এ দৃশ্য বোঝা ও স্পেশিয়াল রিজনিংয়ের ধারণা ও ভিত্তি প্রদান করে। এটি কার্যকারিতার বেশ কয়েকটি সম্পর্কিত কিন্তু স্বতন্ত্র ক্ষেত্রকে একত্রিত করে, যা এই এক্সটেনশন দ্বারা সংজ্ঞায়িত একটি বিস্তৃত অভিন্ন উপায়ে গণনা করা, কনফিগার করা এবং ইন্টারঅ্যাক্ট করা হয়। যেহেতু এই এক্সটেনশনে এই ফাংশনাল এরিয়াগুলির কোনও একটিরও কংক্রিট সংজ্ঞা নেই, তাই ফর্মাল স্পেসিফিকেশন টেক্সট কিছুটা অ্যাবস্ট্রাক্ট হয়। এই এক্সটেনশন স্পেসিফিকেশন টেক্সটে অন্তর্ভুক্ত উদাহরণগুলি কখনও কখনও আসন্ন বা কাল্পনিক সম্পর্কিত এক্সটেনশনে সংজ্ঞায়িত কার্যকারিতাকে বোঝায়, যা সহজাতভাবে এই ধরনের অতিরিক্ত কার্যকারিতাকে সীমিত বা নির্দিষ্ট না করে চিত্রিত করার উদ্দেশ্যে।

এই এক্সটেনশনের মূল অংশগুলি হল:

  • স্পেশিয়াল এন্টিটি : কার্যকারিতাটি এন্টিটি-এর চারপাশে কেন্দ্রীভূত, যা নিজে থেকে খুব কম কার্যকারিতা প্রদান করে।
  • স্পেশিয়াল কম্পোনেন্ট : এই এন্টিটিগুলির সাথে কম্পোনেন্ট যুক্ত থাকে যা ডেটা ও আচরণ প্রদান করে।
  • স্পেশিয়াল কম্পোনেন্টের ধরন : প্রতিটি স্পেশিয়াল কম্পোনেন্ট একটি নির্দিষ্ট কম্পোনেন্টের ধরন এবং যেকোনও প্রদত্ত এন্টিটির যেকোনও প্রদত্ত কম্পোনেন্টের ধরনের সর্বাধিক একটি কম্পোনেন্ট থাকে।
  • স্পেশিয়াল কনটেক্সট : সব স্পেশিয়াল এন্টিটি ইন্টার‍্যাকশন একটি কনটেক্সটে শুরু ও কনফিগারেশন পর্যায়ের পরে ঘটে।
  • স্পেশিয়াল ক্ষমতা : স্পেশিয়াল এন্টিটি ম্যানিপুলেশন ব্যাপকভাবে ক্ষমতা দ্বারা প্রদান করা হয়। ক্ষমতা হল কার্যকারিতার কিছু ইউনিট, উদাহরণস্বরূপ (সীমাবদ্ধতা ছাড়া) অ্যাপ্লিকেশন-সংজ্ঞায়িত অ্যাঙ্কর, প্লেন শনাক্তকরণ বা ছবি ট্র্যাকিং। প্রতিটি ক্ষমতা সাধারণত একটি পৃথক এক্সটেনশনে সংজ্ঞায়িত করা হয় (যথারীতি ইনস্ট্যান্স তৈরির সময় চালু করা হয়) এবং তৈরির সময় একটি নির্দিষ্ট প্রসঙ্গের জন্য চালু করা হয়।
  • প্রতিটি ক্ষমতা কম্পোনেন্টের ধরন-এর একটি সেটের সাথে যুক্ত থাকে যার জন্য কম্পোনেন্ট সেই ক্ষমতা দ্বারা প্রকাশিত প্রতিটি এন্টিটিতে উপস্থিত থাকে। ক্ষমতা সংজ্ঞায়িত করা এক্সটেনশনটি নির্দিষ্ট করে যে কোন কম্পোনেন্টের ধরন ক্ষমতার জন্য বাধ্যতামূলক ("গ্যারান্টিযুক্ত"), যখন একই এক্সটেনশন বা অন্যগুলি কিছু সম্ভাব্য বাস্তবায়ন দ্বারা প্রদত্ত ঐচ্ছিক কম্পোনেন্টের ধরন নির্দিষ্ট করতে পারে। যেকোনও সংখ্যক ক্ষমতা, প্রদত্ত কম্পোনেন্টের ধরন সহ এন্টিটি প্রদান করতে পারে, যা ক্ষমতা নির্বিশেষে একইভাবে ব্যবহারযোগ্য।
  • স্পেশিয়াল ক্যাপাবিলিটি ফিচার : এছাড়াও, কিছু ক্যাপাবিলিটির জন্য কনফিগারেশন প্রয়োজন এবং তাই ক্যাপাবিলিটি ফিচার দ্বারা প্যারামিটারাইজ করা হয়।

এই এক্সটেনশনটি বর্তমান সিস্টেমে কাজ করে এমন প্রতিটি ক্ষমতা দ্বারা প্রদত্ত কম্পোনেন্ট গণনা করার জন্য একটি মেকানিজম প্রদান করে, বাধ্যতামূলক এবং যেকোনও ঐচ্ছিক কম্পোনেন্ট উভয়ই।

যেহেতু কিছু ইমপ্লিমেন্টেশনের জন্য ক্ষমতা অনুযায়ী বিভিন্ন মাত্রার প্যারামিটারাইজেশনের প্রয়োজন হতে পারে, তাই এই এক্সটেনশনটি বর্তমান সিস্টেমে প্রদত্ত ক্ষমতার সাথে সম্পর্কিত কাজ করে এমন ক্ষমতা ফিচার গণনা করার জন্য একটি মেকানিজম প্রদান করে।

এই এক্সটেনশনটি বেশ কয়েকটি সাধারণ কম্পোনেন্টও সংজ্ঞায়িত করে যা বিস্তৃত ক্ষমতা জুড়ে ব্যবহার করা হবে বলে আশা করা হচ্ছে।

স্পেশিয়াল এন্টিটি

স্পেশিয়াল এন্টিটি হল এমন এন্টিটি যা কোনও স্পেসে থাকে, যার বিভিন্ন সংশ্লিষ্ট ডেটা কম্পোনেন্টে সাজানো থাকে। এগুলি নিম্নলিখিত যেকোনও একটি হতে পারে:

  • ফিজিক্যাল (যেমন, দেওয়াল ও মেঝের মতো প্ল্যানার সারফেস, চেয়ার ও বুককেসের মতো অবজেক্ট ইত্যাদি)
  • ভার্চুয়াল (যেমন, অন্য অ্যাপ্লিকেশন বা ব্যবহারকারীর মাধ্যমে প্লেস ও শেয়ার করা কন্টেন্ট),
  • অ্যাপ-সংজ্ঞায়িত (যেমন, অ্যাপ্লিকেশন কোনও এলাকাকে "লিভিং রুম" বা "রান্নাঘর" হিসেবে চিহ্নিত করে, অথবা টিভি রাখার লোকেশন হিসেবে কোনও পয়েন্ট চিহ্নিত করে ইত্যাদি)

অ্যাকশন সিস্টেমের মাধ্যমে যেসব জিনিস এক্সপোজ করা হয়, যেমন কন্ট্রোলার বা চোখের দৃষ্টি, সেগুলি স্পেশিয়াল এন্টিটি হিসেবে মডেল করার জন্য নয়।

OpenXR-এ স্পেশিয়াল এন্টিটি এন্টিটি-কম্পোনেন্ট সিস্টেম হিসেবে মডেল করা হয়। প্রতিটি স্পেশিয়াল এন্টিটির এক সেট কম্পোনেন্ট থাকে এবং প্রতিটি কম্পোনেন্ট সেই এন্টিটির জন্য এক সেট অনন্য ডেটা ও আচরণ প্রদান করে।

স্পেশিয়াল এন্টিটি XrSpatialEntityIdEXT অ্যাটম বা XrSpatialEntityEXT হ্যান্ডেল দ্বারা উপস্থাপিত হয়, যার বিবরণ স্পেশিয়াল এন্টিটি উপস্থাপনা বিভাগে দেওয়া হয়েছে।

স্পেশিয়াল কম্পোনেন্টের ধরন

স্পেশিয়াল এন্টিটিতে এক বা একাধিক কম্পোনেন্ট থাকে যা সেই এন্টিটির জন্য ডেটা বা আচরণ প্রদান করে। এই এক্সটেনশন দ্বারা সংজ্ঞায়িত কিছু সাধারণ কম্পোনেন্টের জন্য সাধারণ কম্পোনেন্ট দেখুন।

typedef enum XrSpatialComponentTypeEXT {
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT = 1,
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT = 2,
    XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT = 3,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT = 4,
    XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT = 1000741000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT = 1000741001,
    XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT = 1000741002,
    XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT = 1000741003,
    XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT = 1000743000,
    XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT = 1000744000,
    XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT = 1000744001,
    XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT = 1000744002,
    XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT = 1000762000,
    XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT = 1000763000,
    XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT = 1000782000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT = 1000783000,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT = 1000783001,
    XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT = 1000783002,
    XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID = 1000785000,
    XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID = 1000786000,
    XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID = 1000791000,
    XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS = 1000792002,
    XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS = 1000792003,
    XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS = 1000792004,
    XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS = 1000792005,
    XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1 = 1000793000,
    XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID = 1000794000,
    XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2 = 1000798000,
    XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID = 1000803000,
    XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1 = 1000808000,
    XR_SPATIAL_COMPONENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;

XrSpatialComponentTypeEXT এনিউমারেশন বিভিন্ন ধরনের কম্পোনেন্ট শনাক্ত করে যা রানটাইম হয়তো সাপোর্ট করতে পারে।

তালিকাভুক্ত সব কম্পোনেন্টের ধরন এই এক্সটেনশন নিজে থেকে প্রদান করে না: কিছু কম্পোনেন্টের জন্য ইনস্ট্যান্স তৈরির সময় অতিরিক্ত এক্সটেনশন চালু করতে হয়, যেমনটি ডকুমেন্টেশনে উল্লেখ করা আছে।

এনিউমারেন্টের নিম্নলিখিত মান আছে:

Enum-এর বিবরণ

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য 2D বাউন্ড প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentBounded2DListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialBounded2DDataEXT

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT

স্পেশিয়াল এন্টিটির জন্য 3D বাউন্ড প্রদান করে এমন কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentBounded3DListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrBoxf

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য মূলের XrSpatialEntityIdEXT প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentParentListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialEntityIdEXT

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য 3D মেশ প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMesh3DListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialMeshDataEXT

XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য প্লেন অ্যালাইনমেন্ট enum প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentPlaneAlignmentListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialPlaneAlignmentEXT (XR_EXT_spatial_plane_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT

স্পেশিয়াল এন্টিটির জন্য 2D মেশ প্রদানকারী কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMesh2DListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialMeshDataEXT (XR_EXT_spatial_plane_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য 2D বাউন্ডারি পলিগন প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentPolygon2DListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialPolygon2DDataEXT (XR_EXT_spatial_plane_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT

কম্পোনেন্ট যা একটি প্লেনের জন্য একটি শব্দার্থিক লেবেল প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentPlaneSemanticLabelListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialPlaneSemanticLabelEXT (XR_EXT_spatial_plane_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT

মার্কারের ধরন, আইডি ও লোকেশন বর্ণনা করে এমন কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMarkerListEXT ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialMarkerDataEXT (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT

কম্পোনেন্ট যা কোনও দৃশ্যের জন্য শব্দার্থগত লেবেল প্রদান করে; সংশ্লিষ্ট তালিকা স্ট্রাকচার হল XrSpatialComponentObjectSemanticLabelListEXT . সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialObjectSemanticLabelEXT . (XR_EXT_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT

কীবোর্ডের জন্য সিম্যান্টিক লেবেল প্রদানকারী কম্পোনেন্ট; সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentKeyboardSemanticLabelListEXT . সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialKeyboardSemanticLabelEXT (XR_EXT_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT

কম্পোনেন্ট যা মাউসের জন্য একটি সিম্যান্টিক লেবেল প্রদান করে; সংশ্লিষ্ট তালিকা কাঠামো হল XrSpatialComponentMouseSemanticLabelListEXT . সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialMouseSemanticLabelEXT (XR_EXT_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT

অ্যাঙ্করের লোকেশন প্রদানকারী কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentAnchorListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrPosef (XR_EXT_spatial_anchor এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির জন্য পারসিস্টেড UUID প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentPersistenceListEXT ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialPersistenceDataEXT (XR_EXT_spatial_persistence এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT

প্ল্যানার ছবির ধরন বর্ণনা করে এমন কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentImage2DListEXT ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialImageSizeEXT . (XR_EXT_spatial_image_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT

স্পেশিয়াল এন্টিটির 3D মেশের জন্য নরমাল প্রদান করে এমন কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMesh3DNormalsListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialBufferEXT (XR_EXT_spatial_mesh_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT

কম্পোনেন্ট যা স্পেশিয়াল এন্টিটির 3D মেশের জন্য প্রতি-ভার্টেক্স সিম্যান্টিক লেবেল প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMesh3DVertexSemanticLabelsListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialBufferEXT ; বাফারের মধ্যে থাকা ডেটা XrSpatialMeshSemanticLabelEXT-এ ম্যাপ করে (XR_EXT_spatial_mesh_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT

স্পেশিয়াল এন্টিটির 3D মেশের জন্য প্রতি-ত্রিভুজ-ফেস সিম্যান্টিক লেবেল প্রদানকারী কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialBufferEXT ; বাফারের মধ্যে থাকা ডেটা XrSpatialMeshSemanticLabelEXT-এ ম্যাপ করে (XR_EXT_spatial_mesh_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID

কম্পোনেন্ট যা কোনও অবজেক্টের জন্য একটি সিম্যান্টিক লেবেল প্রদান করে; সংশ্লিষ্ট তালিকা স্ট্রাকচার হল XrSpatialComponentObjectSemanticLabelListANDROID ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialObjectSemanticLabelANDROID (XR_ANDROID_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID

কোনও এন্টিটিতে রেকাস্ট হিটের পোজ প্রদানকারী কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentRaycastResultListANDROID ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialRaycastResultDataANDROID (XR_ANDROID_spatial_discovery_raycast এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID

কম্পোনেন্ট যা অ্যাটাচ করা এন্টিটি অন্তর্ভুক্ত করে এন্টিটির এন্টিটি আইডি প্রদান করে। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentSubsumedByListANDROID ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialEntityIdEXT (XR_ANDROID_spatial_component_subsumed_by এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS

কম্পোনেন্ট যা একটি শু-বক্সের ডাইমেনশন এবং রুমের ধরন প্রদান করে; সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentRoomListANDROIDSYS ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialRoomDataANDROIDSYS (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS

কম্পোনেন্ট যা বাউন্ডারি সারফেসের মেটেরিয়াল টাইপ প্রদান করে; সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentMaterialTypeListANDROIDSYS ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialMaterialTypeANDROIDSYS (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS

কম্পোনেন্ট যা ট্র্যাকযোগ্যতার কনফিডেন্স প্রদান করে; সংশ্লিষ্ট তালিকা স্ট্রাকচার হল XrSpatialComponentConfidenceListANDROIDSYS ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল float (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS

রুমের খালি জায়গা সংক্রান্ত তথ্য প্রদানকারী কম্পোনেন্ট; সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentRoomEmptinessListANDROIDSYS ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল float (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1

অ্যাটাচ করা এন্টিটিতে অকুপেন্সি গ্রিডের তথ্য প্রদান করে এমন কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentOccupancyGridListANDROIDX1 ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialOccupancyGridDataANDROIDX1 (XR_ANDROIDX1_spatial_occupancy_grid এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID

কোয়াড অ্যানোটেশন বর্ণনা করে এমন একটি কম্পোনেন্ট। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentAnnotationQuadListANDROID ; সংশ্লিষ্ট ডেটার স্ট্রাকচার হল XrSpatialAnnotationQuadDataANDROID (XR_ANDROID_spatial_annotation_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2

কম্পোনেন্ট যা স্ট্রিটস্কেপ জ্যামিতির জন্য মেটাডেটা প্রদান করে; সংশ্লিষ্ট তালিকা স্ট্রাকচার হল XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 ; সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialStreetscapeGeometryMetadataANDROIDX2 (XR_ANDROIDX2_geospatial_streetscape এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID

কম্পোনেন্ট যা কোনও এন্টিটিকে জ্যামিতি পয়েন্ট হিসেবে শনাক্ত করে। এই কম্পোনেন্টের ধরনের জন্য কোনও সংশ্লিষ্ট তালিকা বা ডেটা স্ট্রাকচার নেই। এই কম্পোনেন্টের উপস্থিতি শুধুমাত্র একটি এন্টিটির অ্যাঙ্করে অ্যাটাচ করার ক্ষমতা নির্দেশ করে। (XR_ANDROID_spatial_geometry_point এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1

একটি কম্পোনেন্ট যা পারসিস্টেন্স স্কোপের বর্ণনা দেয় যেখানে এন্টিটি পারসিস্ট করা হয়। রানটাইম XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT-কে সাপোর্ট করলে, এটিকেও এই কম্পোনেন্টকে সাপোর্ট করতেই হবে। সংশ্লিষ্ট ডেটা স্ট্রাকচার হল XrSpatialBufferEXT। সংশ্লিষ্ট তালিকার স্ট্রাকচার হল XrSpatialComponentPersistenceScopeDataListANDROIDX1। (XR_ANDROIDX1_spatial_anchor_cloud_sharing এক্সটেনশন দ্বারা যোগ করা হয়েছে)

স্পেশিয়াল ক্ষমতা ও সেট-আপ

স্পেশিয়াল ক্ষমতা রানটাইমের সেই ক্ষমতাকে সংজ্ঞায়িত করে যার মাধ্যমে এমন এন্টিটি খুঁজে পাওয়া যায় যেগুলির উপর কম্পোনেন্টের একটি গ্যারান্টিযুক্ত সেট থাকে। XrSpatialContextEXT তৈরি করার সময় অ্যাপ্লিকেশন স্পেশাল ক্ষমতার কম্পোনেন্ট চালু করে এবং রানটাইম অবশ্যই শুধু খুঁজে পাওয়া এন্টিটিতে চালু করা কম্পোনেন্ট প্রদান করবে। যেমন, রানটাইম যদি রিপোর্ট করে যে প্রদত্ত ক্ষমতার একটি কম্পোনেন্ট হল "সিম্যান্টিক লেবেল", তাহলে এর অর্থ হল অ্যাপ্লিকেশন সেই ক্ষমতার কনফিগারেশনের মাধ্যমে সিম্যান্টিক লেবেল চালু করতে পারবে এবং রানটাইম অবশ্যই শুধু সিম্যান্টিক লেবেল কম্পোনেন্ট প্রদান করবে যদি সেটি কনফিগার করা থাকে।

typedef enum XrSpatialCapabilityEXT {
    XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT = 1000741000,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT = 1000743000,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT = 1000743001,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT = 1000743002,
    XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT = 1000743003,
    XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT = 1000744000,
    XR_SPATIAL_CAPABILITY_ANCHOR_EXT = 1000762000,
    XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT = 1000782000,
    XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT = 1000783000,
    XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID = 1000785000,
    XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID = 1000786000,
    XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS = 1000792000,
    XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS = 1000792001,
    XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID = 1000794000,
    XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2 = 1000798000,
    XR_SPATIAL_CAPABILITY_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityEXT;

XrSpatialCapabilityEXT এনিউমারেশন বিভিন্ন ধরনের ক্ষমতা শনাক্ত করে যা রানটাইম হয়তো সাপোর্ট করে।

এনিউমারেন্টের নিম্নলিখিত মান আছে:

Enum-এর বিবরণ

XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT

প্লেন ট্র্যাকিং (XR_EXT_spatial_plane_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT

QR কোড শনাক্ত ও ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT

মাইক্রো QR কোড শনাক্ত ও ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT

Aruco মার্কার শনাক্ত ও ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT

AprilTags শনাক্ত ও ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT

অবজেক্ট ট্র্যাকিং (XR_EXT_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_ANCHOR_EXT

স্পেশিয়াল অ্যাঙ্কর তৈরি করার ক্ষমতা (XR_EXT_spatial_anchor এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT

প্ল্যানার রেফারেন্স ইমেজ শনাক্ত ও ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_image_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT

কোনও পরিবেশের মেশ ট্র্যাক করার ক্ষমতা। (XR_EXT_spatial_mesh_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID

অবজেক্ট ট্র্যাকিং (XR_ANDROID_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID

ডেপথ বাফারের বিপরীতে রেকাস্ট (XR_ANDROID_spatial_discovery_raycast এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS

রুম ট্র্যাক করার ক্ষমতা (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS

রুমের সীমানা ট্র্যাক করার ক্ষমতা (XR_ANDROIDSYS_spatial_room_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID

অ্যানোটেশন ট্র্যাকিং (XR_ANDROID_spatial_annotation_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2

Streetscape জিওমেট্রি (XR_ANDROIDX2_geospatial_streetscape এক্সটেনশন দ্বারা যোগ করা হয়েছে)

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

XrResult xrEnumerateSpatialCapabilitiesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    capabilityCapacityInput,
    uint32_t*                                   capabilityCountOutput,
    XrSpatialCapabilityEXT*                     capabilities);

প্যারামিটারের বিবরণ

  • instance হল XrInstance-এর হ্যান্ডেল।
  • systemId হল XrSystemId যার স্পেশিয়াল ক্ষমতা গণনা করা হবে।
  • capabilityCapacityInput হল capabilities অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • capabilityCountOutput হল ক্ষমতার সংখ্যা বা capabilityCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্ষমতা।
  • capabilities হল XrSpatialCapabilityEXT-এর একটি অ্যারে। capabilityCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় capabilities সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি xrEnumerateSpatialCapabilitiesEXT ব্যবহার করে প্রদত্ত XrSystemId দ্বারা সমর্থিত স্থানিক ক্ষমতার তালিকা গণনা করতে পারে।

রানটাইম অবশ্যই সেইসব স্পেশিয়াল ক্ষমতা গণনা করবে না যার এক্সটেনশন instance-এর জন্য চালু করা নেই।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrEnumerateSpatialCapabilitiesEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • instance অবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে
  • capabilityCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • capabilityCapacityInput যদি 0 না হয়, তাহলে capabilities অবশ্যই capabilityCapacityInput XrSpatialCapabilityEXT মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrEnumerateSpatialCapabilityComponentTypesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrSpatialCapabilityEXT                      capability,
    XrSpatialCapabilityComponentTypesEXT*       capabilityComponents);

প্যারামিটারের বিবরণ

  • instance হল XrInstance-এর হ্যান্ডেল।
  • systemId হল XrSystemId যার স্পেশিয়াল ক্যাপাবিলিটি কম্পোনেন্ট গণনা করা হবে।
  • capability হল XrSpatialCapabilityEXT যার জন্য কম্পোনেন্টগুলি গণনা করা হবে।
  • capabilityComponents হল XrSpatialCapabilityComponentTypesEXT-এর একটি পয়েন্টার, যা হল একটি ইনপুট/আউটপুট স্ট্রাকচার যেখানে অ্যাপ্লিকেশন-অ্যালোকেট করা অ্যারে পপুলেট করা হয়।

এই ফাংশনটি কম্পোনেন্টের ধরন গণনা করে যা প্রদত্ত ক্ষমতা সিস্টেমে কনফিগার করা এন্টিটিতে প্রদান করে।

systemId, capability-এর জন্য যে কম্পোনেন্টের সম্পূর্ণ সেট সাপোর্ট করে তা বুঝতে, অ্যাপ্লিকেশন XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ উল্লেখ করা কম্পোনেন্টের ধরন ব্যবহার করতে পারে এবং -এর জন্য XrSpatialContextEXT তৈরি করার সময়, capability-এর জন্য সঠিক কনফিগারেশন কী তা নির্ধারণ করতে এই তালিকা ব্যবহার করতে পারে।

xrEnumerateSpatialCapabilitiesEXT-এর মাধ্যমে capability গণনা করা না হলে, রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT রিটার্ন করতেই হবে।

রানটাইম অবশ্যই স্পেশিয়াল কম্পোনেন্টের ধরন গণনা করবে না যার এক্সটেনশন instance-এর জন্য চালু করা নেই।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrEnumerateSpatialCapabilityComponentTypesEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • instance অবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে
  • capability অবশ্যই একটি সঠিক XrSpatialCapabilityEXT ভ্যালু হতে হবে
  • capabilityComponents অবশ্যই XrSpatialCapabilityComponentTypesEXT স্ট্রাকচারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialCapabilityComponentTypesEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialCapabilityComponentTypesEXT {
    XrStructureType               type;
    void*                         next;
    uint32_t                      componentTypeCapacityInput;
    uint32_t                      componentTypeCountOutput;
    XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialCapabilityComponentTypesEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • componentTypeCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • componentTypeCountOutput হল কম্পোনেন্টের প্রকারের সংখ্যা অথবা componentTypeCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্ষমতা।
  • componentTypes হল XrSpatialComponentTypeEXT-এর একটি অ্যারে। componentTypeCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় componentTypes সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

সঠিক ব্যবহার (অন্তর্নিহিত)

স্পেশিয়াল ক্যাপাবিলিটি ফিচার

typedef enum XrSpatialCapabilityFeatureEXT {
    XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT = 1000743000,
    XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT = 1000743001,
    XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT = 1000744000,
    XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID = 1000761000,
    XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID = 1000761001,
    XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID = 1000761002,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT = 1000782000,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT = 1000782001,
    XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT = 1000782002,
    XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT = 1000783000,
    XR_SPATIAL_CAPABILITY_FEATURE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityFeatureEXT;

রানটাইম কীভাবে কম্পোনেন্ট ডেটা গণনা করে তা কনফিগার করার জন্য কিছু ক্ষমতার প্যারামিটার অ্যাপ্লিকেশনে প্রকাশ করা হয়। প্যারামিটারাইজেশন/কনফিগারেশনের এই ডাইমেনশনগুলি ক্যাপাবিলিটি ফিচার হিসেবে পরিচিত। যেমন, ইমেজ ট্র্যাকিং ক্ষমতার জন্য, রানটাইম অ্যাপ্লিকেশনের জন্য একটি ফিচারকে সাপোর্ট করতে পারে যাতে ট্র্যাক করা ছবিগুলি স্থির কিনা তা নির্দিষ্ট করা যায়।

কনফিগারেশন স্ট্রাকচারের মাধ্যমে রানটাইমে এই তথ্য প্রদান করার সময়, সংশ্লিষ্ট এন্টিটিতে থাকা কম্পোনেন্ট টাইপের সেট অবশ্যই পরিবর্তন করা যাবে না, যেমন ট্র্যাক করা ছবিতে। তবে, রানটাইম হয়তো অপ্টিমাইজ করতে পারবে, যেমন ইমেজ ট্র্যাকিং ক্ষমতার ট্র্যাকিং ক্ষমতা এবং অ্যাপ্লিকেশনকে আরও ভালো অভিজ্ঞতা প্রদান করতে পারবে।

এই ধরনের ফিচার XrSpatialCapabilityFeatureEXT দ্বারা দেখানো হয় এবং অ্যাপ্লিকেশন xrEnumerateSpatialCapabilityFeaturesEXT ব্যবহার করে সেগুলি গণনা করে।

প্রতিটি ক্যাপাবিলিটি ফিচারের একটি সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার আছে যা এটিকে চালু করতে সাহায্য করে। এই ধরনের কনফিগারেশন স্ট্রাকচার অবশ্যই সংশ্লিষ্ট ক্ষমতার XrSpatialCapabilityConfigurationBaseHeaderEXT :: next-এর সাথে চেইন করা থাকতে হবে।

এনিউমারেন্টের নিম্নলিখিত মান আছে:

Enum-এর বিবরণ

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT

অ্যাপ্লিকেশনকে মার্কারের সাইজ নির্দিষ্ট করার অনুমতি দেওয়ার জন্য ক্যাপাবিলিটি ফিচার। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialMarkerSizeEXT (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT

মার্কার স্ট্যাটিক কিনা তা নির্দিষ্ট করার জন্য অ্যাপ্লিকেশনগুলিকে অনুমতি দেওয়ার জন্য ক্ষমতা বৈশিষ্ট্য। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialMarkerStaticOptimizationEXT (XR_EXT_spatial_marker_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT

স্পেশাল ফিচার যা রানটাইম ট্র্যাক করার জন্য অ্যাপ্লিকেশনকে XrSpatialObjectSemanticLabelEXT থেকে লেবেলের সাবসেট নির্দিষ্ট করার অনুমতি দেয়। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialFeatureObjectSemanticLabelSubsetEXT . (XR_EXT_spatial_object_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID

রানটাইম XrSpatialDiscoverySnapshotCreateInfoEXT-এর জন্য XrSpatialBoundsSpherefANDROID ফিল্টারকে সাপোর্ট করে ; স্পেশাল কনটেক্সট তৈরি করার সময় এর জন্য কোনও কনফিগারেশন স্ট্রাকচার অন্তর্ভুক্ত করার প্রয়োজন হয় না। (XR_ANDROID_spatial_discovery_bounds এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID

রানটাইম XrSpatialDiscoverySnapshotCreateInfoEXT-এর জন্য XrSpatialBoundsBoxfANDROID ফিল্টার সাপোর্ট করে ; এর জন্য স্পেশিয়াল কনটেক্সট তৈরির সময় কোনও কনফিগারেশন স্ট্রাকচার অন্তর্ভুক্ত করার প্রয়োজন হয় না। (XR_ANDROID_spatial_discovery_bounds এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID

রানটাইম XrSpatialDiscoverySnapshotCreateInfoEXT-এর জন্য XrSpatialBoundsFrustumfANDROID ফিল্টারকে সাপোর্ট করে ; স্পেশাল কন্টেক্সট তৈরি করার সময় এর জন্য কোনও কনফিগারেশন স্ট্রাকচার অন্তর্ভুক্ত করার প্রয়োজন হয় না। (XR_ANDROID_spatial_discovery_bounds এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT

রানটাইম, শনাক্ত ও ট্র্যাক করা ছবির ফিজিক্যাল সাইজ অটোমেটিক অনুমান করতে সাহায্য করে। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialImageSizeEXT (XR_EXT_spatial_image_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT

রানটাইম XrSpatialImageStaticOptimizationEXT সাপোর্ট করে। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialImageStaticOptimizationEXT . (XR_EXT_spatial_image_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT

রানটাইম XrSpatialImageSizeEXT সমর্থন করে। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialImageSizeEXT (XR_EXT_spatial_image_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT

পরিবেশের ওয়াটারটাইট মেশ ট্র্যাক করার জন্য ক্যাপাবিলিটি ফিচার। সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার হল XrSpatialFeatureTrackWatertightMeshEXT . (XR_EXT_spatial_mesh_tracking এক্সটেনশন দ্বারা যোগ করা হয়েছে)

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

XrResult xrEnumerateSpatialCapabilityFeaturesEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrSpatialCapabilityEXT                      capability,
    uint32_t                                    capabilityFeatureCapacityInput,
    uint32_t*                                   capabilityFeatureCountOutput,
    XrSpatialCapabilityFeatureEXT*              capabilityFeatures);

প্যারামিটারের বিবরণ

  • instance হল XrInstance-এর হ্যান্ডেল।
  • systemId হল XrSystemId যার স্পেশিয়াল ক্যাপাবিলিটি ফিচার গণনা করা হবে।
  • capability হল XrSpatialCapabilityEXT যার জন্য ফিচারগুলি গণনা করা হবে।
  • capabilityFeatureCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • capabilityFeatureCountOutput হল ফিচারের সংখ্যা অথবা capabilityFeatureCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • capabilityFeatures হল XrSpatialCapabilityFeatureEXT-এর একটি অ্যারে। capabilityFeatureCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় capabilityFeatures সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি xrEnumerateSpatialCapabilityFeaturesEXT ব্যবহার করে XrSpatialCapabilityEXT-এর জন্য প্রদত্ত সিস্টেম দ্বারা সমর্থিত ফিচারগুলি আবিষ্কার করে।

যেসব ক্যাপাবিলিটির ফিচার এক্সপোজ করা আছে, সেগুলির ক্ষেত্রে অ্যাপ্লিকেশনটি চালু করার জন্য ফিচার বা ফিচারগুলি বেছে নেয় এবং XrSpatialContextCreateInfoEXT :: capabilityConfigs -এ ক্যাপাবিলিটি কনফিগারেশন স্ট্রাকচারের পরবর্তী চেনে সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার প্রদান করে।

capability যদি xrEnumerateSpatialCapabilitiesEXT দ্বারা গণনা করা ক্ষমতা না হয়, তাহলে রানটাইম অবশ্যই XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT রিটার্ন করবে।

রানটাইম অবশ্যই স্পেশিয়াল ক্যাপাবিলিটি ফিচার গণনা করবে না যার এক্সটেনশন instance-এর জন্য চালু করা নেই।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrEnumerateSpatialCapabilityFeaturesEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন চালু করতেই হবে
  • instance অবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে
  • capability অবশ্যই একটি সঠিক XrSpatialCapabilityEXT ভ্যালু হতে হবে
  • capabilityFeatureCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • capabilityFeatureCapacityInput যদি 0 না হয়, তাহলে capabilityFeatures অবশ্যই capabilityFeatureCapacityInput XrSpatialCapabilityFeatureEXT ভ্যালুর অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

স্পেশিয়াল কনটেক্সট

স্পেশিয়াল কনটেক্সট তৈরি করা

XR_DEFINE_HANDLE(XrSpatialContextEXT)

XrSpatialContextEXT হ্যান্ডেল ব্যবহারকারীর এনভায়রনমেন্টে কিছু সংখ্যক স্পেশিয়াল এন্টিটি খুঁজে পাওয়া ও আপডেট করার রিসোর্সকে দেখায়। এই এক্সটেনশনের অন্যান্য ফাংশন ব্যবহার করে স্পেশিয়াল এন্টিটি খুঁজে পেতে ও আপডেট করতে, অ্যাপ্লিকেশন এই হ্যান্ডেল ব্যবহার করতে পারে।

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

XrResult xrCreateSpatialContextAsyncEXT(
    XrSession                                   session,
    const XrSpatialContextCreateInfoEXT*        createInfo,
    XrFutureEXT*                                future);

প্যারামিটারের বিবরণ

  • session হল একটি XrSession যেখানে স্পেশিয়াল কনটেক্সট অ্যাক্টিভ থাকবে।
  • createInfo হল XrSpatialContextCreateInfoEXT যা স্পেশিয়াল কনটেক্সট প্যারামিটার নির্দিষ্ট করতে ব্যবহার করা হয়।
  • future হল XrFutureEXT-এর একটি পয়েন্টার।

অ্যাপ্লিকেশনটি XrSpatialContextEXT হ্যান্ডেল তৈরি করতে পারবে:

  • XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ XrSpatialCapabilityConfigurationBaseHeaderEXT থেকে প্রাপ্ত স্ট্রাকচার প্রদান করা হচ্ছে যাতে ক্ষমতা চালু করা যায় এবং সেই ক্ষমতার জন্য কম্পোনেন্ট চালু করা যায়।
  • XrSpatialCapabilityFeatureEXT-এর সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচারের সাথে ক্ষমতাগুলি কনফিগার করা।

XrSpatialContextCreateInfoEXT ::capabilityConfigCount ০ হলে রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতেই হবে। স্পেশিয়াল কন্টেক্সট হ্যান্ডেলের জন্য অন্তত একটি ক্ষমতা প্রয়োজন।

XrSpatialContextCreateInfoEXT :: capabilityConfigs অ্যারেতে কোনও ক্ষমতা xrEnumerateSpatialCapabilitiesEXT দ্বারা গণনা করা না হলে রানটাইমকে অবশ্যই XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT রিটার্ন করতে হবে।

XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ কোনও XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount 0 হলে, রানটাইম XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতেই হবে। ক্যাপাবিলিটির জন্য কম্পোনেন্টের ধরন সংক্রান্ত তালিকা ছাড়া ক্যাপাবিলিটি কনফিগারেশন অসম্পূর্ণ থাকে।

xrEnumerateSpatialCapabilityComponentTypesEXT-এ XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability-এর জন্য XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents-এ তালিকাভুক্ত কোনও কম্পোনেন্ট টাইপ গণনা করা না হলে, রানটাইমকে XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT রিটার্ন করতেই হবে।

XrSpatialContextCreateInfoEXT :: capabilityConfigs-এর পরবর্তী চেনের কোনও স্ট্রাকচার যদি এমন কোনও XrSpatialCapabilityFeatureEXT-এর সাথে সম্পর্কিত হয় যা xrEnumerateSpatialCapabilityFeaturesEXT-এ সেই ক্ষমতার জন্য এনিউমারেট করা হয়নি, তাহলে রানটাইমকে অবশ্যই সেই XrSpatialCapabilityFeatureEXT স্ট্রাকচারটি উপেক্ষা করতে হবে।

XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ একই XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability সহ একাধিক স্ট্রাকচার থাকলে, রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতেই হবে।

সিস্টেম রিসোর্সের সর্বোত্তম ব্যবহার নিশ্চিত করতে, রানটাইম হয়ত XrSpatialContextCreateInfoEXT অ্যারেতে প্রদত্ত কনফিগারেশন ব্যবহার করতে পারে যাতে স্পেশাল অনুরোধের জন্য নিজেকে প্রস্তুত করতে পারে। যেমন, প্লেন ট্র্যাকিং ক্ষমতাকে সাপোর্ট করে এমন রানটাইম শুধুমাত্র তখনই প্লেন ট্র্যাকিং পাইপলাইন শুরু করতে পারে, যদি অ্যাপ্লিকেশন দ্বারা প্লেন ট্র্যাকিং ক্ষমতা সহ স্পেশিয়াল কন্টেক্সট হ্যান্ডেল তৈরি করা হয়। কনফিগার করা ক্ষমতার ওয়ার্ম-আপ টাইম দীর্ঘ হলে, xrCreateSpatialDiscoverySnapshotAsyncEXT-এ কল করার ফলে হয়ত খালি স্ন্যাপশট তৈরি হতে পারে। xrCreateSpatialDiscoverySnapshotAsyncEXT ব্যবহার করার আগে অ্যাপ্লিকেশন XrEventDataSpatialDiscoveryRecommendedEXT-এর জন্য অপেক্ষা করতে পারে যাতে নিশ্চিত হওয়া যায় যে অন্তর্নিহিত ট্র্যাকিং পরিষেবা চালু হয়ে গেছে।

XrSpatialContextEXT-এর জন্য কনফিগার করা স্পেশাল ক্ষমতার ক্ষেত্রে অ্যাপ্লিকেশন অ্যাক্সেস নিয়ন্ত্রণ করার জন্য রানটাইম যদি কোনও অনুমতি সিস্টেম এনফোর্স করে, তাহলে এই অ্যাপ্লিকেশনকে সেইসব অনুমতি না দেওয়া হলে রানটাইমকে XR_ERROR_PERMISSION_INSUFFICIENT রিটার্ন করতেই হবে।

এই ফাংশনটি একটি অ্যাসিঙ্ক্রোনাস অপারেশন শুরু করে এবং একটি সংশ্লিষ্ট XrFutureEXT তৈরি করে, যা xrPollFutureEXT এবং সম্পর্কিত ফাংশনের সাথে ব্যবহার করা যায়। এই ফাংশনের রিটার্ন ভ্যালু শুধুমাত্র এটিই দেখায় যে অ্যাসিঙ্ক্রোনাস অপারেশন শিডিউল করার জন্য প্যারামিটারগুলি গ্রহণযোগ্য ছিল কিনা। সম্পূর্ণ করার সংশ্লিষ্ট ফাংশন হল xrCreateSpatialContextCompleteEXT , যা এই ফাংশন থেকে পাওয়া ফিউচার READY অবস্থায় থাকলে ব্যবহার করা যায়, যেখানে সম্পূর্ণ করার স্ট্রাকচার XrCreateSpatialContextCompletionEXT -এ সেই ফাংশন দ্বারা আউটপুট পপুলেট করা হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XR_EXT_spatial_entity এক্সটেনশন xrCreateSpatialContextAsyncEXT কল করার আগে অবশ্যই চালু করতে হবে
  • session অবশ্যই একটি সঠিক XrSession হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি সঠিক XrSpatialContextCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • future অবশ্যই XrFutureEXT ভ্যালুর পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_TIME_INVALID (XR_ANDROID_spatial_annotation_tracking চালু থাকলে)

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

typedef struct XrSpatialContextCreateInfoEXT {
    XrStructureType                                                type;
    const void*                                                    next;
    uint32_t                                                       capabilityConfigCount;
    const XrSpatialCapabilityConfigurationBaseHeaderEXT* const*    capabilityConfigs;
} XrSpatialContextCreateInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • capabilityConfigCount হল একটি uint32_t যা capabilityConfigs অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • capabilityConfigs হল XrSpatialCapabilityConfigurationBaseHeaderEXT পয়েন্টারের অ্যারের একটি পয়েন্টার।

XrSpatialContextCreateInfoEXT স্ট্রাকচার XrSpatialContextEXT হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।

সঠিক ব্যবহার (অন্তর্নিহিত)

XrSpatialCapabilityConfigurationBaseHeaderEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialCapabilityConfigurationBaseHeaderEXT {
    XrStructureType                     type;
    const void*                         next;
    XrSpatialCapabilityEXT              capability;
    uint32_t                            enabledComponentCount;
    const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationBaseHeaderEXT;

এই স্ট্রাকচার সরাসরি API-তে ব্যবহার করা হয় না, তবে এর চাইল্ড স্ট্রাকচার স্পেশিয়াল ক্ষমতা কনফিগার করার জন্য XrSpatialContextCreateInfoEXT-এর সাথে ব্যবহার করা যেতে পারে।

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • capability হল একটি XrSpatialCapabilityEXT .
  • enabledComponentCount হল একটি uint32_t যা enabledComponents অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • enabledComponents হল XrSpatialComponentTypeEXT-এর অ্যারের একটি পয়েন্টার।

xrEnumerateSpatialCapabilitiesEXT-এর মাধ্যমে capability গণনা করা না হলে, রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT রিটার্ন করতেই হবে। enabledComponents-এ তালিকাভুক্ত কোনও কম্পোনেন্ট টাইপ xrEnumerateSpatialCapabilityComponentTypesEXT-এ capability-এর জন্য এনিউমারেট করা না থাকলে, রানটাইমকে XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

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

XrResult xrCreateSpatialContextCompleteEXT(
    XrSession                                   session,
    XrFutureEXT                                 future,
    XrCreateSpatialContextCompletionEXT*        completion);

প্যারামিটারের বিবরণ

xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT-এর মাধ্যমে শুরু করা অ্যাসিঙ্ক্রোনাস অপারেশন সম্পূর্ণ করে। future রেডি অবস্থায় না থাকলে রানটাইমকে XR_ERROR_FUTURE_PENDING_EXT রিটার্ন করতেই হবে। future আগে থেকেই সম্পূর্ণ বা বাতিল করা হয়ে থাকলে, রানটাইমকে XR_ERROR_FUTURE_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrCreateSpatialContextCompleteEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন চালু করতেই হবে
  • session অবশ্যই একটি সঠিক XrSession হ্যান্ডেল হতে হবে
  • completion অবশ্যই XrCreateSpatialContextCompletionEXT স্ট্রাকচারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrCreateSpatialContextCompletionEXT {
    XrStructureType        type;
    void*                  next;
    XrResult               futureResult;
    XrSpatialContextEXT    spatialContext;
} XrCreateSpatialContextCompletionEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • futureResult হল স্পেশিয়াল কন্টেক্সট তৈরি করার অপারেশনের XrResult।
  • spatialContext হল একটি XrSpatialContextEXT যা xrCreateSpatialContextAsyncEXT :: createInfo -এ ডেটা এবং কনফিগারেশন ব্যবহার করে তৈরি করা হয়েছে।

ভবিষ্যতের রিটার্ন কোড

futureResult ভ্যালু:

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT

futureResult যদি একটি সাকসেস কোড হয়, তাহলে spatialContext অবশ্যই সঠিক হতে হবে। spatialContext বৈধ হলে, এটি শুধুমাত্র xrCreateSpatialContextAsyncEXT :: session-এর লাইফসাইকেলের মধ্যে অথবা অ্যাপ্লিকেশন xrDestroySpatialContextEXT-এর মাধ্যমে spatialContext নষ্ট না করা পর্যন্ত বৈধ থাকে, যেটি আগে হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

স্পেশিয়াল কন্টেক্সট ধ্বংস করুন

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

XrResult xrDestroySpatialContextEXT(
    XrSpatialContextEXT                         spatialContext);

প্যারামিটারের বিবরণ

স্পেশিয়াল এন্টিটি খোঁজা এবং আপডেট করার কাজ শেষ হলে, spatialContext হ্যান্ডেল এবং অন্তর্নিহিত রিসোর্স রিলিজ করার জন্য অ্যাপ্লিকেশনটি xrDestroySpatialContextEXT ফাংশন কল করতে পারে। spatialContext-এর মতো একই স্পেশিয়াল ক্ষমতা সহ তৈরি করা অন্য কোনও বৈধ XrSpatialContextEXT না থাকলে, এই কলটি সিস্টেম রিসোর্স সেভ করার জন্য সেইসব ক্ষমতার জন্য প্রয়োজনীয় ট্র্যাকিং পরিষেবা বন্ধ করতে রানটাইমের জন্য সাজেশন হিসেবে কাজ করে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrDestroySpatialContextEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • spatialContext অবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে

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

  • spatialContext এবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

স্পেশিয়াল এন্টিটি রিপ্রেজেন্টেশন

স্পেশিয়াল এন্টিটি আইডি

XR_DEFINE_ATOM(XrSpatialEntityIdEXT)

ব্যবহারকারীর স্পেশাল এনভায়রনমেন্টে রানটাইমের মাধ্যমে খুঁজে পাওয়া যেকোনও ধরনের এন্টিটি দেখানোর জন্য XrSpatialEntityIdEXT ব্যবহার করা হয়। একটি XrSpatialEntityIdEXT XrSpatialContextEXT-এর জন্য বৈধ যেখানে এটি খুঁজে পাওয়া যায় এবং রানটাইম অবশ্যই একই XrSpatialContextEXT-এর মধ্যে বিভিন্ন এন্টিটির জন্য একই XrSpatialEntityIdEXT আবার ব্যবহার করবে না। এছাড়াও, রানটাইম অবশ্যই একই XrSpatialEntityIdEXT একই XrSession-এর মধ্যে একাধিক XrSpatialContextEXT জুড়ে আবার ব্যবহার করবে না, তা একই এন্টিটি বা আলাদা এন্টিটি দেখায় কিনা তা নির্বিশেষে।

#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0

XR_NULL_SPATIAL_ENTITY_ID_EXT হল একটি সংরক্ষিত ভ্যালু যা ভুল XrSpatialEntityIdEXT দেখায়। এটি API ফাংশনে পাস করা এবং সেখান থেকে ফেরত পাওয়া যেতে পারে, তবে শুধুমাত্র নির্দিষ্টভাবে অনুমতি দেওয়া হলে।

স্পেশিয়াল এন্টিটি হ্যান্ডেল

XR_DEFINE_HANDLE(XrSpatialEntityEXT)

XrSpatialEntityEXT হ্যান্ডেল একটি স্পেশিয়াল এন্টিটিকে উপস্থাপন করে। রানটাইমে কোনও নির্দিষ্ট এন্টিটির প্রতি আগ্রহ প্রকাশ করার জন্য অ্যাপ্লিকেশন এই ধরনের হ্যান্ডেল তৈরি করতে পারে।

আইডি থেকে স্পেশিয়াল এন্টিটি হ্যান্ডেল তৈরি করুন

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

XrResult xrCreateSpatialEntityFromIdEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialEntityFromIdCreateInfoEXT*   createInfo,
    XrSpatialEntityEXT*                         spatialEntity);

প্যারামিটারের বিবরণ

অ্যাপ্লিকেশনটি xrCreateSpatialEntityFromIdEXT ব্যবহার করতে পারে, যাতে XrSpatialEntityEXT হ্যান্ডেল তৈরি করা যায়। এটি ব্যবহারকারীর পরিবেশে থাকা কোনও এন্টিটির রেফারেন্স।

XrSpatialEntityFromIdCreateInfoEXT :: entityId যদি spatialContext-এর জন্য সঠিক আইডি না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XR_EXT_spatial_entity এক্সটেনশন xrCreateSpatialEntityFromIdEXT কল করার আগে অবশ্যই চালু করতে হবে
  • spatialContext অবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি সঠিক XrSpatialEntityFromIdCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • spatialEntity অবশ্যই XrSpatialEntityEXT হ্যান্ডেলের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialEntityFromIdCreateInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialEntityIdEXT    entityId;
} XrSpatialEntityFromIdCreateInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • entityId হল সেই এন্টিটির XrSpatialEntityIdEXT যার জন্য অ্যাপ্লিকেশনটি একটি হ্যান্ডেল তৈরি করতে চায়।

সঠিক ব্যবহার (অন্তর্নিহিত)

স্পেশিয়াল এন্টিটি হ্যান্ডেল ধ্বংস করুন

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

XrResult xrDestroySpatialEntityEXT(
    XrSpatialEntityEXT                          spatialEntity);

প্যারামিটারের বিবরণ

এই হ্যান্ডেল দ্বারা রেফারেন্স করা এন্টিটিতে আর আগ্রহ না থাকলে, spatialEntity হ্যান্ডেল রিলিজ করার জন্য অ্যাপ্লিকেশন xrDestroySpatialEntityEXT ব্যবহার করতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrDestroySpatialEntityEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • spatialEntity অবশ্যই একটি সঠিক XrSpatialEntityEXT হ্যান্ডেল হতে হবে

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

  • spatialEntity এবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

স্পেশিয়াল স্ন্যাপশট

XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)

অ্যাপ্লিকেশনটি স্পেশিয়াল এন্টিটি আবিষ্কার করার উদ্দেশ্যে বা পরিচিত স্পেশিয়াল এন্টিটি সম্পর্কে তথ্য আপডেট করার জন্য স্পেশিয়াল স্ন্যাপশট তৈরি করতে পারে। XrSpatialSnapshotEXT হ্যান্ডেলটি খুঁজে পাওয়া বা আপডেট করা স্পেশিয়াল এন্টিটির অপরিবর্তনীয় ডেটা এবং অ্যাপ্লিকেশন দ্বারা বেছে নেওয়া তাদের কম্পোনেন্টের সাবসেটকে দেখায়। স্পেশিয়াল স্ন্যাপশট এন্টিটি ও তার কম্পোনেন্ট ডেটার একটি সুসংগত ভিউ দেখায়। স্ন্যাপশট তৈরি হয়ে গেলে, স্ন্যাপশটের ডেটা অবশ্যই স্ন্যাপশটটি বৈধ থাকাকালীন অপরিবর্তিত থাকতে হবে।

অ্যাপ্লিকেশনটি যতগুলি ইচ্ছা স্ন্যাপশট তৈরি করতে পারে কিন্তু প্রতিটি নতুন স্ন্যাপশটের জন্য বরাদ্দ করা মেমরির কথা অবশ্যই মনে রাখতে হবে এবং স্ন্যাপশটগুলির আর প্রয়োজন না হলে সেগুলি অবশ্যই মুছে ফেলতে হবে।

ডিসকভারি স্ন্যাপশট তৈরি করুন

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

XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
    XrFutureEXT*                                future);

প্যারামিটারের বিবরণ

অ্যাপ্লিকেশনটি xrCreateSpatialDiscoverySnapshotAsyncEXT ব্যবহার করে ডিসকভারি স্ন্যাপশট তৈরি করার মাধ্যমে স্পেশিয়াল এন্টিটি ডিসকভার করতে পারে।

এই ফাংশনটি একটি অ্যাসিঙ্ক্রোনাস অপারেশন শুরু করে এবং একটি সংশ্লিষ্ট XrFutureEXT তৈরি করে, যা xrPollFutureEXT এবং সম্পর্কিত ফাংশনের সাথে ব্যবহার করা যায়। এই ফাংশনের রিটার্ন ভ্যালু শুধুমাত্র এটিই দেখায় যে অ্যাসিঙ্ক্রোনাস অপারেশন শিডিউল করার জন্য প্যারামিটারগুলি গ্রহণযোগ্য ছিল কিনা। সম্পূর্ণ করার সংশ্লিষ্ট ফাংশন হল xrCreateSpatialDiscoverySnapshotCompleteEXT , যা এই ফাংশনের ফিউচার READY অবস্থায় থাকলে ব্যবহার করা যায়, সম্পূর্ণ করার স্ট্রাকচার XrCreateSpatialDiscoverySnapshotCompletionEXT -এ সেই ফাংশনের মাধ্যমে আউটপুট পপুলেট করা হয়।

আগের অনুরোধ সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করেই অ্যাপ্লিকেশনটি একাধিক ডিসকভারি স্ন্যাপশট তৈরির অনুরোধ জমা দিতে পারে। রানটাইম যেকোনও অর্ডারে স্ন্যাপশট তৈরি করার প্রসেস সম্পূর্ণ করতে পারে। ডিভাইসের পাওয়ার, থার্মাল বা অন্যান্য নীতির কারণে সিস্টেম রিসোর্সের ব্যবহার কমাতে হলে, রানটাইম হয়তো অ্যাপ্লিকেশন থ্রটল করার জন্য ডিসকভারি স্ন্যাপশট তৈরি সম্পূর্ণ করতে দেরি করতে পারে।

এন্টিটি ও কম্পোনেন্টের তালিকা ফিল্টার করতে, অ্যাপ্লিকেশন XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes ব্যবহার করতে পারে, যার ডেটা রানটাইমকে স্ন্যাপশটে অবশ্যই অন্তর্ভুক্ত করতে হবে। অ্যাপ্লিকেশনটি যদি XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes -এ স্পেশিয়াল কম্পোনেন্টের প্রকারের একটি সঠিক তালিকা প্রদান করে, তাহলে রানটাইমকে অবশ্যই স্ন্যাপশটে শুধুমাত্র সেই স্পেশিয়াল এন্টিটিগুলি অন্তর্ভুক্ত করতে হবে যেগুলিতে XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes -এ প্রদত্ত কম্পোনেন্টগুলির মধ্যে অন্তত একটি রয়েছে। এছাড়াও, রানটাইমে অবশ্যই শুধুমাত্র স্ন্যাপশটে থাকা কম্পোনেন্টের ডেটা অন্তর্ভুক্ত করতে হবে।

spatialContext তৈরি করার সময় XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ পাস করা স্পেশাল ক্ষমতার জন্য XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes-এর মধ্যে থাকা কোনও XrSpatialComponentTypeEXT চালু না থাকলে, রানটাইম অবশ্যই XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT রিটার্ন করবে।

অ্যাপ্লিকেশনটি যদি XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes-এ স্পেশিয়াল কম্পোনেন্টের প্রকারের তালিকা প্রদান না করে, তাহলে রানটাইমে স্ন্যাপশটে সমস্ত স্পেশিয়াল এন্টিটি অবশ্যই অন্তর্ভুক্ত করতে হবে যেগুলিতে কম্পোনেন্টের সেট রয়েছে যা spatialContext-এর জন্য কনফিগার করা ক্ষমতার জন্য XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents-এ গণনা করা হয়েছে। রানটাইমে spatialContext-এর জন্য কনফিগার করা ক্ষমতার সব চালু থাকা কম্পোনেন্টের ডেটা অবশ্যই অন্তর্ভুক্ত করতে হবে।

future সম্পূর্ণ হওয়ার আগে XrEventDataReferenceSpaceChangePending সারিবদ্ধ করা হলে এবং XrEventDataReferenceSpaceChangePending :: poseValid মিথ্যা হলে, রানটাইম হয় এমন একটি XrSpatialSnapshotEXT তৈরি করতে পারে যাতে কোনও এন্টিটি নেই অথবা XrSpatialEntityTrackingStateEXT-এর এন্টিটি সেট করতে পারে যা XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace-এ XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time-এ XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT বা XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT-এ আর লোকেট করা যাবে না। XrEventDataReferenceSpaceChangePending-এর কারণে রানটাইম অবশ্যই XrCreateSpatialContextCompletionEXT :: futureResult-কে কোনও ত্রুটি কোডে সেট করবে না।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XR_EXT_spatial_entity এক্সটেনশন xrCreateSpatialDiscoverySnapshotAsyncEXT কল করার আগে অবশ্যই চালু করতে হবে
  • spatialContext অবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি সঠিক XrSpatialDiscoverySnapshotCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • future অবশ্যই XrFutureEXT ভ্যালুর পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialDiscoverySnapshotCreateInfoEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialDiscoverySnapshotCreateInfoEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialDiscoverySnapshotCreateInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • componentTypeCount হল একটি uint32_t যা componentTypes অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • componentTypes হল XrSpatialComponentTypeEXT-এর একটি অ্যারে।

XrSpatialDiscoverySnapshotCreateInfoEXT স্ট্রাকচারটি স্পেশাল এন্টিটি খোঁজার সময় একটি XrSpatialSnapshotEXT হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।

সঠিক ব্যবহার (অন্তর্নিহিত)

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

XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
    XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);

প্যারামিটারের বিবরণ

xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT-এর মাধ্যমে শুরু করা অ্যাসিঙ্ক্রোনাস অপারেশন সম্পূর্ণ করে। XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future রেডি অবস্থায় না থাকলে, রানটাইমকে XR_ERROR_FUTURE_PENDING_EXT রিটার্ন করতেই হবে। XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future আগে থেকেই সম্পূর্ণ বা বাতিল করা হয়ে থাকলে, রানটাইমকে XR_ERROR_FUTURE_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

XrCreateSpatialDiscoverySnapshotCompletionInfoEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrCreateSpatialDiscoverySnapshotCompletionInfoEXT {
    XrStructureType    type;
    const void*        next;
    XrSpace            baseSpace;
    XrTime             time;
    XrFutureEXT        future;
} XrCreateSpatialDiscoverySnapshotCompletionInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • baseSpace হল XrSpace যেখানে ডিসকভারি XrSpatialSnapshotEXT-এর সব লোকেশন থাকবে।
  • time হল XrTime যেখানে ডিসকভারি XrSpatialSnapshotEXT-এর সব লোকেশন থাকবে।
  • future হল xrCreateSpatialDiscoverySnapshotAsyncEXT থেকে পাওয়া XrFutureEXT

তৈরি করা স্ন্যাপশটে অন্তর্ভুক্ত বিভিন্ন কম্পোনেন্ট ডেটার লোকেশন baseSpace-এ দেখানো হবে, যা time-এ অবস্থিত।

সঠিক ব্যবহার (অন্তর্নিহিত)

XrCreateSpatialDiscoverySnapshotCompletionEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
    XrStructureType         type;
    void*                   next;
    XrResult                futureResult;
    XrSpatialSnapshotEXT    snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • futureResult হল স্পেশিয়াল ডিসকভারি স্ন্যাপশট তৈরি করার অপারেশনের XrResult।
  • snapshot হল একটি XrSpatialSnapshotEXT যা খুঁজে পাওয়া স্পেশিয়াল এন্টিটির কম্পোনেন্ট ডেটা কোয়েরি করার জন্য ব্যবহার করা যেতে পারে।

ভবিষ্যতের রিটার্ন কোড

futureResult ভ্যালু:

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

সঠিক ব্যবহার (অন্তর্নিহিত)

ডিসকভারি সাজেশন ইভেন্ট

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

typedef struct XrEventDataSpatialDiscoveryRecommendedEXT {
    XrStructureType        type;
    const void*            next;
    XrSpatialContextEXT    spatialContext;
} XrEventDataSpatialDiscoveryRecommendedEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • spatialContext হল XrSpatialContextEXT যার জন্য রানটাইম দ্বারা ডিসকভারি সাজেস্ট করা হচ্ছে।

অ্যাপ্লিকেশন xrPollEvent ব্যবহার করে এই ইভেন্ট ফিরিয়ে আনতে পারে। এই ইভেন্টের জন্য অপেক্ষা করে স্পেশিয়াল এন্টিটি খুঁজে পেতে, অ্যাপ্লিকেশনটি xrCreateSpatialDiscoverySnapshotAsyncEXT-এ অতিরিক্ত কল এড়াতে পারে। দুটি XrEventDataSpatialDiscoveryRecommendedEXT ইভেন্টের মধ্যে একই XrSpatialDiscoverySnapshotCreateInfoEXT সহ অ্যাপ্লিকেশন একাধিক ডিসকভারি স্ন্যাপশট তৈরি করলে, ফলাফল হিসেবে পাওয়া স্ন্যাপশটে একই এন্টিটি থাকতে পারে এবং তাই স্ন্যাপশট তৈরি ও ডেটা কোয়েরি করা বৃথা হবে।

নতুন ডিসকভারি স্ন্যাপশট তৈরি করার জন্য এই ইভেন্টের অপেক্ষা করলে, অ্যাপ্লিকেশনটি ডিসকভারি অনুরোধের মাধ্যমে সিস্টেমকে ওভারলোড করে না, যার জন্য রানটাইম হয়তো কোনও নতুন ডেটা ফেরত দেয় না এবং সিস্টেম রিসোর্স অতিরিক্ত ব্যবহার করার ঝুঁকি এড়াতে সাহায্য করে এবং ডিভাইসের পাওয়ার বা থার্মাল নীতির কারণে থ্রটল হয়ে যায়। এটি রানটাইমের মধ্যে সমতা তৈরি করতেও সাহায্য করে যা লাইভ ট্র্যাকিং সহ ফ্লাইতে স্পেশাল এন্টিটি আবিষ্কার করছে এবং রানটাইম যা পূর্বে রেকর্ড করা অবস্থা থেকে স্পেশাল এন্টিটি প্রদান করছে (যেখানে রানটাইম প্রতিটি XrSpatialContextEXT-এর জন্য শুধুমাত্র একবার আবিষ্কারের সাজেশন ইভেন্টকে সারিবদ্ধ করতে পারে)।

আগে থেকে থাকা স্পেশিয়াল এন্টিটির কম্পোনেন্ট ডেটায় করা পরিবর্তন বা অ্যাডজাস্টমেন্ট সম্পর্কে অ্যাপ্লিকেশনকে জানানোর জন্য রানটাইম অবশ্যই এই ইভেন্টকে সারিবদ্ধ করবে না। অ্যাপ্লিকেশনটি xrCreateSpatialUpdateSnapshotEXT ব্যবহার করতে পারে যাতে এটি আগ্রহী স্থানিক এন্টিটির জন্য কম্পোনেন্ট ডেটা আপডেটের ট্র্যাক রাখতে পারে।

রানটাইম হয়ত অ্যাপ্লিকেশনকে প্রথমে xrCreateSpatialDiscoverySnapshotAsyncEXT কল করার জন্য অপেক্ষা না করিয়েই একটি ডিসকভারি সাজেশন ইভেন্টকে সারিবদ্ধ করতে পারে। যেমন, রানটাইম হয়তো XrSpatialContextEXT-এর কনফিগারেশন, ব্যবহারকারীর আশেপাশের পরিবেশ সম্পর্কে নিজস্ব ধারণা (নতুন এন্টিটি খুঁজে পাওয়া বা পুরনো এন্টিটি হারিয়ে যাওয়া) অথবা সিস্টেম রিসোর্সের উপর অতিরিক্ত চাপ না দেওয়ার জন্য অ্যাপ্লিকেশনকে উপযুক্ত ডিসকভারি অনুরোধের ক্যাডেন্সের ইঙ্গিত দেওয়ার উপর ভিত্তি করে ডিসকভারি সাজেশন ইভেন্ট সারিবদ্ধ করার সিদ্ধান্ত নিতে পারে। রানটাইম হয়তো XrSpatialContextEXT-এর জন্য এই ইভেন্ট কখনও সারিবদ্ধ না করার সিদ্ধান্ত নিতে পারে, যদি সেই XrSpatialContextEXT-এর লাইফটাইম জুড়ে ব্যবহারকারীর পরিবেশে কোনও এন্টিটি খুঁজে পাওয়া না যায়।

অ্যাপ্লিকেশন xrCreateSpatialContextCompleteEXT ব্যবহার করে এটি তৈরি করা সম্পূর্ণ না করা পর্যন্ত রানটাইমকে অবশ্যই প্রদত্ত spatialContext-এর জন্য এই ইভেন্টটি সারিবদ্ধ করা যাবে না।

অ্যাপ্লিকেশন xrDestroySpatialContextEXT কল করার পরে, রানটাইমকে সেই স্পেশিয়াল কন্টেক্সটের জন্য আর কোনও ডিসকভারি সাজেশন ইভেন্ট কিউতে রাখা চলবে না এবং xrPollEvent থেকে সেই কন্টেক্সটের জন্য এই ধরনের কোনও ইভেন্ট রিটার্ন করা যাবে না।

সঠিক ব্যবহার (অন্তর্নিহিত)

কম্পোনেন্ট ডেটা কোয়েরি করুন

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

XrResult xrQuerySpatialComponentDataEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialComponentDataQueryConditionEXT* queryCondition,
    XrSpatialComponentDataQueryResultEXT*       queryResult);

প্যারামিটারের বিবরণ

অ্যাপ্লিকেশনটি xrQuerySpatialComponentDataEXT ব্যবহার করতে পারে যাতে স্ন্যাপশটে থাকা এন্টিটির কম্পোনেন্ট ডেটা কোয়েরি করা যায়। এর জন্য XrSpatialComponentDataQueryResultEXT :: next-এ একটি লিস্ট স্ট্রাকচার অ্যাটাচ করতে হবে যা XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ প্রতিটি XrSpatialComponentTypeEXT-এর সাথে সম্পর্কিত।

অ্যাপ্লিকেশনটি যদি XrSpatialComponentDataQueryResultEXT :: next-এ একটি তালিকা স্ট্রাকচার অ্যাটাচ করে যা XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ তালিকাভুক্ত কোনও উপাদানের সাথে সামঞ্জস্যপূর্ণ নয়, তাহলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

অ্যাপ্লিকেশনটি XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ তালিকাভুক্ত কম্পোনেন্টের শুধুমাত্র একটি সাবসেটের সাথে সম্পর্কিত তালিকা স্ট্রাকচার অ্যাটাচ করার জন্য বেছে নিতে পারে। অ্যাপ্লিকেশনটি চাইলে তালিকা স্ট্রাকচার সম্পূর্ণভাবে বাদ দিতে পারে, যদি এটি শুধুমাত্র queryCondition পূরণকারী স্পেশিয়াল এন্টিটির আইডি এবং ট্র্যাকিং স্টেট জানতে চায়। রানটাইম XrSpatialComponentDataQueryResultEXT :: next চেনে লিস্ট স্ট্রাকচারের অনুপস্থিতিকে ব্যর্থতা হিসেবে বিবেচনা করবে না।

XrEventDataReferenceSpaceChangePending কিউতে থাকলে এবং অ্যাপ্লিকেশন XrSpatialSnapshotEXT থেকে কম্পোনেন্ট ডেটা কোয়েরি করার সময় XrEventDataReferenceSpaceChangePending :: changeTime অতিবাহিত হলে, অ্যাপ্লিকেশন সেই অনুযায়ী পোজ অ্যাডজাস্ট করার জন্য ইভেন্ট ডেটা ব্যবহার করতে পারে।

রানটাইম অবশ্যই XrSpatialComponentDataQueryResultEXT :: entityIds পপুলেট করবে, শুধুমাত্র সেইসব এন্টিটির সাথে যেগুলির XrSpatialComponentDataQueryConditionEXT :: componentTypes -এ নির্দিষ্ট করা সব কম্পোনেন্ট আছে। XrSpatialComponentDataQueryConditionEXT :: componentTypeCount যদি ০ হয়, তাহলে রানটাইমকে queryResult-এ স্ন্যাপশটে থাকা সব এন্টিটি (এবং তাদের ট্র্যাকিং স্টেট) অবশ্যই পপুলেট করতে হবে। XrSpatialComponentDataQueryConditionEXT :: next-এ অতিরিক্ত কোয়েরি শর্ত যোগ করা হলে, রানটাইমকে অবশ্যই কম্পোনেন্ট টাইপের উপলভ্যতার সাথে "AND" হিসেবে সেগুলিকে বিবেচনা করতে হবে, অর্থাৎ রানটাইমকে অবশ্যই XrSpatialComponentDataQueryResultEXT ::entityIds-কে শুধুমাত্র সেইসব এন্টিটি দিয়ে পপুলেট করতে হবে যা প্রদত্ত সব শর্ত পূরণ করে। রানটাইমকে অবশ্যই XrSpatialComponentDataQueryResultEXT :: entityIds-এ এন্টিটির মতো একই ক্রমে তালিকা স্ট্রাকচারে কম্পোনেন্ট ডেটা পপুলেট করতে হবে, অর্থাৎ তালিকা স্ট্রাকচার অ্যারেতে প্রদত্ত ইন্ডেক্সে কম্পোনেন্ট ডেটা অবশ্যই একই ইন্ডেক্সে এন্টিটির সাথে সম্পর্কিত হতে হবে।

কোনও এন্টিটির ট্র্যাকিং স্টেট XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT না হলে, রানটাইম অবশ্যই XrSpatialComponentDataQueryResultEXT-এর সাথে অ্যাটাচ করা লিস্ট স্ট্রাকচারে থাকা অ্যারের মধ্যে সেই এন্টিটির সাথে সম্পর্কিত ইন্ডেক্সে ডেটা পরিবর্তন করবে না।

সঠিক ব্যবহার (অন্তর্নিহিত)

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_VALIDATION_FAILURE

উদাহরণস্বরূপ, অ্যাপ্লিকেশনটি একটি XrSpatialSnapshotEXT তৈরি করে যাতে ৫টি এন্টিটি থাকে, যেখানে -

  • এন্টিটি ১ ও ২-এর XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT ও XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT কম্পোনেন্ট আছে
  • এন্টিটি ৩ ও ৪-এ XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ও XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্ট আছে
  • এন্টিটি ৫-এ XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT এবং XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্ট আছে।

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

3

3

4

4

5

5

Bounded2D

Bounded2D

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

না

না

না

না

হ্যাঁ

হ্যাঁ

অভিভাবক

অভিভাবক

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

না

না

না

না

না

না

Mesh3D

Mesh3D

না

না

না

না

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

Bounded3D

Bounded3D

না

না

না

না

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

না

না টেক্সট SVG নয় - দেখানো যাবে না

ছবি ২০. উদাহরণ স্ন্যাপশট

কোয়েরি শর্তে তালিকাভুক্ত XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT সহ উপরের স্ন্যাপশটে xrQuerySpatialComponentDataEXT-এর ফলে এন্টিটি #১, #২ এবং #৫ অ্যাপ্লিকেশনে ফেরত পাঠানো হবে এবং অ্যাপ্লিকেশন bounded2D ডেটা পেতে XrSpatialComponentDataQueryResultEXT-এর পরবর্তী চেনের অংশ হিসেবে XrSpatialComponentBounded2DListEXT স্ট্রাকচারের অংশ হিসেবে XrSpatialBounded2DDataEXT-এর একটি অ্যারে অ্যাটাচ করতে পারবে।

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

1

1

2

2

৫

5

Bounded2D

Bounded2D

entityId #1-এর ডেটা

entit...-এর ডেটা

entityId #2-এর জন্য ডেটা

entit...-এর ডেটা

entityId #5-এর জন্য ডেটা

entit...-এর ডেটা

entityIds

entityIds

পরবর্তী

পরবর্তী

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Dat...

বাউন্ড

বাউন্ড

XrSpatialComponent
Bounded2DListEXT

XrSpatialComponent
Bou... টেক্সট SVG নয় - দেখানো যাবে না

ছবি ২১. কোয়েরি ফলাফলের উদাহরণ

কোয়েরি কন্ডিশনে তালিকাভুক্ত XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT ও XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্ট সহ উপরের স্ন্যাপশটে xrQuerySpatialComponentDataEXT-এর ফলে এন্টিটি #৩ ও #৪ অ্যাপ্লিকেশনে ফেরত পাঠানো হবে এবং কম্পোনেন্ট ডেটা পেতে, অ্যাপ্লিকেশন XrBoxf ও XrSpatialMeshDataEXT-এর অ্যারে যথাক্রমে XrSpatialComponentBounded3DListEXT ও XrSpatialComponentMesh3DListEXT স্ট্রাকচারের অংশ হিসেবে XrSpatialComponentDataQueryResultEXT-এর পরবর্তী চেনে অ্যাটাচ করতে পারবে।

XrSpatialEntityIdEXT

XrSpatialEntityIdEXT

3

3

4

4

Bounded3D

Bounded3D

entityId #3-এর জন্য ডেটা

entit...-এর ডেটা

entityId #4-এর জন্য ডেটা

entit...-এর ডেটা

Mesh3D

Mesh3D

entityId #3-এর জন্য ডেটা

entit...-এর ডেটা

entityId #4-এর জন্য ডেটা

entit...-এর ডেটা

entityIds

entityIds

পরবর্তী

পরবর্তী

XrSpatialComponent
DataQueryResultEXT

XrSpatialComponent
Da...

বাউন্ড

বাউন্ড

পরবর্তী

পরবর্তী

XrSpatialComponent
Bounded3DListEXT

XrSpatialComponent
Bo...

XrSpatialComponent
Mesh3DListEXT

XrSpatialComponent
Me...

মেশ

meshes টেক্সট SVG নয় - দেখানো যাবে না

ছবি ২২. কোয়েরি ফলাফলের উদাহরণ

XrSpatialComponentDataQueryConditionEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentDataQueryConditionEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
} XrSpatialComponentDataQueryConditionEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • componentTypeCount হল একটি uint32_t যা componentTypes অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • componentTypes হল XrSpatialComponentTypeEXT-এর একটি অ্যারে যার জন্য স্ন্যাপশট থেকে ডেটা পাওয়া যায়।

সঠিক ব্যবহার (অন্তর্নিহিত)

XrSpatialComponentDataQueryResultEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentDataQueryResultEXT {
    XrStructureType                     type;
    void*                               next;
    uint32_t                            entityIdCapacityInput;
    uint32_t                            entityIdCountOutput;
    XrSpatialEntityIdEXT*               entityIds;
    uint32_t                            entityStateCapacityInput;
    uint32_t                            entityStateCountOutput;
    XrSpatialEntityTrackingStateEXT*    entityStates;
} XrSpatialComponentDataQueryResultEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • entityIdCapacityInput হল entityIds অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • entityIdCountOutput হল entityIds-এ XrSpatialEntityIdEXT-এর সংখ্যা অথবা entityIdCapacityInput অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতা।
  • entityIds হল XrSpatialEntityIdEXT-এর অ্যারে। entityIdCapacityInput ০ হলে এটি NULL হতে পারে।
  • entityStateCapacityInput হল entityStates অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • entityStateCountOutput হল entityStates-এ XrSpatialEntityTrackingStateEXT-এর সংখ্যা অথবা entityStateCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্ষমতা। এটি অবশ্যই সবসময় entityIdCountOutput-এর মতো হতে হবে।
  • entityStates হল XrSpatialEntityTrackingStateEXT-এর একটি অ্যারে। entityStateCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় entityIds সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

কোনও অ্যাপ্লিকেশন xrCreateSpatialEntityFromIdEXT-এর সাথে entityIds ব্যবহার করতে পারে যাতে এটি নিয়মিত আপডেট পেতে আগ্রহী এমন এন্টিটির জন্য XrSpatialEntityEXT হ্যান্ডেল তৈরি করতে পারে। অ্যাপ্লিকেশনটি তখন xrCreateSpatialUpdateSnapshotEXT-এর সাথে এই XrSpatialEntityEXT হ্যান্ডেলগুলি ব্যবহার করে একটি আপডেট স্ন্যাপশট তৈরি করতে পারে যাতে প্রদত্ত এন্টিটির জন্য কম্পোনেন্টের রানটাইমের লেটেস্ট পরিচিত ডেটা থাকে।

সঠিক ব্যবহার (অন্তর্নিহিত)

typedef enum XrSpatialEntityTrackingStateEXT {
    XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT = 1,
    XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT = 2,
    XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT = 3,
    XR_SPATIAL_ENTITY_TRACKING_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialEntityTrackingStateEXT;

XrSpatialEntityTrackingStateEXT সম্ভাব্য স্পেশিয়াল এন্টিটি ট্র্যাকিং স্টেট গণনা করে:

enum-এর অর্থ হল:

Enum-এর বিবরণ

XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT

রানটাইম এই এন্টিটি ট্র্যাক করা বন্ধ করে দিয়েছে এবং এটি আর কখনও ট্র্যাক করা শুরু করবে না।

XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT

রানটাইম এই এন্টিটি ট্র্যাক করা পজ করেছে, তবে ভবিষ্যতে এটি ট্র্যাক করা আবার শুরু করতে পারে।

XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT

রানটাইম বর্তমানে এই এন্টিটি ট্র্যাক করছে এবং এর কম্পোনেন্ট ডেটা সঠিক।

ট্র্যাকিং

পজ করা হয়েছে

থেমে গেছে

ছবি ২৩. XrSpatialEntityTrackingStateEXT

  • রানটাইম স্পেশিয়াল এন্টিটির ট্র্যাকিং সাসপেন্ড করলে, কিন্তু ভবিষ্যতে এর ট্র্যাকিং আবার শুরু করার সম্ভাবনা থাকলে, রানটাইম স্পেশিয়াল এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT থেকে XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT-এ পরিবর্তন করতে পারে। রানটাইম কখন এটি করতে পারে তার কিছু উদাহরণের মধ্যে (তবে এর মধ্যেই সীমিত নয়) রয়েছে, অ্যাপ্লিকেশন ইনপুট ফোকাস হারিয়ে ফেললে; অথবা প্রদত্ত স্পেশিয়াল এন্টিটি ব্যবহারকারীর থেকে অনেক দূরে থাকলে, যাতে সঠিকভাবে ট্র্যাক করা যায়; অথবা অনেক বেশি এন্টিটি ট্র্যাক করা হলে এবং রানটাইম ট্র্যাকিংয়ের খরচ কমাতে চাইলে। XrSpatialEntityTrackingStateEXT অ্যাপ্লিকেশনকে প্রতিটি রানটাইমের বিভিন্ন ট্র্যাকিং নীতি থেকে নিজেকে আলাদা করতে সাহায্য করে।
  • রানটাইম হয়ত কোনও এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT থেকে XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT বা XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT-এ পরিবর্তন করতে পারে।
  • স্পেশিয়াল এন্টিটি হারিয়ে গেলে এবং এর ট্র্যাকিং কখনও ফিরিয়ে আনা বা আবার শুরু করা না গেলে, রানটাইমকে অবশ্যই স্পেশিয়াল এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT বা XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT থেকে XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT-এ পরিবর্তন করতে হবে। এই ধরনের ঘটনার একটি উদাহরণ হল, ডিভাইস ট্র্যাকিং হারিয়ে ফেললে, ট্র্যাকিং সেশন রিস্টার্ট করে কিন্তু তার পরিবেশে রিলোকালাইজ করতে পারে না এবং তাই এই ট্র্যাকিং সেশনের আবিষ্কৃত এন্টিটিগুলিকে নতুন এন্টিটি হিসেবে বিবেচনা করে।
  • কোনও এন্টিটির ট্র্যাকিং স্টেট XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT-এ সেট করা হলে, রানটাইম অবশ্যই অন্য কোনও স্টেটে এটি পরিবর্তন করবে না।
  • xrQuerySpatialComponentDataEXT ব্যবহার করে কোনও স্পেশিয়াল এন্টিটির কম্পোনেন্ট ডেটা কোয়েরি করার সময়, এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT হলে, রানটাইমকে XrSpatialComponentDataQueryResultEXT-এর পরবর্তী চেনে অ্যাপ্লিকেশন দ্বারা প্রদত্ত বাফারের কন্টেন্টে অবশ্যই বৈধ ডেটা সেট করতে হবে। এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT বা XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT হলে, রানটাইম অবশ্যই বাফারের কন্টেন্ট পরিবর্তন করবে না।

কম্পোনেন্ট ডেটার জন্য টু-কল ইডিয়ম

XrSpatialBufferEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialBufferEXT {
    XrSpatialBufferIdEXT      bufferId;
    XrSpatialBufferTypeEXT    bufferType;
} XrSpatialBufferEXT;

মেম্বারদের বিবরণ

  • বাফার ডেটার XrSpatialBufferIdEXT bufferId করে।
  • bufferType হল XrSpatialBufferTypeEXT যা bufferId-এ ডেটার ধরন নির্দেশ করে। বাফারের আসল ডেটা ফিরিয়ে আনতে কোন ফাংশন ব্যবহার করা হবে তা নির্ধারণ করতে অ্যাপ্লিকেশন bufferType ব্যবহার করতে পারে।

কিছু স্পেশিয়াল কম্পোনেন্টে পরিবর্তনশীল-সাইজের ডেটা থাকে এবং তাই তাদের ডেটা ফিরিয়ে আনার জন্য টু-কল ইডিয়ম ব্যবহার করতে হয়। এই ধরনের ক্ষেত্রে, স্পেশিয়াল কম্পোনেন্ট ডেটা স্ট্রাকচার, সেই কম্পোনেন্টের ডেটায় প্রয়োজনীয় প্রতিটি পরিবর্তনশীল সাইজের বাফারের জন্য একটি XrSpatialBufferEXT প্রদান করে।

একই bufferId-এর জন্য, রানটাইমকে অবশ্যই একটি কম্পোনেন্ট ডেটা কোয়েরি থেকে অন্যটিতে একই ডেটা প্রদান করতে হবে, এমনকি একটি স্ন্যাপশট থেকে অন্যটিতেও। কম্পোনেন্ট ডেটা কোয়েরি কলের মধ্যে আলাদা bufferId থাকলে, তা অ্যাপ্লিকেশনকে ইঙ্গিত দেয় যে সেই কম্পোনেন্টের ডেটা পরিবর্তিত হয়ে থাকতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialBufferEXT ব্যবহার করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • bufferType অবশ্যই একটি সঠিক XrSpatialBufferTypeEXT ভ্যালু হতে হবে

XR_DEFINE_ATOM(XrSpatialBufferIdEXT)

XrSpatialBufferIdEXT-এর মাধ্যমে স্পেশিয়াল কম্পোনেন্টের জন্য যেকোনও ধরনের পরিবর্তনশীল সাইজের ডেটা দেখানো হয়।

রানটাইমকে অবশ্যই XrSpatialBufferIdEXT এবং এর ডেটা মেমরিতে অন্তত XrSpatialSnapshotEXT-এর লাইফসাইকেলের জন্য রাখতে হবে যাতে এটি থাকে। অ্যাপ্লিকেশন পরে যে স্ন্যাপশট তৈরি করবে তার অংশ হিসেবে একই আইডি ফিরিয়ে দেওয়ার জন্য, রানটাইম XrSpatialSnapshotEXT-এর লাইফসাইকেলের চেয়ে বেশি সময় ধরে XrSpatialBufferIdEXT ও তার ডেটা মেমরিতে রাখতে পারে। একই XrSpatialBufferIdEXT-এর জন্য, রানটাইমকে অবশ্যই সবসময় উপযুক্ত xrGetSpatialBuffer* ফাংশনের মাধ্যমে একই ডেটা রিটার্ন করতে হবে।

typedef enum XrSpatialBufferTypeEXT {
    XR_SPATIAL_BUFFER_TYPE_UNKNOWN_EXT = 0,
    XR_SPATIAL_BUFFER_TYPE_STRING_EXT = 1,
    XR_SPATIAL_BUFFER_TYPE_UINT8_EXT = 2,
    XR_SPATIAL_BUFFER_TYPE_UINT16_EXT = 3,
    XR_SPATIAL_BUFFER_TYPE_UINT32_EXT = 4,
    XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT = 5,
    XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT = 6,
    XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT = 7,
    XR_SPATIAL_BUFFER_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialBufferTypeEXT;

XrSpatialBufferTypeEXT এনিউমারেশন XrSpatialBufferIdEXT দ্বারা উপস্থাপিত বাফারের বিভিন্ন ডেটার ধরন শনাক্ত করে।

Enumerant-এর বিবরণ

  • XR_SPATIAL_BUFFER_TYPE_STRING_EXT । স্ট্রিং বাফার ফিরিয়ে আনতে XrSpatialBufferIdEXT কে xrGetSpatialBufferStringEXT-এ পাস করা যেতে পারে।
  • XR_SPATIAL_BUFFER_TYPE_UINT8_EXT । uint8_t বাফার ফিরিয়ে আনতে XrSpatialBufferIdEXT xrGetSpatialBufferUint8EXT-এ পাস করা যেতে পারে।
  • XR_SPATIAL_BUFFER_TYPE_UINT16_EXT । uint16_t বাফার ফিরিয়ে আনতে XrSpatialBufferIdEXT কে xrGetSpatialBufferUint16EXT-এ পাস করা যেতে পারে।
  • XR_SPATIAL_BUFFER_TYPE_UINT32_EXT । uint32_t বাফার ফিরিয়ে আনতে XrSpatialBufferIdEXT কে xrGetSpatialBufferUint32EXT-এ পাস করা যেতে পারে।
  • XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT । float বাফার ফিরিয়ে আনতে XrSpatialBufferIdEXT কে xrGetSpatialBufferFloatEXT-এ পাস করা যেতে পারে।
  • XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT । XrSpatialBufferIdEXT কে xrGetSpatialBufferVector2fEXT-এ পাস করা যেতে পারে যাতে একটি XrVector2f বাফার ফিরিয়ে আনা যায়।
  • XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT । XrSpatialBufferIdEXT কে xrGetSpatialBufferVector3fEXT-এ পাস করা যেতে পারে যাতে XrVector3f বাফার ফিরিয়ে আনা যায়।

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

XrResult xrGetSpatialBufferStringEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    char*                                       buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল অক্ষরের সংখ্যা বা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল char-এর অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_STRING_EXT, xrGetSpatialBufferStringEXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_STRING_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে, যদি XrSpatialBufferGetInfoEXT :: bufferId হয়।

রানটাইম দ্বারা পূরণ করা buffer অবশ্যই একটি নাল-টার্মিনেটেড UTF-8 স্ট্রিং হতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferStringEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput চার ভ্যালুর অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferUint8EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint8_t*                                    buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল uint8_t-এর অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_UINT8_EXT, xrGetSpatialBufferUint8EXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT8_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে, যদি XrSpatialBufferGetInfoEXT :: bufferId হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferUint8EXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput uint8_t মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferUint16EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint16_t*                                   buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল uint16_t-এর অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_UINT16_EXT, xrGetSpatialBufferUint16EXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT16_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

XrSpatialBufferGetInfoEXT :: bufferId যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferUint16EXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput uint16_t মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferUint32EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint32_t*                                   buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল uint32_t-এর অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_UINT32_EXT, xrGetSpatialBufferUint32EXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_UINT32_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

XrSpatialBufferGetInfoEXT :: bufferId যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferUint32EXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput uint32_t মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferFloatEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    float*                                      buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল float-এর অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT, xrGetSpatialBufferFloatEXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে, যদি XrSpatialBufferGetInfoEXT :: bufferId হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferFloatEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput float মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferVector2fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector2f*                                 buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল XrVector2f-এর একটি অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে xrGetSpatialBufferVector2fEXT ব্যবহার করে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে, যদি XrSpatialBufferGetInfoEXT :: bufferId হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferVector2fEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput XrVector2f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

XrResult xrGetSpatialBufferVector3fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector3f*                                 buffer);

প্যারামিটারের বিবরণ

  • snapshot হল XrSpatialSnapshotEXT-এর হ্যান্ডেল।
  • info কোয়েরি করার জন্য বাফারে তথ্য ধরে রাখে।
  • bufferCapacityInput হল অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • bufferCountOutput হল buffer অ্যারেতে থাকা এলিমেন্টের সংখ্যা অথবা bufferCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্যাপাসিটি।
  • buffer হল XrVector3f-এর একটি অ্যারে। bufferCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় buffer সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি কোনও কম্পোনেন্ট দ্বারা প্রদত্ত XrSpatialBufferEXT-এর জন্য ডেটা পেতে পারে, যেখানে XrSpatialBufferEXT :: bufferType হল XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT, xrGetSpatialBufferVector3fEXT ব্যবহার করে।

XrSpatialBufferGetInfoEXT :: bufferId-এর জন্য XrSpatialBufferTypeEXT XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT না হলে রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।

যদি snapshot-এর অন্তর্গত না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT রিটার্ন করতেই হবে, যদি XrSpatialBufferGetInfoEXT :: bufferId হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrGetSpatialBufferVector3fEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
  • info অবশ্যই একটি সঠিক XrSpatialBufferGetInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • bufferCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • bufferCapacityInput যদি 0 না হয়, তাহলে buffer অবশ্যই bufferCapacityInput XrVector3f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

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

typedef struct XrSpatialBufferGetInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialBufferIdEXT    bufferId;
} XrSpatialBufferGetInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • bufferId একটি XrSpatialBufferIdEXT বাফারের জন্য যার ডেটা পুনরুদ্ধার করতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

#define XR_NULL_SPATIAL_BUFFER_ID_EXT 0

XR_NULL_SPATIAL_BUFFER_ID_EXT হল একটি সংরক্ষিত ভ্যালু যা ভুল XrSpatialBufferIdEXT দেখায়। এটি API ফাংশনে পাস করা এবং সেখান থেকে ফেরত পাওয়া যেতে পারে, তবে শুধুমাত্র নির্দিষ্টভাবে অনুমতি দেওয়া হলে।

আপডেট স্ন্যাপশট তৈরি করুন

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

XrResult xrCreateSpatialUpdateSnapshotEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialUpdateSnapshotCreateInfoEXT* createInfo,
    XrSpatialSnapshotEXT*                       snapshot);

প্যারামিটারের বিবরণ

অ্যাপ্লিকেশনটি xrCreateSpatialUpdateSnapshotEXT ব্যবহার করতে পারে যাতে স্ন্যাপশট তৈরি করা যায় এবং রানটাইম দ্বারা পরিচিত নির্দিষ্ট এন্টিটির জন্য লেটেস্ট কম্পোনেন্ট ডেটা পাওয়া যায়। অ্যাপ্লিকেশনগুলি স্ন্যাপশট তৈরি করার সময় XrSpatialEntityEXT হ্যান্ডেল এবং তাদের আগ্রহের কম্পোনেন্টের ধরন প্রদান করতে পারে।

অ্যাপ্লিকেশনটি XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes ব্যবহার করতে পারে যাতে কম্পোনেন্টের তালিকা ফিল্টার করা যায়, যার ডেটা স্ন্যাপশটে অন্তর্ভুক্ত করতেই হবে। অ্যাপ্লিকেশনটি যদি XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes-এ স্পেশিয়াল কম্পোনেন্টের প্রকারের একটি সঠিক তালিকা প্রদান করে, তাহলে রানটাইমে স্ন্যাপশটে অবশ্যই শুধুমাত্র সেই স্পেশিয়াল এন্টিটি অন্তর্ভুক্ত করতে হবে যেগুলিতে XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes-এ প্রদত্ত কম্পোনেন্টগুলির মধ্যে অন্তত একটি রয়েছে। এছাড়াও, রানটাইমে অবশ্যই স্ন্যাপশটে শুধুমাত্র সেইসব কম্পোনেন্টের ডেটা অন্তর্ভুক্ত করতে হবে।

spatialContext তৈরি করার সময় XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ পাস করা স্পেশিয়াল ক্ষমতার জন্য XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes-এর মধ্যে থাকা যেকোনও XrSpatialComponentTypeEXT চালু না থাকলে, রানটাইম অবশ্যই XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT রিটার্ন করবে।

অ্যাপ্লিকেশনটি XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes -এ স্পেশিয়াল কম্পোনেন্ট টাইপের তালিকা প্রদান না করলে, রানটাইমকে অবশ্যই স্ন্যাপশটে XrSpatialUpdateSnapshotCreateInfoEXT :: entities -এ তালিকাভুক্ত সমস্ত স্পেশিয়াল এন্টিটি অন্তর্ভুক্ত করতে হবে এবং spatialContext -এর জন্য কনফিগার করা ক্ষমতার সমস্ত চালু কম্পোনেন্টের ডেটা অবশ্যই অন্তর্ভুক্ত করতে হবে।

রানটাইমে অবশ্যই এমন স্পেশিয়াল এন্টিটি অন্তর্ভুক্ত করা যাবে না যা XrSpatialUpdateSnapshotCreateInfoEXT :: entities-এর snapshot-এ তালিকাভুক্ত নেই।

অ্যাপ্লিকেশনটি যতগুলি ইচ্ছা স্ন্যাপশট তৈরি করতে পারে কিন্তু প্রতিটি নতুন স্ন্যাপশটের জন্য বরাদ্দ করা মেমরির কথা অবশ্যই মনে রাখতে হবে এবং স্ন্যাপশটগুলির আর প্রয়োজন না হলে সেগুলি অবশ্যই মুছে ফেলতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrCreateSpatialUpdateSnapshotEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • spatialContext অবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি সঠিক XrSpatialUpdateSnapshotCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • snapshot অবশ্যই XrSpatialSnapshotEXT হ্যান্ডেলের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

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

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

typedef struct XrSpatialUpdateSnapshotCreateInfoEXT {
    XrStructureType                     type;
    const void*                         next;
    uint32_t                            entityCount;
    const XrSpatialEntityEXT*           entities;
    uint32_t                            componentTypeCount;
    const XrSpatialComponentTypeEXT*    componentTypes;
    XrSpace                             baseSpace;
    XrTime                              time;
} XrSpatialUpdateSnapshotCreateInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • entityCount হল একটি uint32_t যা entities অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • entities হল XrSpatialEntityEXT-এর একটি অ্যারে যার জন্য রানটাইমকে অবশ্যই স্ন্যাপশটে কম্পোনেন্ট ডেটা অন্তর্ভুক্ত করতে হবে।
  • componentTypeCount হল একটি uint32_t যা componentTypes অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • componentTypes হল XrSpatialComponentTypeEXT-এর একটি অ্যারে যার জন্য রানটাইমে স্ন্যাপশটে ডেটা অন্তর্ভুক্ত করতেই হবে।
  • baseSpace হল XrSpace যার সাপেক্ষে আপডেট XrSpatialSnapshotEXT-এর সব লোকেশন নির্ধারণ করা হবে।
  • time হল XrTime যেখানে আপডেট XrSpatialSnapshotEXT-এর সব লোকেশন থাকবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialUpdateSnapshotCreateInfoEXT ব্যবহার করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • type অবশ্যই XR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT হতে হবে
  • next অবশ্যই NULL বা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
  • entities অবশ্যই entityCountটি সঠিক XrSpatialEntityEXT হ্যান্ডেলের অ্যারের পয়েন্টার হতে হবে
  • componentTypeCount যদি 0 না হয়, তাহলে componentTypes অবশ্যই componentTypeCountটি সঠিক XrSpatialComponentTypeEXT মানের অ্যারের পয়েন্টার হতে হবে
  • baseSpace অবশ্যই একটি সঠিক XrSpace হ্যান্ডেল হতে হবে
  • entityCount প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে
  • baseSpace এবং entities-এর এলিমেন্ট, দুটিই একই XrSession থেকে তৈরি, বরাদ্দ বা পুনরুদ্ধার করা হতেই হবে

স্ন্যাপশট ধ্বংস করুন

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

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

প্যারামিটারের বিবরণ

অ্যাপ্লিকেশনটি XrSpatialSnapshotEXT হ্যান্ডেল এবং এর সাথে যুক্ত রিসোর্স ধ্বংস করতে xrDestroySpatialSnapshotEXT কল করতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrDestroySpatialSnapshotEXT কল করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • snapshot অবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে

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

  • snapshot এবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

সাধারণ কম্পোনেন্ট

বাউন্ডেড 2D

কম্পোনেন্ট ডেটা

XrSpatialBounded2DDataEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialBounded2DDataEXT {
    XrPosef        center;
    XrExtent2Df    extents;
} XrSpatialBounded2DDataEXT;

মেম্বারদের বিবরণ

  • center হল একটি XrPosef যা বাউন্ডেড 2D কম্পোনেন্টের জ্যামিতিক কেন্দ্রকে সংজ্ঞায়িত করে।
  • extents হল x-অক্ষ (extents.width), y-অক্ষ (extents.height) বরাবর বাউন্ডেড 2D কম্পোনেন্টের এক্সটেন্ট, যা center-এ কেন্দ্র করে থাকে।

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT-এর extents, প্লেনের কোঅর্ডিনেট সিস্টেমের x-y প্লেনে এন্টিটির সাইজকে বোঝায়। {০, ০, ০} পজিশন, {০, ০, ০, ১} রোটেশন (কোনও রোটেশন নেই) এবং {১, ১} এক্সটেন্ট সহ একটি প্লেন বলতে ১ মিটার x ১ মিটার প্লেনকে বোঝায় যা {০, ০, ০} পজিশনে কেন্দ্র করে থাকে এবং এর সামনের ফেসের নরমাল ভেক্টর কম্পোনেন্টের স্পেসে +Z ডিরেকশনের দিকে পয়েন্ট করে থাকে।

X X Y Y Z Z উচ্চতা উচ্চতা Y Y Z Z X X উল্লম্ব প্লেন উল্লম্ব প্লেন অনুভূমিক প্লেন অনুভূমিক প্লেন প্রস্থ প্রস্থ প্রস্থ প্রস্থ উচ্চতা উচ্চতা

ছবি ২৪. Bounded2D কম্পোনেন্ট কোঅর্ডিনেট সিস্টেম

মনে রাখবেন

OpenXR, +Z সহ X-Y প্লেনকে প্লেন নরমাল হিসেবে ব্যবহার করে কিন্তু অন্যান্য API, +Y সহ X-Z প্লেনকে প্লেন নরমাল হিসেবে ব্যবহার করতে পারে। X-Y প্লেনকে +X অক্ষের চারপাশে -π/2 রেডিয়ান ঘুরিয়ে X-Z প্লেনে কনভার্ট করা যেতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialBounded2DDataEXT ব্যবহার করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
ডেটা কোয়েরি করার জন্য কম্পোনেন্ট তালিকার স্ট্রাকচার

XrSpatialComponentBounded2DListEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentBounded2DListEXT {
    XrStructureType               type;
    void*                         next;
    uint32_t                      boundCount;
    XrSpatialBounded2DDataEXT*    bounds;
} XrSpatialComponentBounded2DListEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • boundCount হল একটি uint32_t যা bounds অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • bounds হল XrSpatialBounded2DDataEXT-এর একটি অ্যারে।

XrSpatialComponentBounded2DListEXT যদি XrSpatialComponentDataQueryResultEXT :: next-এর পরবর্তী চেনে থাকে, কিন্তু XrSpatialComponentDataQueryConditionEXT ::componentTypeCount শূন্য না হয় এবং XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT যদি XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে।

boundCount যদি XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput-এর থেকে কম হয়, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতেই হবে।

xrQuerySpatialComponentDataEXT :: snapshot যদি xrCreateSpatialDiscoverySnapshotCompleteEXT থেকে তৈরি করা হয়, তাহলে রানটাইমকে অবশ্যই XrSpatialBounded2DDataEXT :: center প্রদান করতে হবে, যা XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace এবং XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time -এ থাকবে।

xrQuerySpatialComponentDataEXT :: snapshot যদি xrCreateSpatialUpdateSnapshotEXT থেকে তৈরি করা হয়ে থাকে, তাহলে রানটাইমকে অবশ্যই XrSpatialBounded2DDataEXT :: center প্রদান করতে হবে, যা XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace এবং XrSpatialUpdateSnapshotCreateInfoEXT :: time-এ থাকবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum মান অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই।

বাউন্ডেড 3D

কম্পোনেন্ট ডেটা

XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT তার ডেটার জন্য XrBoxf ব্যবহার করে।

ডেটা কোয়েরি করার জন্য কম্পোনেন্ট তালিকার স্ট্রাকচার

XrSpatialComponentBounded3DListEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentBounded3DListEXT {
    XrStructureType    type;
    void*              next;
    uint32_t           boundCount;
    XrBoxf*            bounds;
} XrSpatialComponentBounded3DListEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • boundCount হল একটি uint32_t যা bounds অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • bounds হল XrBoxf-এর একটি অ্যারে।

XrSpatialComponentBounded3DListEXT যদি XrSpatialComponentDataQueryResultEXT :: next-এর পরবর্তী চেনে থাকে, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে :: কিন্তু XrSpatialComponentDataQueryConditionEXT ::componentTypeCount শূন্য নয় এবং XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ অন্তর্ভুক্ত নয়।

boundCount যদি XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput-এর থেকে কম হয়, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতেই হবে।

xrQuerySpatialComponentDataEXT :: snapshot যদি xrCreateSpatialDiscoverySnapshotCompleteEXT থেকে তৈরি করা হয়ে থাকে, তাহলে রানটাইমকে অবশ্যই XrBoxf :: center প্রদান করতে হবে, যা XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace-এর XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time-এ থাকবে।

xrQuerySpatialComponentDataEXT :: snapshot যদি xrCreateSpatialUpdateSnapshotEXT থেকে তৈরি করা হয়ে থাকে, তাহলে রানটাইমকে অবশ্যই XrBoxf :: center প্রদান করতে হবে, যা XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace-এর XrSpatialUpdateSnapshotCreateInfoEXT :: time-এ থাকবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialComponentBounded3DListEXT ব্যবহার করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • type অবশ্যই XR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT হতে হবে
  • next অবশ্যই NULL বা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
  • bounds অবশ্যই boundCount XrBoxf স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে
  • boundCount প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে
কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই।

অভিভাবক

কম্পোনেন্ট ডেটা

XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT তার ডেটার জন্য XrSpatialEntityIdEXT ব্যবহার করে।

ডেটা কোয়েরি করার জন্য কম্পোনেন্ট তালিকার স্ট্রাকচার

XrSpatialComponentParentListEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentParentListEXT {
    XrStructureType          type;
    void*                    next;
    uint32_t                 parentCount;
    XrSpatialEntityIdEXT*    parents;
} XrSpatialComponentParentListEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • parentCount হল একটি uint32_t যা parents অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • parents হল XrSpatialEntityIdEXT-এর অ্যারে।

XrSpatialComponentParentListEXT যদি XrSpatialComponentDataQueryResultEXT :: next-এর পরবর্তী চেনে থাকে, কিন্তু XrSpatialComponentDataQueryConditionEXT ::componentTypeCount শূন্য না হয় এবং XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT যদি XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে।

parentCount যদি XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput-এর থেকে কম হয়, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XR_EXT_spatial_entity এক্সটেনশন XrSpatialComponentParentListEXT ব্যবহার করার আগে অবশ্যই চালু করতে হবে
  • type অবশ্যই XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT হতে হবে
  • next অবশ্যই NULL বা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
  • parents অবশ্যই parentCount XrSpatialEntityIdEXT মানের অ্যারের পয়েন্টার হতে হবে
  • parentCount প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে
কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই।

মেশ 3D

কম্পোনেন্ট ডেটা

XrSpatialMeshDataEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialMeshDataEXT {
    XrPosef               origin;
    XrSpatialBufferEXT    vertexBuffer;
    XrSpatialBufferEXT    indexBuffer;
} XrSpatialMeshDataEXT;

মেম্বারদের বিবরণ

  • origin হল একটি XrPosef যা মেশের উৎস নির্ধারণ করে। মেশের সব ভার্টেক্স অবশ্যই এই অরিজিনের সাপেক্ষে হতে হবে।
  • vertexBuffer হল একটি XrSpatialBufferEXT যা একটি বাফারের জন্য আইডি প্রদান করে যা এই কম্পোনেন্টটি যে এন্টিটিতে আছে তার ভার্টেক্স বাফারকে উপস্থাপন করে। শীর্ষবিন্দুর অবস্থান অবশ্যই origin-এর সাপেক্ষে হতে হবে।
  • indexBuffer হল একটি XrSpatialBufferEXT যা একটি বাফারের আইডি প্রদান করে যা ত্রিভুজ সূচকের একটি অ্যারে উপস্থাপন করে, vertexBuffer-এ মেশ ভার্টিসেসের সূচকগুলি নির্দিষ্ট করে। ত্রিভুজের ইন্ডেক্স অবশ্যই ঘড়ির কাঁটার বিপরীত ক্রমে ফেরত দিতে হবে এবং তিনটি ইন্ডেক্স একটি ত্রিভুজকে বোঝায়।

XrSpatialMeshDataEXT ব্যবহার করা কম্পোনেন্টের ধরনকে vertexBuffer এবং indexBuffer-এর XrSpatialBufferTypeEXT অবশ্যই নির্দিষ্ট করতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialMeshDataEXT ব্যবহার করার আগে XR_EXT_spatial_entity এক্সটেনশন অবশ্যই চালু করতে হবে
  • vertexBuffer অবশ্যই একটি সঠিক XrSpatialBufferEXT স্ট্রাকচার হতে হবে
  • indexBuffer অবশ্যই একটি সঠিক XrSpatialBufferEXT স্ট্রাকচার হতে হবে
ডেটা কোয়েরি করার জন্য কম্পোনেন্ট তালিকার স্ট্রাকচার

XrSpatialComponentMesh3DListEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialComponentMesh3DListEXT {
    XrStructureType          type;
    void*                    next;
    uint32_t                 meshCount;
    XrSpatialMeshDataEXT*    meshes;
} XrSpatialComponentMesh3DListEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • meshCount হল একটি uint32_t যা meshes অ্যারেতে এলিমেন্টের সংখ্যা বর্ণনা করে।
  • meshes হল XrSpatialMeshDataEXT-এর একটি অ্যারে।

অ্যাপ্লিকেশনটি XrSpatialSnapshotEXT-এ স্পেশিয়াল এন্টিটির মেশ 3D কম্পোনেন্ট কোয়েরি করতে XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT যোগ করে এবং XrSpatialComponentDataQueryResultEXT-এর পরবর্তী পয়েন্টার চেনে XrSpatialComponentMesh3DListEXT যোগ করে পারবে।

রানটাইম অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে, যদি XrSpatialComponentMesh3DListEXT XrSpatialComponentDataQueryResultEXT :: next-এর পরবর্তী চেনে থাকে কিন্তু XrSpatialComponentDataQueryConditionEXT ::componentTypeCount শূন্য না হয় এবং XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ অন্তর্ভুক্ত না থাকে।

meshCount যদি XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput-এর থেকে কম হয়, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতেই হবে।

meshes অ্যারেতে রানটাইম দ্বারা পূরণ করা XrSpatialMeshDataEXT-এর জন্য, XrSpatialMeshDataEXT :: vertexBuffer-এর জন্য XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT হতেই হবে এবং XrSpatialMeshDataEXT :: indexBuffer-এর জন্য XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_UINT32_EXT হতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

কনফিগারেশন

কিছু ক্ষমতার জন্য XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT গণনা করা হলে, অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents-এ enum অন্তর্ভুক্ত করে এটি চালু করতে পারে, যা এই কম্পোনেন্টকে সাপোর্ট করে এমন ক্ষমতার XrSpatialCapabilityConfigurationBaseHeaderEXT থেকে প্রাপ্ত স্ট্রাকচারের তালিকা।

XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই।

ট্র্যাকিং স্টেট ফিল্টার

XrSpatialFilterTrackingStateEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialFilterTrackingStateEXT {
    XrStructureType                    type;
    const void*                        next;
    XrSpatialEntityTrackingStateEXT    trackingState;
} XrSpatialFilterTrackingStateEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • trackingState হল XrSpatialEntityTrackingStateEXT যার জন্য অ্যাপ্লিকেশন ফিল্টার প্রয়োগ করতে চায়।

অ্যাপ্লিকেশনটি XrSpatialDiscoverySnapshotCreateInfoEXT-এর পরবর্তী চেনে XrSpatialFilterTrackingStateEXT ব্যবহার করতে পারে যাতে শুধুমাত্র সেইসব এন্টিটির জন্য ডিসকভারি স্কোপ করা যায় যাদের ট্র্যাকিং স্টেট হল trackingState।

অ্যাপ্লিকেশনটি XrSpatialComponentDataQueryConditionEXT-এর পরবর্তী চেনে XrSpatialFilterTrackingStateEXT ব্যবহার করতে পারে যাতে স্ন্যাপশট থেকে কম্পোনেন্ট ডেটা কোয়েরি শুধুমাত্র সেইসব এন্টিটির জন্য স্কোপ করা যায় যাদের ট্র্যাকিং স্টেট হল trackingState।

সঠিক ব্যবহার (অন্তর্নিহিত)

উদাহরণ কোড

অ্যাপ্লিকেশন ব্যবহার

অ্যাপ্লিকেশন সাধারণত নিম্নলিখিত প্যাটার্নে স্পেশিয়াল এন্টিটি এক্সটেনশন ব্যবহার করে:

  • একটি অ্যাপ্লিকেশন প্রথমে xrEnumerateSpatialCapabilitiesEXT ব্যবহার করে সিস্টেমের স্পেশিয়াল ক্ষমতা গণনা করে। তারপর এটি XrSpatialCapabilityEXT-এর রিটার্ন করা অ্যারে পরীক্ষা করে এবং যথাক্রমে xrEnumerateSpatialCapabilityComponentTypesEXT ও xrEnumerateSpatialCapabilityFeaturesEXT ব্যবহার করে সেইসব ক্ষমতার প্রতিটির জন্য কাজ করে এমন কম্পোনেন্ট ও ফিচার গণনা করে। এটি অ্যাপ্লিকেশনকে সেইসব কম্পোনেন্টের সম্পূর্ণ ছবি দেয় যা এটি চালু করতে পারে এবং কনফিগারেশন ক্ষমতা গ্রহণ করে।
  • অ্যাপ্লিকেশনটি তখন নির্দিষ্ট স্পেশিয়াল ক্যাপাবিলিটি কনফিগারেশন সহ এক বা একাধিক XrSpatialContextEXT হ্যান্ডেল তৈরি করে, যেখানে কনফিগারেশনগুলি স্পেশিয়াল কন্টেক্সটে একটি নির্দিষ্ট ক্যাপাবিলিটি চালু ও কনফিগার করে এবং সেই ক্যাপাবিলিটিগুলির জন্য কম্পোনেন্ট চালু ও কনফিগার করে।
  • প্রতিটি XrSpatialContextEXT-এর জন্য, অ্যাপ্লিকেশনটি xrCreateSpatialDiscoverySnapshotAsyncEXT ব্যবহার করে স্পেশাল এন্টিটি আবিষ্কার করার আগে সেই XrSpatialContextEXT-এর জন্য XrEventDataSpatialDiscoveryRecommendedEXT ইভেন্ট পাওয়ার জন্য অপেক্ষা করে। এই অ্যাসিঙ্ক অপারেশন সম্পূর্ণ হয়ে গেলে, অ্যাপ্লিকেশনটি একটি XrSpatialSnapshotEXT হ্যান্ডেল পায়।
  • অ্যাপ্লিকেশনটি xrQuerySpatialComponentDataEXT ব্যবহার করে এই XrSpatialSnapshotEXT-এ অন্তর্ভুক্ত এন্টিটি এবং কম্পোনেন্ট ডেটার জন্য কোয়েরি করে। এন্টিটির স্ট্যাটাস XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT হলে, অ্যাপ্লিকেশনটি XrSpatialComponentDataQueryResultEXT-এর পরবর্তী চেনের সাথে অ্যাটাচ করা স্ট্রাকচার থেকে কোয়েরি করা এন্টিটির লেটেস্ট কম্পোনেন্ট ডেটা পড়ে।
  • অ্যাপ্লিকেশন যদি নির্দিষ্ট কিছু এন্টিটি শনাক্ত করে যেগুলি আকর্ষণীয় এবং সেগুলির ব্যাপারে সময়ের সাথে সাথে আপডেট পেতে চায়, তাহলে এটি xrCreateSpatialEntityFromIdEXT ব্যবহার করে সেইসব এন্টিটির জন্য XrSpatialEntityEXT হ্যান্ডেল তৈরি করে। অ্যাপ্লিকেশনটি xrCreateSpatialUpdateSnapshotEXT ব্যবহার করে এই ধরনের ইন্টারেস্টিং এন্টিটির জন্য আপডেট পায় এবং সেই এন্টিটির জন্য লেটেস্ট কম্পোনেন্ট ডেটা পেতে নতুন তৈরি করা XrSpatialSnapshotEXT-এ একই xrQuerySpatialComponentDataEXT ফাংশন ব্যবহার করে।

স্পেশিয়াল এন্টিটি ও কোয়েরি কম্পোনেন্ট ডেটা খুঁজে দেখুন

"Foo" কোয়েরি কম্পোনেন্ট ডেটার জন্য কীভাবে স্পেশাল এন্টিটি খুঁজে বের করতে হয় তা নিম্নলিখিত উদাহরণ কোড থেকে জানতে পারবেন।

/****************************/
/* Capability definition    */
/****************************/
// Foo capability has the following components -
// - XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
#define XR_SPATIAL_CAPABILITY_FOO ((XrSpatialCapabilityEXT)1000740000U)

#define XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT ((XrStructureType)1000740000U)
// Derives from XrSpatialCapabilityConfigurationBaseHeaderEXT
typedef struct XrSpatialCapabilityConfigurationFooEXT {
  XrStructureType                     type;
  const void* XR_MAY_ALIAS            next;
  XrSpatialCapabilityEXT              capability;
  uint32_t                            enabledComponentCount;
  const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationFooEXT;

/******************************/
/* End capability definition  */
/******************************/

auto waitUntilReady = [](XrFutureEXT future) {
  XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
  XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
  pollInfo.future = future;
  do {
    // sleep(1);
    CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
  } while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};

// Create a spatial spatial context
XrSpatialContextEXT spatialContext{};
{
  const std::array<XrSpatialComponentTypeEXT, 1> enabledComponents = {
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
  };

  // Configure Foo capability for the spatial context
  XrSpatialCapabilityConfigurationFooEXT fooConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT};
  fooConfig.capability = XR_SPATIAL_CAPABILITY_FOO;
  fooConfig.enabledComponentCount = enabledComponents.size();
  fooConfig.enabledComponents = enabledComponents.data();

  std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
  capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&fooConfig));

  XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
  spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
  spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
  XrFutureEXT createContextFuture;
  CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));

  waitUntilReady(createContextFuture);

  XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
  if (completion.futureResult != XR_SUCCESS) {
    return;
  }

  spatialContext = completion.spatialContext;
}

auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
  // We want to look for entities that have the following components.
  std::array<XrSpatialComponentTypeEXT, 1> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT};

  XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
  snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
  snapshotCreateInfo.componentTypes = snapshotComponents.data();
  XrFutureEXT future = XR_NULL_FUTURE_EXT;
  CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &future));

  waitUntilReady(future);

  XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
  completionInfo.baseSpace = localSpace;
  completionInfo.time = time;
  completionInfo.future = future;

  XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
  if (completion.futureResult == XR_SUCCESS) {
    // Query for the bounded2d component data
    XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT;
    XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
    queryCond.componentTypes = &componentToQuery;

    XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
    queryResult.entityIdCapacityInput = 0;
    queryResult.entityIds = nullptr;
    queryResult.entityStateCapacityInput = 0;
    queryResult.entityStates = nullptr;
    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
    std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
    queryResult.entityIdCapacityInput = entityIds.size();
    queryResult.entityIds = entityIds.data();
    queryResult.entityStateCapacityInput = entityStates.size();
    queryResult.entityStates = entityStates.data();

    std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
    XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
    boundsList.boundCount = bounded2d.size();
    boundsList.bounds = bounded2d.data();
    queryResult.next = &boundsList;

    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
      if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
        // 2D extents for entity entityIds[i] is bounded2d[i].extents.
      }
    }

    CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
  }
};

while (1) {
  // ...
  // For every frame in frame loop
  // ...

  XrFrameState frameState;  // previously returned from xrWaitFrame
  const XrTime time = frameState.predictedDisplayTime;

  // Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
  XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
  XrResult result = xrPollEvent(instance, &event);
  if (result == XR_SUCCESS) {
      switch (event.type) {
          case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
              const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata =
                  *reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
              // Discover spatial entities for the context that we received the "discovery
              // recommended" event for.
              discoverSpatialEntities(eventdata.spatialContext, time);
              break;
          }
      }
  }

  // ...
  // Finish frame loop
  // ...
}

CHK_XR(xrDestroySpatialContextEXT(spatialContext));

কোয়েরি বাফার ডেটা

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

/****************************/
/* Component definition     */
/****************************/
// Foo component that provides an XrVector3f buffer
#define XR_SPATIAL_COMPONENT_TYPE_FOO_EXT ((XrSpatialComponentTypeEXT)1000740000U)

#define XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT ((XrStructureType)1000740000U)

// XrSpatialComponentFooListEXT extends XrSpatialComponentDataQueryResultEXT
typedef struct XrSpatialComponentFooListEXT {
    XrStructureType                   type;
    void* XR_MAY_ALIAS                next;
    uint32_t                          fooCount;
    XrSpatialBufferEXT*               foo;
} XrSpatialComponentFooListEXT;

/******************************/
/* End Component definition  */
/******************************/

// Query for the foo component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_FOO_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = 1;
queryCond.componentTypes = &componentToQuery;

XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));

std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();

std::vector<XrSpatialBufferEXT> fooBuffers(queryResult.entityIdCountOutput);
XrSpatialComponentFooListEXT fooList{XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT};
fooList.fooCount = fooBuffers.size();
fooList.foo = fooBuffers.data();
queryResult.next = &fooList;

CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));

for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
  // foo component data for entity entityIds[i]
  if (fooBuffers[i].bufferType == XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT) {
    XrSpatialBufferGetInfoEXT getInfo{XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT};
    getInfo.bufferId = fooBuffers[i].bufferId;
    uint32_t bufferCountOutput;
    CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, 0, &bufferCountOutput, nullptr));
    std::vector<XrVector3f> vertexBuffer(bufferCountOutput);
    CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, bufferCountOutput, &bufferCountOutput, vertexBuffer.data()));

    // XrVertex3f buffer for entity entityIds[i] is now available in vertexBuffer vector.
  }
}

এক্সটেনশন সংক্রান্ত নির্দেশিকা

  • কোনও এক্সটেনশন যদি নতুন XrSpatialComponentTypeEXT সংজ্ঞায়িত করে, যা স্পেশিয়াল এন্টিটি সম্পর্কে অতিরিক্ত ডেটা প্রদান করে,

    • এক্সটেনশনটিকে সেই কম্পোনেন্টের জন্য একটি তালিকা স্ট্রাকচারও অবশ্যই সংজ্ঞায়িত করতে হবে যা অ্যাপ্লিকেশনটিকে রানটাইমে একটি অ্যারে পাস করার অনুমতি দেয় যাতে প্রতিটি স্পেশিয়াল এন্টিটির ডেটা পূরণ করা যায় যা xrQuerySpatialComponentDataEXT :: queryCondition পূরণ করে। এই ধরনের তালিকার স্ট্রাকচারের কিছু উদাহরণ হল XrSpatialComponentParentListEXT এবং XrSpatialComponentBounded2DListEXT। কম্পোনেন্ট ডেটার সাইজ পরিবর্তনশীল হলে এবং এটি কোয়েরি করার জন্য অ্যাপ্লিকেশনকে টু-কল ইডিয়ম ব্যবহার করতে হলে, কম্পোনেন্ট ডেটাকে অবশ্যই লিস্ট স্ট্রাকচারে প্রতিটি পরিবর্তনশীল সাইজের ডেটার জন্য একটি XrSpatialBufferEXT প্রদান করতে হবে এবং এটি অবশ্যই প্রতিটি বাফারের জন্য XrSpatialBufferTypeEXT নির্দিষ্ট করতে হবে। এরপর অ্যাপ্লিকেশন কম্পোনেন্ট ডেটার জন্য টু-কল ইডিয়ম-এ সংজ্ঞায়িত ফাংশন ব্যবহার করে বাফার ডেটা কোয়েরি করতে পারবে। এই ধরনের স্ট্রাকচারের একটি উদাহরণ হল XrSpatialMeshDataEXT যা XrSpatialComponentMesh3DListEXT-এ অন্তর্ভুক্ত।
    • এক্সটেনশনটি এমন স্ট্রাকচারও প্রদান করতে পারে যা অ্যাপ্লিকেশনটি XrSpatialComponentDataQueryConditionEXT :: next-এর সাথে চেইন করতে পারে যাতে এই কম্পোনেন্টের ডেটা সম্পর্কিত কোয়েরির জন্য অতিরিক্ত ফিল্টার প্রদান করা যায়।
  • এক্সটেনশন এমন স্ট্রাকচার নির্ধারণ করতে পারে যা ডিসকভারির জন্য অতিরিক্ত ফিল্টার প্রদান করতে XrSpatialDiscoverySnapshotCreateInfoEXT এক্সটেন্ড করে। স্ন্যাপশট তৈরি করার জন্য ফিল্টারগুলি স্পেশাল কনটেক্সটের কনফিগারেশনকে প্রভাবিত করবে না, তবে স্পেশাল কনটেক্সটের বর্তমান কনফিগারেশন (এবং সেইজন্য অন্তর্নিহিত পরিষেবার বর্তমান কনফিগারেশন) দ্বারা ট্র্যাক করা স্ন্যাপশটে কোন এন্টিটি এবং ডেটা অন্তর্ভুক্ত করতে হবে তা রানটাইমে ইঙ্গিত দিতে ব্যবহার করা হবে।

  • কোনও এক্সটেনশন যদি নতুন XrSpatialCapabilityEXT সংজ্ঞায়িত করে,

    • এছাড়াও, এটিতে XrSpatialComponentTypeEXT-এর তালিকা উল্লেখ করা উচিত, যা রানটাইমকে সেই ক্ষমতার জন্য এন্টিটিতে অবশ্যই প্রদান করতে হবে।
    • এটি অবশ্যই XrSpatialCapabilityConfigurationBaseHeaderEXT থেকে প্রাপ্ত স্ট্রাকচার প্রদান করবে যা সেই ক্ষমতার কনফিগারেশনের অনুমতি দেবে।
  • কোনও এক্সটেনশন যদি নতুন XrSpatialCapabilityFeatureEXT সংজ্ঞায়িত করে, তাহলে সেটিকে অবশ্যই একটি সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচার সংজ্ঞায়িত করতে হবে যা XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী পয়েন্টারের সাথে চেইন করা যেতে পারে, যা অ্যাপ্লিকেশনটি XrSpatialContextEXT তৈরি করার সময় ফিচারটি চালু করার জন্য ব্যবহার করতে পারে।

  • নতুন XrSpatialCapabilityEXT সংজ্ঞায়িত করে এমন এক্সটেনশনকে স্পেসিফিকেশনের জন্য এই টেমপ্লেট অনুসরণ করতে হবে -

    • এক নজরে
    • রানটাইম সংক্রান্ত সহায়তা
    • কনফিগারেশন
    • গ্যারান্টিযুক্ত কম্পোনেন্ট
    • কোডের উদাহরণ
  • নতুন XrSpatialComponentTypeEXT সংজ্ঞায়িত করে এমন এক্সটেনশনকে স্পেসিফিকেশনের জন্য এই টেমপ্লেট অনুসরণ করতে হবে -

    • কম্পোনেন্ট ডেটা
    • ডেটা কোয়েরি করার জন্য কম্পোনেন্ট তালিকার স্ট্রাকচার
    • কনফিগারেশন
  • অ্যাপ্লিকেশনকে XrSpatialBufferIdEXT প্রদান করে এমন API লেখার সময়, বাফারের ডেটা টাইপ কী তা অ্যাপ্লিকেশনকে জানানোর জন্য এটির সাথে XrSpatialBufferTypeEXT থাকতেই হবে এবং বাফারের আসল কন্টেন্ট ফিরিয়ে আনতে অ্যাপ্লিকেশন উপযুক্ত xrGetSpatialBuffer* ফাংশন ব্যবহার করতে পারবে।

সিম্যান্টিক লেবেল ডিজাইন ও এক্সটেনশন সংক্রান্ত নির্দেশিকা

এই এক্সটেনশন কোনও এন্টিটির সিম্যান্টিক লেবেল সংক্রান্ত তথ্য জানানোর জন্য কোনও কম্পোনেন্ট নির্ধারণ না করলেও, এটি এমন কম্পোনেন্ট নির্ধারণ করে এমন যেকোনও এক্সটেনশনের জন্য ডিজাইন সংক্রান্ত নিয়ম ও নির্দেশিকা প্রদান করে। নিম্নলিখিত টেক্সটে, " উচিত " এবং " অবশ্যই " এই ধরনের কার্যকারিতার লেখকদের সীমাবদ্ধ করে, রানটাইম ইমপ্লিমেন্টেশন বা API ব্যবহার করে এমন অ্যাপ্লিকেশনকে সীমাবদ্ধ করার পরিবর্তে।

  • কোনও এক্সটেনশন যদি কোনও XrSpatialCapabilityEXT-এর জন্য সিম্যান্টিক লেবেল সংজ্ঞায়িত করে, তাহলে এটি একটি নতুন XrSpatialComponentTypeEXT সংজ্ঞায়িত করার পাশাপাশি লেবেলের সেট সহ একটি নতুন গণনা (একটি "সিম্যান্টিক লেবেল সেট") সংজ্ঞায়িত করে তা করা উচিত যাতে সেই কম্পোনেন্টের জন্য ডেটা হতে পারে।
  • একটি সিম্যান্টিক লেবেল সেটকে উপস্থাপন করে এমন একটি এনিউমারেশনে অবশ্যই একটি মান থাকতে হবে যা নির্দেশ করে যে এন্টিটিটি এই সেটের কোনও লেবেলে শ্রেণীবদ্ধ করা হয়নি। এই enumerant-এর নামে অবশ্যই 'UNCATEGORIZED' অন্তর্ভুক্ত থাকতে হবে, যেমন XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT . এই মান অ্যাপ্লিকেশনকে দেখায় যে রানটাইম এই এন্টিটিকে শনাক্ত করে, তবে অন্যান্য সিম্যান্টিক লেবেল সেট আছে যেখানে এই এন্টিটিকে ক্যাটেগরাইজ করা হয়েছে।
  • xrEnumerateSpatialCapabilityComponentTypesEXT-এ এই নতুনভাবে সংজ্ঞায়িত XrSpatialComponentTypeEXT-এর এনিউমারেশন থেকে বোঝা যায় যে রানটাইম সেই কম্পোনেন্টের ধরন অনুযায়ী সিম্যান্টিক লেবেল সেট (এবং তাই সেটে সংজ্ঞায়িত লেবেল) সাপোর্ট করে।
  • অ্যাপ্লিকেশনগুলি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents-এ সংশ্লিষ্ট XrSpatialComponentTypeEXT অন্তর্ভুক্ত করে এই সিম্যান্টিক লেবেল সেটের অন্তর্গত লেবেল সহ এন্টিটিগুলি আবিষ্কার করার ইচ্ছা প্রকাশ করে। এটি সেই ক্ষমতার জন্য কনফিগারেশন স্ট্রাক্টের অ্যারে যার জন্য কম্পোনেন্টের ধরন গণনা করা হয়।
  • এটি সম্ভব যে একটি স্পেশিয়াল এন্টিটিতে একাধিক কম্পোনেন্ট আছে, যার প্রতিটি তার নিজস্ব সিম্যান্টিক লেবেল সেট থেকে একটি লেবেল প্রদান করে। কিছু কাল্পনিক সিম্যান্টিক লেবেল সেট - XrSpatialObjectSemanticLabel সহ নিম্নলিখিত উদাহরণটি বিবেচনা করুন, যার চেয়ার, সোফা, টেবিল ইত্যাদির মতো ভ্যালু থাকতে পারে, XrSpatialSofaBrand , যার IKEA, Wayfair ইত্যাদির মতো ভ্যালু থাকতে পারে এবং XrSpatialIkeaSofa , যার সোফার নির্দিষ্ট IKEA মডেলের নাম থাকতে পারে। এই পরিস্থিতিতে, একই সোফা এন্টিটিতে ৩টি কম্পোনেন্ট (৩টি সিম্যান্টিক লেবেল সেট থেকে লেবেল) আছে, যার প্রতিটি এন্টিটি সম্পর্কে আলাদা গ্রানুলারিটি তথ্য দেয়।
  • কোনও এক্সটেনশন যদি নতুন XrSpatialComponentTypeEXT সংজ্ঞায়িত করে, যা UNCATEGORIZED লেবেল ছাড়াও একাধিক লেবেল সহ নতুন সিম্যান্টিক লেবেল সেট প্রদান করে, তাহলে এক্সটেনশনটির XrSpatialCapabilityFeatureEXT সংজ্ঞায়িত করার কথা বিবেচনা করা উচিত, যা অ্যাপ্লিকেশনগুলিকে সেই কম্পোনেন্ট টাইপের সাথে সম্পর্কিত সিম্যান্টিক লেবেল সেটে সংজ্ঞায়িত লেবেলের শুধুমাত্র একটি সাবসেট অ্যাক্টিভেট করার অনুমতি দেয়। এই সাবসেট, যা ক্যাপাবিলিটি কনফিগারেশনের পরবর্তী চেনে প্রদান করা হয়, রানটাইমের জন্য ইঙ্গিত হিসেবে কাজ করে যাতে তাদের ট্র্যাকিং পাইপলাইন অপ্টিমাইজ করা যায় এবং শুধুমাত্র প্রদান করা সাবসেট ট্র্যাক করা যায়। এই ধরনের ফিচার স্ট্রাক্টের উদাহরণ নিচে দেওয়া হল।
  • এক্সটেনশন অবশ্যই আগে থেকে থাকা সিম্যান্টিক লেবেল সেট এনুমারেশনে লেবেল যোগ করবে না। পরিবর্তে, তাদের অবশ্যই একটি নতুন এনিউমারেশন সংজ্ঞায়িত করতে হবে যাতে একই শব্দার্থবিদ্যা সহ সমতুল্য এনিউমারেন্ট এবং নতুন যোগ করা এনিউমারেন্ট ছাড়াও অন্য সেট থেকে সমান মান থাকে। নতুনভাবে সংজ্ঞায়িত সিম্যান্টিক লেবেল সেটের স্পেসিফিকেশন অবশ্যই পুরনো লেবেল সেট এবং নতুন লেবেল সেটের মধ্যে ম্যাপিং স্থাপন করবে। নিচে উদাহরণ দেখুন।
সিম্যান্টিক লেবেল সাবসেটের জন্য স্পেশিয়াল ফিচার সংজ্ঞার উদাহরণ
// New example semantic label set.
typedef enum XrSpatialExampleSemanticLabelEXT {
  // ... label values
} XrSpatialExampleSemanticLabelEXT;

/*
typedef enum XrSpatialCapabilityFeatureEXT {
  // .. existing values

  // new spatial feature value
  XR_SPATIAL_CAPABILITY_FEATURE_EXAMPLE_SEMANTIC_LABEL_SUBSET_EXT

  // .. existing values
} XrSpatialCapabilityFeatureEXT;
*/

// New spatial feaure configuration structure
typedef struct XrSpatialFeatureExampleSemanticLabelSubsetEXT {
    XrStructureType                             type;
    const void* XR_MAY_ALIAS                    next;
    uint32_t                                    semanticLabelCount;
    const XrSpatialExampleSemanticLabelEXT*     semanticLabels;
} XrSpatialFeatureExampleSemanticLabelSubsetEXT;
উদাহরণ স্পেশিয়াল সিম্যান্টিক লেবেল এক্সটেনশন
typedef enum XrSpatialExamplePlaneSemanticLabelExtensionEXT {
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_UNCATEGORIZED_EXT = 1,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT = 2,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT = 3,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT = 4,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT = 5,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT = 6,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT = 7,
    XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialExamplePlaneSemanticLabelExtensionEXT;

উপরের উদাহরণটি বিবেচনা করুন যেখানে একটি এক্সটেনশন দরজা এবং জানালা দেখানোর জন্য মান সহ বিদ্যমান XrSpatialPlaneSemanticLabelEXT প্রসারিত করার জন্য একটি গণনা XrSpatialExamplePlaneSemanticLabelExtensionEXT সংজ্ঞায়িত করে। নতুন এনিউমারেশনের স্পেসিফিকেশনে নিম্নলিখিত ফর্মের জন্য টেক্সট অবশ্যই অন্তর্ভুক্ত করতে হবে -

For all non-UNCATEGORIZED label enumerants in elink:XrSpatialPlaneSemanticLabelEXT,
the runtime must: return that enumerant if and only if it returns the corresponding
label enumerant from elink:XrSpatialExamplePlaneSemanticLabelExtensionEXT with the same value
i.e.
the ename:XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT value for that entity must:
correspond with the ename:XR_SPATIAL_COMPONENT_TYPE_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_EXT values
according to the following table -

[width="100%",options="header"]
|====
| XrSpatialExamplePlaneSemanticLabelExtensionEXT                | XrSpatialPlaneSemanticLabelEXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT   | XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT    | XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT   | XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT    | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT  | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
|====

নতুন ম্যাক্রো

নতুন বেস টাইপ

  • XrSpatialBufferIdEXT
  • XrSpatialEntityIdEXT

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

নতুন কমান্ড

নতুন স্ট্রাকচার

নতুন Enum

নতুন Enum কনস্ট্যান্ট

  • XR_EXT_SPATIAL_ENTITY_EXTENSION_NAME
  • XR_EXT_spatial_entity_SPEC_VERSION
  • XrObjectType এক্সটেন্ড করা হচ্ছে :

    • XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXT
    • XR_OBJECT_TYPE_SPATIAL_ENTITY_EXT
    • XR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
  • XrResult এক্সটেন্ড করা হচ্ছে :

    • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
    • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • XrStructureType এক্সটেন্ড করা হচ্ছে :

    • XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT
    • XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT
    • XR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT
    • XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXT
    • XR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT

ইস্যু

  • একটি এন্টিটি কি সবসময় শুধুমাত্র একটি ক্ষমতা থেকেই উদ্ভূত হয়?

    • সমাধান করা হয়েছে
    • উত্তর: না। এটি সম্পূর্ণভাবে রানটাইমের নিজস্ব ট্র্যাকিং ক্ষমতা এবং এটি কীভাবে শনাক্ত করা এন্টিটি উপস্থাপন করতে চায় তার উপর নির্ভর করে। ন্যূনতম প্রত্যাশা সেট করার জন্য প্রদত্ত ক্ষমতার গ্যারান্টিযুক্ত উপাদানগুলি ছাড়া স্পেকটি স্থানিক এন্টিটির কোনও নির্দিষ্ট উপস্থাপনা নির্ধারণ করে না। রানটাইম আলাদা আলাদা ক্ষমতার মাধ্যমে শনাক্ত করা এন্টিটি মার্জ করতে পারতে পারে এবং এটি শনাক্ত করতে সাহায্য করা সব ক্ষমতার গ্যারেন্টিযুক্ত কম্পোনেন্ট সহ একটি এন্টিটি হিসেবে সেগুলিকে দেখাতে পারে। এর একটি উদাহরণ হতে পারে যে টেবিলগুলি প্লেন ট্র্যাকিং ক্ষমতা এবং অবজেক্ট ট্র্যাকিং ক্ষমতা উভয় দ্বারাই শনাক্ত করা যেতে পারে, প্লেন ট্র্যাকিং এন্টিটিতে XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT কম্পোনেন্ট প্রদান করে এবং অবজেক্ট ট্র্যাকিং XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT প্রদান করে। কোনও নির্দিষ্ট রানটাইম হয়তো টেবিলটিকে ২টি আলাদা এন্টিটি হিসেবে প্রদান করতে পারে, যার প্রতিটিতে নিজস্ব গ্যারেন্টিযুক্ত কম্পোনেন্টের সেট থাকে, আবার কোনও নির্দিষ্ট রানটাইম হয়তো টেবিলটিকে উপস্থাপন করার জন্য মাত্র ১টি এন্টিটি প্রদান করতে পারে এবং একই এন্টিটিতে XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT এবং XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT উভয়ই থাকতে পারে। এখানে মনে রাখা গুরুত্বপূর্ণ যে, কোনও নির্দিষ্ট স্পেশিয়াল এন্টিটিতে যেকোনও নির্দিষ্ট কম্পোনেন্টের ধরন-এর সর্বাধিক একটিই কম্পোনেন্ট থাকতে পারে। তাই, আলাদা আলাদা ক্ষমতার মাধ্যমে তৈরি করা কম্পোনেন্ট ডেটা যদি কোনও নির্দিষ্ট এন্টিটির জন্য পরস্পরবিরোধী হয়, তাহলে রানটাইমকে অবশ্যই সেগুলিকে ২টি আলাদা এন্টিটি হিসেবে দেখাতে হবে।

ভার্সনের ইতিহাস

  • রিভিশন ১, ১২-০৪-২০২৪ (নিহভ জৈন, Google)

    • প্রাথমিক এক্সটেনশনের বিবরণ