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অবশ্যইcapabilityCapacityInputXrSpatialCapabilityEXT মানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_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_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_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সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialCapabilityComponentTypesEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
componentTypeCapacityInputযদি0না হয়, তাহলেcomponentTypesঅবশ্যইcomponentTypeCapacityInputXrSpatialComponentTypeEXT ভ্যালুর অ্যারের পয়েন্টার হতে হবে
স্পেশিয়াল ক্যাপাবিলিটি ফিচার
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অবশ্যইcapabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT ভ্যালুর অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_VALIDATION_FAILUREXR_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 হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialContextCreateInfoEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTহতে হবে -
nextঅবশ্যইNULLহতে হবে অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে। আরও দেখুন: XrSpatialContextPersistenceConfigEXT -
capabilityConfigsঅবশ্যইcapabilityConfigCountটি সঠিক XrSpatialCapabilityConfigurationBaseHeaderEXT -ভিত্তিক স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে। আরও দেখুন: XrSpatialCapabilityConfigurationAnchorEXT , XrSpatialCapabilityConfigurationAnnotationTrackingANDROID , XrSpatialCapabilityConfigurationAprilTagEXT , XrSpatialCapabilityConfigurationArucoMarkerEXT , XrSpatialCapabilityConfigurationDepthRaycastANDROID , XrSpatialCapabilityConfigurationImageTrackingEXT , XrSpatialCapabilityConfigurationMeshTrackingEXT , XrSpatialCapabilityConfigurationMicroQrCodeEXT , XrSpatialCapabilityConfigurationObjectTrackingANDROID , XrSpatialCapabilityConfigurationObjectTrackingEXT , XrSpatialCapabilityConfigurationPlaneTrackingEXT , XrSpatialCapabilityConfigurationQrCodeEXT , XrSpatialCapabilityConfigurationRoomBoundaryTrackingANDROIDSYS , XrSpatialCapabilityConfigurationRoomTrackingANDROIDSYS , XrSpatialCapabilityConfigurationStreetscapeGeometryANDROIDX2 -
capabilityConfigCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
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 রিটার্ন করতেই হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialCapabilityConfigurationBaseHeaderEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন চালু করতেই হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
capabilityঅবশ্যই একটি সঠিক XrSpatialCapabilityEXT ভ্যালু হতে হবে -
enabledComponentsঅবশ্যইenabledComponentCountটি সঠিক XrSpatialComponentTypeEXT মানের অ্যারের পয়েন্টার হতে হবে -
enabledComponentCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
xrCreateSpatialContextCompleteEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateSpatialContextCompleteEXT(
XrSession session,
XrFutureEXT future,
XrCreateSpatialContextCompletionEXT* completion);
প্যারামিটারের বিবরণ
sessionহল XrSession যা আগে xrCreateSpatialContextAsyncEXT ::session-এ পাস করা হয়েছে।futureহল xrCreateSpatialContextAsyncEXT থেকে পাওয়াXrFutureEXT।completionহল XrCreateSpatialContextCompletionEXT-এর একটি পয়েন্টার।
xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT-এর মাধ্যমে শুরু করা অ্যাসিঙ্ক্রোনাস অপারেশন সম্পূর্ণ করে। future রেডি অবস্থায় না থাকলে রানটাইমকে XR_ERROR_FUTURE_PENDING_EXT রিটার্ন করতেই হবে। future আগে থেকেই সম্পূর্ণ বা বাতিল করা হয়ে থাকলে, রানটাইমকে XR_ERROR_FUTURE_INVALID_EXT রিটার্ন করতেই হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrCreateSpatialContextCompleteEXT কল করার আগে
XR_EXT_spatial_entityএক্সটেনশন চালু করতেই হবে -
sessionঅবশ্যই একটি সঠিক XrSession হ্যান্ডেল হতে হবে -
completionঅবশ্যই XrCreateSpatialContextCompletionEXT স্ট্রাকচারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
futureResult যদি একটি সাকসেস কোড হয়, তাহলে spatialContext অবশ্যই সঠিক হতে হবে। spatialContext বৈধ হলে, এটি শুধুমাত্র xrCreateSpatialContextAsyncEXT :: session-এর লাইফসাইকেলের মধ্যে অথবা অ্যাপ্লিকেশন xrDestroySpatialContextEXT-এর মাধ্যমে spatialContext নষ্ট না করা পর্যন্ত বৈধ থাকে, যেটি আগে হয়।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrCreateSpatialContextCompletionEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
futureResultঅবশ্যই একটি সঠিক XrResult মান হতে হবে -
spatialContextযদি XR_NULL_HANDLE না হয়, তাহলেspatialContext-কে অবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে
স্পেশিয়াল কন্টেক্সট ধ্বংস করুন
xrDestroySpatialContextEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroySpatialContextEXT(
XrSpatialContextEXT spatialContext);
প্যারামিটারের বিবরণ
spatialContextহল একটি XrSpatialContextEXT যা আগে xrCreateSpatialContextAsyncEXT দ্বারা তৈরি করা হয়েছে।
স্পেশিয়াল এন্টিটি খোঁজা এবং আপডেট করার কাজ শেষ হলে, spatialContext হ্যান্ডেল এবং অন্তর্নিহিত রিসোর্স রিলিজ করার জন্য অ্যাপ্লিকেশনটি xrDestroySpatialContextEXT ফাংশন কল করতে পারে। spatialContext-এর মতো একই স্পেশিয়াল ক্ষমতা সহ তৈরি করা অন্য কোনও বৈধ XrSpatialContextEXT না থাকলে, এই কলটি সিস্টেম রিসোর্স সেভ করার জন্য সেইসব ক্ষমতার জন্য প্রয়োজনীয় ট্র্যাকিং পরিষেবা বন্ধ করতে রানটাইমের জন্য সাজেশন হিসেবে কাজ করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrDestroySpatialContextEXT কল করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
spatialContextঅবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
spatialContextএবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_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);
প্যারামিটারের বিবরণ
spatialContextহল একটি XrSpatialContextEXT যা আগে xrCreateSpatialContextAsyncEXT ব্যবহার করে তৈরি করা হয়েছে।createInfoহল XrSpatialEntityFromIdCreateInfoEXT স্ট্রাকচারের একটি পয়েন্টার।spatialEntityহল রিটার্ন করা XrSpatialEntityEXT হ্যান্ডেল।
অ্যাপ্লিকেশনটি xrCreateSpatialEntityFromIdEXT ব্যবহার করতে পারে, যাতে XrSpatialEntityEXT হ্যান্ডেল তৈরি করা যায়। এটি ব্যবহারকারীর পরিবেশে থাকা কোনও এন্টিটির রেফারেন্স।
XrSpatialEntityFromIdCreateInfoEXT :: entityId যদি spatialContext-এর জন্য সঠিক আইডি না হয়, তাহলে রানটাইমকে XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT রিটার্ন করতেই হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
-
XR_EXT_spatial_entityএক্সটেনশন xrCreateSpatialEntityFromIdEXT কল করার আগে অবশ্যই চালু করতে হবে -
spatialContextঅবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে -
createInfoঅবশ্যই একটি সঠিক XrSpatialEntityFromIdCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে -
spatialEntityঅবশ্যই XrSpatialEntityEXT হ্যান্ডেলের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialEntityFromIdCreateInfoEXT স্ট্রাকচারটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialEntityFromIdCreateInfoEXT {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT entityId;
} XrSpatialEntityFromIdCreateInfoEXT;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।entityIdহল সেই এন্টিটিরXrSpatialEntityIdEXTযার জন্য অ্যাপ্লিকেশনটি একটি হ্যান্ডেল তৈরি করতে চায়।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialEntityFromIdCreateInfoEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
স্পেশিয়াল এন্টিটি হ্যান্ডেল ধ্বংস করুন
xrDestroySpatialEntityEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroySpatialEntityEXT(
XrSpatialEntityEXT spatialEntity);
প্যারামিটারের বিবরণ
spatialEntityহল XrSpatialEntityEXT-এর একটি হ্যান্ডেল যা আগে xrCreateSpatialEntityFromIdEXT-এর মতো ফাংশন দ্বারা তৈরি করা হয়েছে।
এই হ্যান্ডেল দ্বারা রেফারেন্স করা এন্টিটিতে আর আগ্রহ না থাকলে, spatialEntity হ্যান্ডেল রিলিজ করার জন্য অ্যাপ্লিকেশন xrDestroySpatialEntityEXT ব্যবহার করতে পারে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrDestroySpatialEntityEXT কল করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
spatialEntityঅবশ্যই একটি সঠিক XrSpatialEntityEXT হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
spatialEntityএবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
স্পেশিয়াল স্ন্যাপশট
XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)
অ্যাপ্লিকেশনটি স্পেশিয়াল এন্টিটি আবিষ্কার করার উদ্দেশ্যে বা পরিচিত স্পেশিয়াল এন্টিটি সম্পর্কে তথ্য আপডেট করার জন্য স্পেশিয়াল স্ন্যাপশট তৈরি করতে পারে। XrSpatialSnapshotEXT হ্যান্ডেলটি খুঁজে পাওয়া বা আপডেট করা স্পেশিয়াল এন্টিটির অপরিবর্তনীয় ডেটা এবং অ্যাপ্লিকেশন দ্বারা বেছে নেওয়া তাদের কম্পোনেন্টের সাবসেটকে দেখায়। স্পেশিয়াল স্ন্যাপশট এন্টিটি ও তার কম্পোনেন্ট ডেটার একটি সুসংগত ভিউ দেখায়। স্ন্যাপশট তৈরি হয়ে গেলে, স্ন্যাপশটের ডেটা অবশ্যই স্ন্যাপশটটি বৈধ থাকাকালীন অপরিবর্তিত থাকতে হবে।
অ্যাপ্লিকেশনটি যতগুলি ইচ্ছা স্ন্যাপশট তৈরি করতে পারে কিন্তু প্রতিটি নতুন স্ন্যাপশটের জন্য বরাদ্দ করা মেমরির কথা অবশ্যই মনে রাখতে হবে এবং স্ন্যাপশটগুলির আর প্রয়োজন না হলে সেগুলি অবশ্যই মুছে ফেলতে হবে।
ডিসকভারি স্ন্যাপশট তৈরি করুন
xrCreateSpatialDiscoverySnapshotAsyncEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
XrFutureEXT* future);
প্যারামিটারের বিবরণ
spatialContextহল একটি XrSpatialContextEXT যা আগে xrCreateSpatialContextAsyncEXT ব্যবহার করে তৈরি করা হয়েছে।createInfoহল XrSpatialDiscoverySnapshotCreateInfoEXT-এর একটি পয়েন্টার।futureহলXrFutureEXT-এর একটি পয়েন্টার।
অ্যাপ্লিকেশনটি 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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_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 হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialDiscoverySnapshotCreateInfoEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTহতে হবে -
nextঅবশ্যইNULLহতে হবে অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে। আরও দেখুন: XrSpatialBoundsBoxfANDROID , XrSpatialBoundsFrustumfANDROID , XrSpatialBoundsSpherefANDROID , XrSpatialDiscoveryPersistenceContextFilterANDROIDX1 , XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialDiscoveryRoomBoundaryFilterANDROIDSYS , XrSpatialDiscoveryUniqueEntitiesFilterANDROID , XrSpatialFilterTrackingStateEXT , XrSpatialRaycastInfoANDROID -
componentTypeCountযদি0না হয়, তাহলেcomponentTypesঅবশ্যইcomponentTypeCountটি সঠিক XrSpatialComponentTypeEXT মানের অ্যারের পয়েন্টার হতে হবে
xrCreateSpatialDiscoverySnapshotCompleteEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
XrSpatialContextEXT spatialContext,
const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);
প্যারামিটারের বিবরণ
spatialContextহল XrSpatialContextEXT যা আগে xrCreateSpatialDiscoverySnapshotAsyncEXT ::spatialContext-এ পাস করা হয়েছে।createSnapshotCompletionInfoহল XrCreateSpatialDiscoverySnapshotCompletionInfoEXT-এর একটি পয়েন্টার যা ডিসকভারি স্ন্যাপশট তৈরির অনুরোধ সম্পূর্ণ হওয়ার ব্যাপারে তথ্য প্রদান করে।completionহল XrCreateSpatialDiscoverySnapshotCompletionEXT-এর একটি পয়েন্টার।
xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT-এর মাধ্যমে শুরু করা অ্যাসিঙ্ক্রোনাস অপারেশন সম্পূর্ণ করে। XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future রেডি অবস্থায় না থাকলে, রানটাইমকে XR_ERROR_FUTURE_PENDING_EXT রিটার্ন করতেই হবে। XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future আগে থেকেই সম্পূর্ণ বা বাতিল করা হয়ে থাকলে, রানটাইমকে XR_ERROR_FUTURE_INVALID_EXT রিটার্ন করতেই হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrCreateSpatialDiscoverySnapshotCompleteEXT কল করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
spatialContextঅবশ্যই একটি সঠিক XrSpatialContextEXT হ্যান্ডেল হতে হবে -
createSnapshotCompletionInfoঅবশ্যই একটি সঠিক XrCreateSpatialDiscoverySnapshotCompletionInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে -
completionঅবশ্যই XrCreateSpatialDiscoverySnapshotCompletionEXT স্ট্রাকচারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_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-এ অবস্থিত।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
baseSpaceঅবশ্যই একটি সঠিক XrSpace হ্যান্ডেল হতে হবে
XrCreateSpatialDiscoverySnapshotCompletionEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialSnapshotEXT snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।futureResultহল স্পেশিয়াল ডিসকভারি স্ন্যাপশট তৈরি করার অপারেশনের XrResult।snapshotহল একটি XrSpatialSnapshotEXT যা খুঁজে পাওয়া স্পেশিয়াল এন্টিটির কম্পোনেন্ট ডেটা কোয়েরি করার জন্য ব্যবহার করা যেতে পারে।
ভবিষ্যতের রিটার্ন কোড
futureResult ভ্যালু:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrCreateSpatialDiscoverySnapshotCompletionEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
futureResultঅবশ্যই একটি সঠিক XrResult মান হতে হবে -
snapshotযদি XR_NULL_HANDLE না হয়, তাহলেsnapshot-কে XrSpatialSnapshotEXT হ্যান্ডেল হতেই হবে
ডিসকভারি সাজেশন ইভেন্ট
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 থেকে সেই কন্টেক্সটের জন্য এই ধরনের কোনও ইভেন্ট রিটার্ন করা যাবে না।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrEventDataSpatialDiscoveryRecommendedEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
কম্পোনেন্ট ডেটা কোয়েরি করুন
xrQuerySpatialComponentDataEXT ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrQuerySpatialComponentDataEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialComponentDataQueryConditionEXT* queryCondition,
XrSpatialComponentDataQueryResultEXT* queryResult);
প্যারামিটারের বিবরণ
snapshotহল একটি XrSpatialSnapshotEXT যা আগে xrCreateSpatialDiscoverySnapshotCompleteEXT বা xrCreateSpatialUpdateSnapshotEXT দ্বারা প্রদান করা হয়েছে।queryConditionহল XrSpatialComponentDataQueryConditionEXT স্ট্রাকচারের একটি পয়েন্টার।queryResultহল XrSpatialComponentDataQueryResultEXT স্ট্রাকচারের একটি পয়েন্টার।
অ্যাপ্লিকেশনটি 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_EXT_spatial_entityএক্সটেনশন xrQuerySpatialComponentDataEXT কল করার আগে অবশ্যই চালু করতে হবে -
snapshotঅবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে -
queryConditionঅবশ্যই একটি সঠিক XrSpatialComponentDataQueryConditionEXT স্ট্রাকচারের পয়েন্টার হতে হবে -
queryResultঅবশ্যই XrSpatialComponentDataQueryResultEXT স্ট্রাকচারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_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-এর একটি অ্যারে যার জন্য স্ন্যাপশট থেকে ডেটা পাওয়া যায়।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentDataQueryConditionEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTহতে হবে -
nextঅবশ্যইNULLহতে হবে অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে। আরও দেখুন: XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialFilterArchetypeEXT , XrSpatialFilterTrackingStateEXT -
componentTypeCountযদি0না হয়, তাহলেcomponentTypesঅবশ্যইcomponentTypeCountটি সঠিক 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 হ্যান্ডেলগুলি ব্যবহার করে একটি আপডেট স্ন্যাপশট তৈরি করতে পারে যাতে প্রদত্ত এন্টিটির জন্য কম্পোনেন্টের রানটাইমের লেটেস্ট পরিচিত ডেটা থাকে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentDataQueryResultEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন চালু করতেই হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTহতে হবে -
nextঅবশ্যইNULLহতে হবে অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে। আরও দেখুন: XrSpatialComponentAnchorListEXT , XrSpatialComponentAnnotationQuadListANDROID , XrSpatialComponentBounded2DListEXT , XrSpatialComponentBounded3DListEXT , XrSpatialComponentConfidenceListANDROIDSYS , XrSpatialComponentImage2DListEXT , XrSpatialComponentKeyboardSemanticLabelListEXT , XrSpatialComponentMarkerListEXT , XrSpatialComponentMaterialTypeListANDROIDSYS , XrSpatialComponentMesh2DListEXT , XrSpatialComponentMesh3DListEXT , XrSpatialComponentMesh3DNormalsListEXT , XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT , XrSpatialComponentMesh3DVertexSemanticLabelsListEXT , XrSpatialComponentMouseSemanticLabelListEXT , XrSpatialComponentObjectSemanticLabelListANDROID , XrSpatialComponentObjectSemanticLabelListEXT , XrSpatialComponentOccupancyGridListANDROIDX1 , XrSpatialComponentParentListEXT , XrSpatialComponentPersistenceListEXT , XrSpatialComponentPersistenceScopesListANDROIDX1 , XrSpatialComponentPlaneAlignmentListEXT , XrSpatialComponentPlaneSemanticLabelListEXT , XrSpatialComponentPolygon2DListEXT , XrSpatialComponentRaycastResultListANDROID , XrSpatialComponentRoomEmptinessListANDROIDSYS , XrSpatialComponentRoomListANDROIDSYS , XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 , XrSpatialComponentSubsumedByListANDROID -
entityIdCapacityInputযদি0না হয়, তাহলেentityIdsঅবশ্যইentityIdCapacityInputXrSpatialEntityIdEXTমানের অ্যারের পয়েন্টার হতে হবে -
entityStateCapacityInputযদি0না হয়, তাহলেentityStatesঅবশ্যইentityStateCapacityInputXrSpatialEntityTrackingStateEXT মানের অ্যারের পয়েন্টার হতে হবে
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;
মেম্বারদের বিবরণ
- বাফার ডেটার
XrSpatialBufferIdEXTbufferIdকরে। 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বাফার ফিরিয়ে আনতেXrSpatialBufferIdEXTxrGetSpatialBufferUint8EXT-এ পাস করা যেতে পারে।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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputuint8_tমানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputuint16_tমানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputuint32_tমানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputfloatমানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputXrVector2f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_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অবশ্যইbufferCapacityInputXrVector3f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialBufferGetInfoEXT স্ট্রাকচারটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialBufferGetInfoEXT {
XrStructureType type;
const void* next;
XrSpatialBufferIdEXT bufferId;
} XrSpatialBufferGetInfoEXT;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।bufferIdএকটিXrSpatialBufferIdEXTবাফারের জন্য যার ডেটা পুনরুদ্ধার করতে হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialBufferGetInfoEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন চালু করতেই হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
#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);
প্যারামিটারের বিবরণ
spatialContextহল একটি XrSpatialContextEXT যা আগে xrCreateSpatialContextAsyncEXT ব্যবহার করে তৈরি করা হয়েছে।createInfoহল XrSpatialUpdateSnapshotCreateInfoEXT-এর একটি পয়েন্টার।snapshotহল XrSpatialSnapshotEXT ফলাফলের একটি পয়েন্টার।
অ্যাপ্লিকেশনটি 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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_TIME_INVALIDXR_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);
প্যারামিটারের বিবরণ
snapshotহল একটি XrSpatialSnapshotEXT যা আগে xrCreateSpatialDiscoverySnapshotCompleteEXT বা xrCreateSpatialUpdateSnapshotEXT দ্বারা প্রদান করা হয়েছে।
অ্যাপ্লিকেশনটি XrSpatialSnapshotEXT হ্যান্ডেল এবং এর সাথে যুক্ত রিসোর্স ধ্বংস করতে xrDestroySpatialSnapshotEXT কল করতে পারে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrDestroySpatialSnapshotEXT কল করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
snapshotঅবশ্যই একটি সঠিক XrSpatialSnapshotEXT হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
snapshotএবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_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-এ থাকবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentBounded2DListEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
boundsঅবশ্যইboundCountXrSpatialBounded2DDataEXT স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
boundCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
কনফিগারেশন
কিছু ক্ষমতার জন্য 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অবশ্যইboundCountXrBoxf স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
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অবশ্যইparentCountXrSpatialEntityIdEXTমানের অ্যারের পয়েন্টার হতে হবে -
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 হতেই হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentMesh3DListEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
meshesঅবশ্যইmeshCountXrSpatialMeshDataEXT স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
meshCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
কনফিগারেশন
কিছু ক্ষমতার জন্য 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।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSpatialFilterTrackingStateEXT ব্যবহার করার আগে
XR_EXT_spatial_entityএক্সটেনশন চালু করতেই হবে -
typeঅবশ্যইXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
trackingStateঅবশ্যই একটি সঠিক XrSpatialEntityTrackingStateEXT ভ্যালু হতে হবে
উদাহরণ কোড
অ্যাপ্লিকেশন ব্যবহার
অ্যাপ্লিকেশন সাধারণত নিম্নলিখিত প্যাটার্নে স্পেশিয়াল এন্টিটি এক্সটেনশন ব্যবহার করে:
- একটি অ্যাপ্লিকেশন প্রথমে 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-এর সাথে চেইন করতে পারে যাতে এই কম্পোনেন্টের ডেটা সম্পর্কিত কোয়েরির জন্য অতিরিক্ত ফিল্টার প্রদান করা যায়।
- এক্সটেনশনটিকে সেই কম্পোনেন্টের জন্য একটি তালিকা স্ট্রাকচারও অবশ্যই সংজ্ঞায়িত করতে হবে যা অ্যাপ্লিকেশনটিকে রানটাইমে একটি অ্যারে পাস করার অনুমতি দেয় যাতে প্রতিটি স্পেশিয়াল এন্টিটির ডেটা পূরণ করা যায় যা xrQuerySpatialComponentDataEXT ::
এক্সটেনশন এমন স্ট্রাকচার নির্ধারণ করতে পারে যা ডিসকভারির জন্য অতিরিক্ত ফিল্টার প্রদান করতে 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
|====
নতুন ম্যাক্রো
নতুন বেস টাইপ
XrSpatialBufferIdEXTXrSpatialEntityIdEXT
নতুন অবজেক্টের ধরন
নতুন কমান্ড
- xrCreateSpatialContextAsyncEXT
- xrCreateSpatialContextCompleteEXT
- xrCreateSpatialDiscoverySnapshotAsyncEXT
- xrCreateSpatialDiscoverySnapshotCompleteEXT
- xrCreateSpatialEntityFromIdEXT
- xrCreateSpatialUpdateSnapshotEXT
- xrDestroySpatialContextEXT
- xrDestroySpatialEntityEXT
- xrDestroySpatialSnapshotEXT
- xrEnumerateSpatialCapabilitiesEXT
- xrEnumerateSpatialCapabilityComponentTypesEXT
- xrEnumerateSpatialCapabilityFeaturesEXT
- xrGetSpatialBufferFloatEXT
- xrGetSpatialBufferStringEXT
- xrGetSpatialBufferUint16EXT
- xrGetSpatialBufferUint32EXT
- xrGetSpatialBufferUint8EXT
- xrGetSpatialBufferVector2fEXT
- xrGetSpatialBufferVector3fEXT
- xrQuerySpatialComponentDataEXT
নতুন স্ট্রাকচার
- XrCreateSpatialContextCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT
- XrEventDataSpatialDiscoveryRecommendedEXT
- XrSpatialBounded2DDataEXT
- XrSpatialBufferEXT
- XrSpatialBufferGetInfoEXT
- XrSpatialCapabilityComponentTypesEXT
- XrSpatialCapabilityConfigurationBaseHeaderEXT
- XrSpatialComponentDataQueryConditionEXT
- XrSpatialComponentDataQueryResultEXT
- ₣৯৯.৯৯ সিএফপি ফ্রাঁ (XPF)
- XrSpatialDiscoverySnapshotCreateInfoEXT
- XrSpatialEntityFromIdCreateInfoEXT
- XrSpatialMeshDataEXT
- XrSpatialUpdateSnapshotCreateInfoEXT
XrSpatialComponentDataQueryResultEXT এক্সটেন্ড করা হচ্ছে :
XrSpatialDiscoverySnapshotCreateInfoEXT , XrSpatialComponentDataQueryConditionEXT এক্সটেন্ড করা হচ্ছে :
নতুন Enum
- XrSpatialBufferTypeEXT
- XrSpatialCapabilityEXT
- XrSpatialCapabilityFeatureEXT
- XrSpatialComponentTypeEXT
- XrSpatialEntityTrackingStateEXT
নতুন Enum কনস্ট্যান্ট
XR_EXT_SPATIAL_ENTITY_EXTENSION_NAMEXR_EXT_spatial_entity_SPEC_VERSIONXrObjectType এক্সটেন্ড করা হচ্ছে :
XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXTXR_OBJECT_TYPE_SPATIAL_ENTITY_EXTXR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
XrResult এক্সটেন্ড করা হচ্ছে :
XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
XrStructureType এক্সটেন্ড করা হচ্ছে :
XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTXR_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)
- প্রাথমিক এক্সটেনশনের বিবরণ