XR_EXT_spatial_plane_tracking
নাম স্ট্রিং
XR_EXT_spatial_plane_tracking
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
৭৪২
সংশোধন
১
অনুমোদনের অবস্থা
অনুমোদিত
এক্সটেনশন এবং সংস্করণ নির্ভরতা
XR_EXT_spatial_entity
অবদানকারীরা
নিহাব জৈন, গুগল
নাটালি ফ্লেউরি, মেটা
ইউইচি তাগুচি, মেটা
রন বেসেমস, মেটা
ইয়িন লি, মাইক্রোসফট
জিমি আলামপারাম্বিল, বাইটড্যান্স
ঝিপেং লিউ, বাইটড্যান্স
জুন ইয়ান, বাইটড্যান্স
সংক্ষিপ্ত বিবরণ
এই এক্সটেনশনটি XR_EXT_spatial_entity উপর ভিত্তি করে নির্মিত এবং এটি স্পেশিয়াল এনটিটি ফ্রেমওয়ার্কের জন্য প্লেন ট্র্যাকিং স্পেশিয়াল সক্ষমতা সংজ্ঞায়িত করে।
রানটাইম সাপোর্ট
যদি রানটাইম প্লেন ট্র্যাকিং সমর্থন করে, তবে তাকে অবশ্যই xrEnumerateSpatialCapabilitiesEXT- এ XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT তালিকাভুক্ত করার মাধ্যমে এটি নির্দেশ করতে হবে।
কনফিগারেশন
XrSpatialCapabilityConfigurationPlaneTrackingEXT কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialCapabilityConfigurationPlaneTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationPlaneTrackingEXT;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। -
capabilityহলো একটি XrSpatialCapabilityEXT এবং এটি অবশ্যইXR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXTহতে হবে। -
enabledComponentCountহলো একটিuint32_tযাenabledComponentsঅ্যারের উপাদান সংখ্যা নির্দেশ করে। -
enabledComponentsহলো XrSpatialComponentTypeEXT- এর একটি অ্যারের পয়েন্টার।
অ্যাপ্লিকেশনগুলি XrSpatialContextCreateInfoEXT :: capabilityConfigs -এ একটি XrSpatialCapabilityConfigurationPlaneTrackingEXT স্ট্রাকচারের পয়েন্টার অন্তর্ভুক্ত করার মাধ্যমে XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT স্পেশিয়াল ক্যাপাবিলিটি সক্রিয় করতে পারে ।
যদি capability XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT না হয়, তাহলে রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialCapabilityConfigurationPlaneTrackingEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_PLANE_TRACKING_EXTহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
capabilityঅবশ্যই একটি বৈধ XrSpatialCapabilityEXT মান হতে হবে -
enabledComponentsঅবশ্যইenabledComponentCountসংখ্যক বৈধ XrSpatialComponentTypeEXT মানের একটি অ্যারের পয়েন্টার হতে হবে। -
enabledComponentCountপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
গ্যারান্টিযুক্ত উপাদান
যে রানটাইম XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT সমর্থন করে, তাকে অবশ্যই এই ক্যাপাবিলিটি দ্বারা আবিষ্কৃত সমস্ত এনটিটির নিশ্চিত উপাদান হিসেবে নিম্নলিখিত স্পেশিয়াল উপাদানগুলি সরবরাহ করতে হবে এবং xrEnumerateSpatialCapabilityComponentTypesEXT- এ সেগুলিকে তালিকাভুক্ত করতে হবে :
-
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT -
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT
সীমাবদ্ধ 2D উপাদান
বাউন্ডেড ২ডি কম্পোনেন্টটি, যে এনটিটির উপর এটি অবস্থিত, সেই এনটিটি দ্বারা প্রতিনিধিত্বকৃত প্লেনের কেন্দ্র এবং বিস্তৃতি প্রদান করে। আরও বিস্তারিত জানতে বাউন্ডেড ২ডি দেখুন।
সমতল সারিবদ্ধকরণ উপাদান
উপাদান ডেটা
typedef enum XrSpatialPlaneAlignmentEXT {
XR_SPATIAL_PLANE_ALIGNMENT_HORIZONTAL_UPWARD_EXT = 0,
XR_SPATIAL_PLANE_ALIGNMENT_HORIZONTAL_DOWNWARD_EXT = 1,
XR_SPATIAL_PLANE_ALIGNMENT_VERTICAL_EXT = 2,
XR_SPATIAL_PLANE_ALIGNMENT_ARBITRARY_EXT = 3,
XR_SPATIAL_PLANE_ALIGNMENT_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialPlaneAlignmentEXT;
XrSpatialPlaneAlignmentEXT এনুমারেশনটি সেই স্পেশিয়াল এনটিটির সাথে যুক্ত প্লেনের অ্যালাইনমেন্ট বর্ণনা করে, যেটিতে একটি XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT কম্পোনেন্ট রয়েছে।
গণনা মানগুলোর নিম্নলিখিত অর্থ রয়েছে:
এনামের বিবরণ
XR_SPATIAL_PLANE_ALIGNMENT_HORIZONTAL_UPWARD_EXT
বস্তুটি অনুভূমিক এবং উপরের দিকে মুখ করা (যেমন মেঝে)।
XR_SPATIAL_PLANE_ALIGNMENT_HORIZONTAL_DOWNWARD_EXT
বস্তুটি অনুভূমিক এবং নিচের দিকে মুখ করা (যেমন ছাদ)।
XR_SPATIAL_PLANE_ALIGNMENT_VERTICAL_EXT
সত্তাটি উল্লম্ব (যেমন দেয়াল)।
XR_SPATIAL_PLANE_ALIGNMENT_ARBITRARY_EXT
সত্তাটির একটি যথেচ্ছ, অ-উল্লম্ব এবং অ-অনুভূমিক অভিমুখ রয়েছে।
ডেটা কোয়েরি করার জন্য উপাদান তালিকার কাঠামো
XrSpatialComponentPlaneAlignmentListEXT স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialComponentPlaneAlignmentListEXT {
XrStructureType type;
void* next;
uint32_t planeAlignmentCount;
XrSpatialPlaneAlignmentEXT* planeAlignments;
} XrSpatialComponentPlaneAlignmentListEXT;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। -
planeAlignmentCountহলো একটিuint32_tযাplaneAlignmentsঅ্যারের উপাদান সংখ্যা নির্দেশ করে। -
planeAlignmentsহলো XrSpatialPlaneAlignmentEXT- এর একটি অ্যারে।
একটি XrSpatialSnapshotEXT- এর মধ্যে থাকা স্পেশিয়াল এনটিটিগুলোর প্লেন অ্যালাইনমেন্ট কম্পোনেন্ট কোয়েরি করতে, XrSpatialComponentDataQueryConditionEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT অন্তর্ভুক্ত করুন এবং XrSpatialComponentDataQueryResultEXT :: next চেইনে XrSpatialComponentPlaneAlignmentListEXT যোগ করুন।
যদি XrSpatialComponentPlaneAlignmentListEXT, XrSpatialComponentDataQueryResultEXT :: next chain-এর মধ্যে থাকে কিন্তু XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT XrSpatialComponentDataQueryConditionEXT :: componentTypes এর মধ্যে অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে ।
যদি planeAlignmentCount XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput থেকে কম হয়, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentPlaneAlignmentListEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_PLANE_ALIGNMENT_LIST_EXTহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
planeAlignmentsঅবশ্যইplaneAlignmentCountসংখ্যক XrSpatialPlaneAlignmentEXT মানের একটি অ্যারের পয়েন্টার হতে হবে। -
planeAlignmentCountপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
কনফিগারেশন
যদি কোনো ক্যাপাবিলিটির জন্য XrSpatialCapabilityComponentTypesEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT এনুমার্যান্টটি অন্তর্ভুক্ত থাকে, তবে একটি অ্যাপ্লিকেশন সেই কম্পোনেন্টটিকে সমর্থনকারী ক্যাপাবিলিটির XrSpatialCapabilityConfigurationBaseHeaderEXT ডিরাইভড স্ট্রাকচারের XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents লিস্টে এনুমার্যান্টটি অন্তর্ভুক্ত করার মাধ্যমে এটিকে সক্রিয় করতে পারে ।
এই কম্পোনেন্টটিকে XrSpatialCapabilityConfigurationBaseHeaderEXT :: next চেইনে অন্তর্ভুক্ত করার জন্য কোনো বিশেষ কনফিগারেশনের প্রয়োজন হয় না।
ঐচ্ছিক উপাদান
যে রানটাইম XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT সমর্থন করে, সেটি Guaranteed Components বিভাগে তালিকাভুক্ত উপাদানগুলো ছাড়াও অন্যান্য স্পেশিয়াল কম্পোনেন্টও সমর্থন করতে পারে । একটি অ্যাপ্লিকেশন কোনো রানটাইমের সমর্থিত কম্পোনেন্টগুলোর সম্পূর্ণ তালিকা পেতে xrEnumerateSpatialCapabilityComponentTypesEXT ব্যবহার করে, এবং তারপর স্পেশিয়াল কনটেক্সট তৈরি করার সময় তার প্রয়োজনীয় কম্পোনেন্টগুলো কনফিগার করে।
মেশ 2D উপাদান
উপাদান ডেটা
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT তার ডেটার জন্য XrSpatialMeshDataEXT স্ট্রাকচারটি ব্যবহার করে।
ডেটা কোয়েরি করার জন্য উপাদান তালিকার কাঠামো
XrSpatialComponentMesh2DListEXT স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialComponentMesh2DListEXT {
XrStructureType type;
void* next;
uint32_t meshCount;
XrSpatialMeshDataEXT* meshes;
} XrSpatialComponentMesh2DListEXT;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। -
meshCountহলো একটিuint32_tযাmeshesঅ্যারের উপাদান সংখ্যা বর্ণনা করে। -
meshesহলো XrSpatialMeshDataEXT- এর একটি অ্যারে।
একটি XrSpatialSnapshotEXT- এর মধ্যে থাকা স্পেশিয়াল এনটিটিগুলোর মেশ 2D কম্পোনেন্ট কোয়েরি করতে, XrSpatialComponentDataQueryConditionEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT অন্তর্ভুক্ত করুন এবং XrSpatialComponentDataQueryResultEXT :: next চেইনে XrSpatialComponentMesh2DListEXT যোগ করুন।
যদি XrSpatialComponentMesh2DListEXT, XrSpatialComponentDataQueryResultEXT :: next chain-এ থাকে কিন্তু XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT XrSpatialComponentDataQueryConditionEXT :: componentTypes এ অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে ।
যদি meshCount XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput থেকে কম হয়, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতে হবে ।
meshes অ্যারেতে রানটাইম দ্বারা পূরণকৃত `XrSpatialMeshDataEXT`- এর জন্য, `XrSpatialMeshDataEXT :: vertexBuffer এর ক্ষেত্রে ` XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT হতে হবে এবং `XrSpatialMeshDataEXT :: indexBuffer এর ক্ষেত্রে ` XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_UINT16_EXT হতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentMesh2DListEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_MESH_2D_LIST_EXTহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
meshesঅবশ্যইmeshCountXrSpatialMeshDataEXT স্ট্রাকচারের একটি অ্যারের পয়েন্টার হতে হবে। -
meshCountপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
কনফিগারেশন
যদি কোনো ক্যাপাবিলিটির জন্য XrSpatialCapabilityComponentTypesEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT এনুমারেট করা থাকে, তাহলে একটি অ্যাপ্লিকেশন সেই কম্পোনেন্টকে সমর্থনকারী ক্যাপাবিলিটির XrSpatialCapabilityConfigurationBaseHeaderEXT ডিরাইভড স্ট্রাকচারের XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents লিস্টে এনুমার্যান্টটি অন্তর্ভুক্ত করার মাধ্যমে এটিকে সক্রিয় করতে পারে ।
এই কম্পোনেন্টটিকে XrSpatialCapabilityConfigurationBaseHeaderEXT :: next চেইনে অন্তর্ভুক্ত করার জন্য কোনো বিশেষ কনফিগারেশনের প্রয়োজন হয় না।
বহুভুজ 2D উপাদান
উপাদান ডেটা
XrSpatialPolygon2DDataEXT কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrSpatialPolygon2DDataEXT {
XrPosef origin;
XrSpatialBufferEXT vertexBuffer;
} XrSpatialPolygon2DDataEXT;
সদস্যদের বিবরণ
-
originহলো একটি XrPosef যা বহুভুজটির মূলবিন্দুকে সংজ্ঞায়িত করে। বহুভুজটির সমস্ত শীর্ষবিন্দু XY সমতলে এই মূলবিন্দুর সাপেক্ষে অবস্থিত। -
vertexBufferহলো একটি XrSpatialBufferEXT যাXR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXTটাইপের একটি বাফারের আইডি প্রদান করে এবং এই কম্পোনেন্টটি যে এনটিটির উপর রয়েছে, তার ভার্টেক্স বাফারকে প্রতিনিধিত্ব করে। ভার্টেক্সগুলো অবশ্যই ঘড়ির কাঁটার বিপরীত দিকে ফেরত দিতে হবে। এই ভার্টেক্সগুলো দ্বারা গঠিত বহুভুজটি স্ব-ছেদকারী হবে না এবং অবতল হতে পারে ।
vertexBuffer জন্য XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT হতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialPolygon2DDataEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
vertexBufferঅবশ্যই একটি বৈধ XrSpatialBufferEXT স্ট্রাকচার হতে হবে।
ডেটা কোয়েরি করার জন্য উপাদান তালিকার কাঠামো
XrSpatialComponentPolygon2DListEXT স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialComponentPolygon2DListEXT {
XrStructureType type;
void* next;
uint32_t polygonCount;
XrSpatialPolygon2DDataEXT* polygons;
} XrSpatialComponentPolygon2DListEXT;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। -
polygonCountহলো একটিuint32_tযাpolygonsঅ্যারের উপাদান সংখ্যা নির্দেশ করে। -
polygonsহলো XrSpatialPolygon2DDataEXT- এর একটি অ্যারে।
একটি XrSpatialSnapshotEXT- এ থাকা স্পেশিয়াল এনটিটিগুলোর পলিগন 2D কম্পোনেন্ট কোয়েরি করতে, XrSpatialComponentDataQueryConditionEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT অন্তর্ভুক্ত করুন এবং XrSpatialComponentDataQueryResultEXT :: next চেইনে XrSpatialComponentPolygon2DListEXT যোগ করুন।
যদি XrSpatialComponentPolygon2DListEXT , XrSpatialComponentDataQueryResultEXT :: next chain-এ থাকে কিন্তু XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT XrSpatialComponentDataQueryConditionEXT :: componentTypes এ অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে ।
যদি polygonCount XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput থেকে কম হয়, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentPolygon2DListEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_POLYGON_2D_LIST_EXTহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
polygonsঅবশ্যইpolygonCountXrSpatialPolygon2DDataEXT কাঠামোর একটি অ্যারের পয়েন্টার হতে হবে। -
polygonCountপ্যারামিটারটি অবশ্যই0থেকে বড় হতে হবে।
কনফিগারেশন
যদি কোনো ক্যাপাবিলিটির জন্য XrSpatialCapabilityComponentTypesEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT এনুমার্যান্টটি অন্তর্ভুক্ত থাকে, তবে একটি অ্যাপ্লিকেশন সেই কম্পোনেন্টটিকে সমর্থনকারী ক্যাপাবিলিটির XrSpatialCapabilityConfigurationBaseHeaderEXT ডিরাইভড স্ট্রাকচারের XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents লিস্টে এনুমার্যান্টটি অন্তর্ভুক্ত করার মাধ্যমে এটিকে সক্রিয় করতে পারে ।
এই কম্পোনেন্টটিকে XrSpatialCapabilityConfigurationBaseHeaderEXT :: next চেইনে অন্তর্ভুক্ত করার জন্য কোনো বিশেষ কনফিগারেশনের প্রয়োজন হয় না।
সমতল শব্দার্থিক লেবেল
উপাদান ডেটা
typedef enum XrSpatialPlaneSemanticLabelEXT {
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT = 2,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT = 3,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT = 4,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT = 5,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialPlaneSemanticLabelEXT;
XrSpatialPlaneSemanticLabelEXT এনুমারেশনটি প্লেনগুলির জন্য এক সেট সিমান্টিক লেবেল বর্ণনা করে।
এনামের বিবরণ
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
রানটাইম এই সত্তাটিকে শ্রেণীবদ্ধ করতে পারেনি।
XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
সত্তাটি হলো একটি মেঝে।
XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
সত্তাটি হলো একটি দেয়াল।
XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
সত্তাটি একটি ছাদ।
XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
সত্তাটি হলো একটি টেবিল।
ডেটা কোয়েরি করার জন্য উপাদান তালিকার কাঠামো
XrSpatialComponentPlaneSemanticLabelListEXT স্ট্রাকচারটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSpatialComponentPlaneSemanticLabelListEXT {
XrStructureType type;
void* next;
uint32_t semanticLabelCount;
XrSpatialPlaneSemanticLabelEXT* semanticLabels;
} XrSpatialComponentPlaneSemanticLabelListEXT;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার। -
semanticLabelCountহলো একটিuint32_tযাsemanticLabelsঅ্যারের উপাদান সংখ্যা নির্দেশ করে। -
semanticLabelsহলো XrSpatialPlaneSemanticLabelEXT- এর একটি অ্যারে।
একটি XrSpatialSnapshotEXT- এর মধ্যে থাকা স্পেশিয়াল এনটিটিগুলোর প্লেন সিমান্টিক লেবেল কম্পোনেন্ট কোয়েরি করতে, XrSpatialComponentDataQueryConditionEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT অন্তর্ভুক্ত করুন এবং XrSpatialComponentDataQueryResultEXT :: next চেইনে XrSpatialComponentPlaneSemanticLabelListEXT যোগ করুন।
যদি XrSpatialComponentDataQueryResultEXT :: next এর পরবর্তী চেইনে XrSpatialComponentPlaneSemanticLabelListEXT থাকে, কিন্তু XrSpatialComponentDataQueryConditionEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে ।
যদি semanticLabelCount XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput থেকে কম হয়, তাহলে রানটাইমকে অবশ্যই xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSpatialComponentPlaneSemanticLabelListEXT ব্যবহার করার আগে
XR_EXT_spatial_plane_trackingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SPATIAL_COMPONENT_PLANE_SEMANTIC_LABEL_LIST_EXTহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
semanticLabelsঅবশ্যইsemanticLabelCountসংখ্যক XrSpatialPlaneSemanticLabelEXT মানের একটি অ্যারের পয়েন্টার হতে হবে। -
semanticLabelCountপ্যারামিটারটি অবশ্যই0অপেক্ষা বড় হতে হবে।
কনফিগারেশন
যদি কোনো ক্যাপাবিলিটির জন্য XrSpatialCapabilityComponentTypesEXT :: componentTypes এ XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT এনুমার্যান্টটি অন্তর্ভুক্ত থাকে, তবে একটি অ্যাপ্লিকেশন সেই কম্পোনেন্টটিকে সমর্থনকারী ক্যাপাবিলিটির XrSpatialCapabilityConfigurationBaseHeaderEXT ডিরাইভড স্ট্রাকচারের XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents লিস্টে এনুমার্যান্টটি অন্তর্ভুক্ত করার মাধ্যমে এটিকে সক্রিয় করতে পারে ।
এই কম্পোনেন্টটিকে XrSpatialCapabilityConfigurationBaseHeaderEXT :: next চেইনে অন্তর্ভুক্ত করার জন্য কোনো বিশেষ কনফিগারেশনের প্রয়োজন হয় না।
উদাহরণ কোড
প্লেন ট্র্যাকিং ক্ষমতা কনফিগার করুন
নিম্নলিখিত উদাহরণ কোডটি দেখায় যে কীভাবে একটি স্পেশিয়াল কনটেক্সট তৈরি করার সময় প্লেন ট্র্যাকিং ক্ষমতা কনফিগার করতে হয়।
// Check if plane tracking capability is supported
uint32_t capabilityCount;
CHK_XR(xrEnumerateSpatialCapabilitiesEXT(instance, systemId, 0, &capabilityCount, nullptr));
std::vector<XrSpatialCapabilityEXT> capabilities(capabilityCount);
CHK_XR(xrEnumerateSpatialCapabilitiesEXT(instance, systemId, capabilityCount, &capabilityCount, capabilities.data()));
if (std::find(capabilities.begin(), capabilities.end(), XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT) == capabilities.end()) {
return;
}
// Enumerate supported components for plane tracking capability
XrSpatialCapabilityComponentTypesEXT planeComponents{XR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXT};
CHK_XR(xrEnumerateSpatialCapabilityComponentTypesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT, &planeComponents));
std::vector<XrSpatialComponentTypeEXT> planeCapabilityComponents(planeComponents.componentTypeCountOutput);
planeComponents.componentTypeCapacityInput = planeCapabilityComponents.size();
planeComponents.componentTypes = planeCapabilityComponents.data();
CHK_XR(xrEnumerateSpatialCapabilityComponentTypesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT, &planeComponents));
// Check if polygon 2D and plane semantic labels optional components are supported
const auto supportsComponent = [&planeCapabilityComponents](XrSpatialComponentTypeEXT component) {
return std::find(planeCapabilityComponents.begin(), planeCapabilityComponents.end(), component) != planeCapabilityComponents.end();
};
const bool supportsPolygon2DComponent = supportsComponent(XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT);
const bool supportsSemanticLabelComponent = supportsComponent(XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT);
// Create a spatial context
XrSpatialContextEXT spatialContext{};
// Enable the 2 guaranteed components of the plane tracking capability
std::vector<XrSpatialComponentTypeEXT> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT,
};
// Optionally enable polygon2D if it is supported
if (supportsPolygon2DComponent) {
enabledComponents.push_back(XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT);
}
// Optionally enable semantic labels if it is supported
if (supportsSemanticLabelComponent) {
enabledComponents.push_back(XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT);
}
XrSpatialCapabilityConfigurationPlaneTrackingEXT planeConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_PLANE_TRACKING_EXT};
planeConfig.capability = XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT;
planeConfig.enabledComponentCount = enabledComponents.size();
planeConfig.enabledComponents = enabledComponents.data();
std::array<XrSpatialCapabilityConfigurationBaseHeaderEXT*, 1> capabilityConfigs = {
reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&planeConfig),
};
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;
// ...
// Discover entities with the spatial context
// ...
CHK_XR(xrDestroySpatialContextEXT(spatialContext));
স্থানিক সত্তা আবিষ্কার করুন এবং উপাদান ডেটা কোয়েরি করুন
নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT দিয়ে কনফিগার করা একটি কনটেক্সটের জন্য স্পেশিয়াল এনটিটিগুলি আবিষ্কার করতে হয় এবং এর কম্পোনেন্ট ডেটা কোয়েরি করতে হয়।
XrFutureEXT future = XR_NULL_FUTURE_EXT;
// We want to look for entities that have the following components.
std::vector<XrSpatialComponentTypeEXT> snapshotComponents = {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT,
};
if (supportsPolygon2DComponent) {
snapshotComponents.push_back(XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT);
}
if (supportsSemanticLabelComponent) {
snapshotComponents.push_back(XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT);
}
auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
snapshotCreateInfo.componentTypes = snapshotComponents.data();
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 semantic label component data
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = snapshotComponents.size();
queryCond.componentTypes = snapshotComponents.data();
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
queryResult.entityStateCapacityInput = entityStates.size();
queryResult.entityStates = entityStates.data();
std::vector<XrSpatialBounded2DDataEXT> bounded2D(queryResult.entityIdCountOutput);
XrSpatialComponentBounded2DListEXT bounded2DList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
bounded2DList.boundCount = bounded2D.size();
bounded2DList.bounds = bounded2D.data();
queryResult.next = &bounded2DList;
std::vector<XrSpatialPolygon2DDataEXT> polygons;
XrSpatialComponentPolygon2DListEXT polygonList{XR_TYPE_SPATIAL_COMPONENT_POLYGON_2D_LIST_EXT};
if (supportsPolygon2DComponent) {
polygons.resize(queryResult.entityIdCountOutput);
polygonList.polygonCount = polygons.size();
polygonList.polygons = polygons.data();
polygonList.next = queryResult.next;
queryResult.next = &polygonList;
}
std::vector<XrSpatialPlaneSemanticLabelEXT> semanticLabels;
XrSpatialComponentPlaneSemanticLabelListEXT semanticLabelsList{XR_TYPE_SPATIAL_COMPONENT_PLANE_SEMANTIC_LABEL_LIST_EXT};
if (supportsSemanticLabelComponent) {
semanticLabels.resize(queryResult.entityIdCountOutput);
semanticLabelsList.semanticLabelCount = semanticLabels.size();
semanticLabelsList.semanticLabels = semanticLabels.data();
semanticLabelsList.next = queryResult.next;
queryResult.next = &semanticLabelsList;
}
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) {
continue;
}
// 2D bounds for entity entityIds[i] is bounded2D[i].extents centered on bounded2D[i].center.
if (supportsPolygon2DComponent) {
// 2D polygon for entity entityIds[i] is the buffer represented by polygons[i].bufferId.
// Application uses flink:xrGetSpatialBufferVector2fEXT to get the buffer data.
}
if (supportsSemanticLabelComponent) {
// semantic label for entity entityIds[i] is semanticLabels[i].
}
}
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
// ...
}
নতুন কাঠামো
- XrSpatialCapabilityConfigurationPlaneTrackingEXT
- XrSpatialPolygon2DDataEXT
XrSpatialComponentDataQueryResultEXT- এর সম্প্রসারণ:
নতুন এনাম
নতুন এনাম ধ্রুবক
-
XR_EXT_SPATIAL_PLANE_TRACKING_EXTENSION_NAME -
XR_EXT_spatial_plane_tracking_SPEC_VERSION XrSpatialCapabilityEXT- এর সম্প্রসারণ:
-
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT
-
XrSpatialComponentTypeEXT এর সম্প্রসারণ:
-
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT -
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT -
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT -
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT
-
XrStructureType সম্প্রসারণ :
-
XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_PLANE_TRACKING_EXT -
XR_TYPE_SPATIAL_COMPONENT_MESH_2D_LIST_EXT -
XR_TYPE_SPATIAL_COMPONENT_PLANE_ALIGNMENT_LIST_EXT -
XR_TYPE_SPATIAL_COMPONENT_PLANE_SEMANTIC_LABEL_LIST_EXT -
XR_TYPE_SPATIAL_COMPONENT_POLYGON_2D_LIST_EXT
-
সমস্যা
সংস্করণ ইতিহাস
সংস্করণ ১, ২০২৪-০৭-০২ (নিহাব জৈন, গুগল)
- প্রাথমিক এক্সটেনশনের বিবরণ