XR_EXT_spatial_mesh_tracking

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

XR_EXT_spatial_mesh_tracking

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

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

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

784

সংশোধন

1

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

অনুমোদিত নয়

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

XR_EXT_spatial_entity

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

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

এক নজরে

এই এক্সটেনশন XR_EXT_spatial_entity-এর উপর ভিত্তি করে তৈরি করা হয়েছে এবং পরিবেশের ট্রায়াঙ্গেল মেশ ট্র্যাক করার জন্য স্পেশিয়াল ক্ষমতাকে সংজ্ঞায়িত করে। এই এক্সটেনশনে সংজ্ঞায়িত ক্ষমতা দ্বারা প্রদত্ত ত্রিভুজ জালটি ভার্চুয়াল কন্টেন্টের সাথে পরিবেশের সংঘর্ষ নির্ধারণের জন্য অ্যাপ্লিকেশন দ্বারা ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছে।

স্পেশিয়াল মেশ ট্র্যাকিং ক্ষমতা

এই এক্সটেনশনটি পরিবেশের ত্রিভুজাকার মেশ ট্র্যাক করার জন্য একটি স্থানিক ক্ষমতা হিসাবে XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT সংজ্ঞায়িত করে। প্লেন ও অবজেক্টের মতো এন্টিটির মেশ ট্র্যাক করা এই ক্ষমতার মধ্যে পড়ে না এবং এর পরিবর্তে অবশ্যই সেইসব এন্টিটি ট্র্যাক করে এমন সংশ্লিষ্ট ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টের এনিউমারেশন দ্বারা নির্দেশিত হতে হবে।

রানটাইমের ক্ষমতা এবং অ্যাপ্লিকেশনের বেছে নেওয়া কনফিগারেশনের উপর নির্ভর করে, অ্যাপ্লিকেশনে ওয়াটারটাইট এবং নন-ওয়াটারটাইট মেশ, দুটিই প্রদান করতে XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT ব্যবহার করা হয়।

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

রানটাইম সংক্রান্ত সহায়তা

রানটাইম যদি পরিবেশের ট্রায়াঙ্গেল মেশের জন্য ট্র্যাকিং সাপোর্ট করে, তাহলে এটি অবশ্যই xrEnumerateSpatialCapabilitiesEXT-এ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT গণনা করে এটি নির্দেশ করবে।

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT-এ কাজ করে এমন রানটাইমের ৩টি সম্ভাব্য ক্ষমতা আছে -

  • রানটাইম শুধুমাত্র নন-ওয়াটারটাইট মেশ ট্র্যাকিং সাপোর্ট করে। এই ক্ষেত্রে রানটাইম xrEnumerateSpatialCapabilitiesEXT-এ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT গণনা করে কিন্তু xrEnumerateSpatialCapabilityFeaturesEXT-এ XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT গণনা করলে চলবে না (ওয়াটারটাইট মেশ ট্র্যাক করা দেখুন)।
  • রানটাইম ওয়াটারটাইট ও নন-ওয়াটারটাইট মেশ ট্র্যাকিং, দুটিতেই কাজ করে। এই ক্ষেত্রে, রানটাইম xrEnumerateSpatialCapabilitiesEXT-এ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT গণনা করে এবং অ্যাপ্লিকেশন থেকে ওয়াটারটাইট মেশ ট্র্যাকিংয়ের অনুরোধ চালু করার জন্য xrEnumerateSpatialCapabilityFeaturesEXT-এ XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT-ও অবশ্যই গণনা করতে হবে (ওয়াটারটাইট মেশ ট্র্যাক করা দেখুন)।
  • রানটাইমে শুধুমাত্র ওয়াটারটাইট মেশ ট্র্যাকিং কাজ করে। এই ক্ষেত্রে রানটাইম xrEnumerateSpatialCapabilitiesEXT-এ XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT গণনা করে এবং অবশ্যই xrEnumerateSpatialCapabilityFeaturesEXT-এ XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT গণনা করতে হবে (ওয়াটারটাইট মেশ ট্র্যাক করা দেখুন) যাতে অ্যাপ্লিকেশনকে জানানো যায় যে এটি ওয়াটারটাইট মেশ ট্র্যাকিং সাপোর্ট করে। এই নির্দিষ্ট ক্ষেত্রে, রানটাইম সবসময় XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT-এর কনফিগারেশন নির্বিশেষে অ্যাপ্লিকেশনটিতে একটি ওয়াটারটাইট মেশ রিটার্ন করে।

কনফিগারেশন

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

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

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

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

অ্যাপ্লিকেশন XrSpatialContextCreateInfoEXT :: capabilityConfigs -এ XrSpatialCapabilityConfigurationMeshTrackingEXT স্ট্রাকচারে একটি পয়েন্টার অন্তর্ভুক্ত করে XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT স্পেশিয়াল ক্ষমতা চালু করতে পারে।

capability যদি XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT না হয়, তাহলে রানটাইমকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে।

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

ওয়াটারটাইট মেশ ট্র্যাক করা

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

typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;

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

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • enableWatertightMeshTracking নির্দেশ করে যে রানটাইমকে স্ক্যান করা পরিবেশের জন্য একটি ওয়াটারটাইট মেশ গণনা করতেই হবে।

ওয়াটারটাইট মেশ ট্র্যাকিং সাপোর্ট করে এমন রানটাইমকে xrEnumerateSpatialCapabilityFeaturesEXT-এ XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT অবশ্যই এনিউমারেট করতে হবে। XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT ফিচারটি অ্যাপ্লিকেশনগুলিকে ঐচ্ছিকভাবে ওয়াটারটাইট মেশ ট্র্যাকিং চালু করতে এবং ওয়াটারটাইট মেশ জেনারেশনের জন্য প্রয়োজন হতে পারে এমন যেকোনও অতিরিক্ত কম্পিউট স্পষ্টভাবে বেছে নিতে দেয়।

কোনও নির্দিষ্ট ক্ষমতার জন্য xrEnumerateSpatialCapabilityFeaturesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT গণনা করা হলে, অ্যাপ্লিকেশনটি সেই ক্ষমতার সংশ্লিষ্ট কনফিগারেশন স্ট্রাকচারে XrSpatialFeatureTrackWatertightMeshEXT চেইন করতে পারে, যাতে ট্র্যাক করা মেশটি ওয়াটারটাইট হবে কিনা তা নির্দেশ করা যায়। অ্যাপ্লিকেশনটি enableWatertightMeshTracking থেকে XR_TRUE সেট করলে, রানটাইমকে অবশ্যই পরিবেশের একটি ওয়াটারটাইট মেশ গণনা করতে হবে এবং অ্যাপ্লিকেশনটিকে প্রদান করতে হবে। অ্যাপ্লিকেশন যদি enableWatertightMeshTracking-কে XR_FALSE-এ সেট করে, তাহলে ট্র্যাক করা মেশ এখনও ওয়াটারটাইট হতে পারে যদি রানটাইম শুধুমাত্র ওয়াটারটাইট মেশ ট্র্যাকিংকে সাপোর্ট করে, যেমন, রানটাইম যদি আগে থেকে স্ক্যান করা পরিবেশ থেকে প্রসেস করা মেশ প্রদান করে।

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

অ্যাপ্লিকেশন ফ্লো

নিচের ডায়াগ্রাম থেকে বোঝা যাবে যে কোনও অ্যাপ্লিকেশন যদি পরিবেশের ওয়াটারটাইট মেশ ট্র্যাক করতে চায়, তাহলে কীভাবে স্পেশিয়াল কনটেক্সট কনফিগার করতে পারে।

হ্যাঁ

হ্যাঁ

অ্যাপের জন্য
ওয়াটারটাইট মেশ প্রয়োজন

অ্যাপের প্রয়োজন...

হ্যাঁ

হ্যাঁ

না

না

রানটাইম
"মেশ ট্র্যাকিং"
ক্ষমতা সমর্থন করে

রানটাইম...

হ্যাঁ

হ্যাঁ

না

না

রানটাইম
"ট্র্যাক ওয়াটারটাইট মেশ"
ফিচার সাপোর্ট করে

রানটাইম...

অ্যাপ "মেশ ট্র্যাকিং ক্ষমতা" এবং "ওয়াটারটাইট মেশ ট্র্যাক করুন" ফিচারের মাধ্যমে স্পেশিয়াল কনটেক্সট তৈরি করে

অ্যাপ স্পেশাল তৈরি করে...

বর্তমান রানটাইমে ফিচার কাজ না করলে অ্যাপ তা ম্যানেজ করে

অ্যাপে এগুলির অভাব রয়েছে...

অ্যাপটি ট্র্যাক করা মেশ প্রসেস করে নিজেই একটি ওয়াটারটাইট মেশ তৈরি করে, সম্ভবত মেশের গর্তগুলি প্যাচ করার জন্য ব্যবহারকারীর সাহায্য নিয়ে

অ্যাপ ট্রানজ্যাকশন প্রসেস করে... টেক্সট SVG নয় - দেখানো যাবে না

ছবি ২৯. ওয়াটারটাইট মেশের জন্য অনুরোধ করার অ্যাপ ফ্লো

গ্যারেন্টিযুক্ত কম্পোনেন্ট

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT-কে সাপোর্ট করে এমন রানটাইমকে অবশ্যই নিম্নলিখিত স্পেশিয়াল কম্পোনেন্ট প্রদান করতে হবে, যা এই ক্ষমতার মাধ্যমে খুঁজে পাওয়া সব এন্টিটির গ্যারেন্টিযুক্ত কম্পোনেন্ট হিসেবে কাজ করবে এবং অবশ্যই সেগুলিকে xrEnumerateSpatialCapabilityComponentTypesEXT-এ তালিকাভুক্ত করতে হবে :

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
বাউন্ডেড 3D কম্পোনেন্ট

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

আরও বিবরণের জন্য বাউন্ডেড 3D দেখুন।

মেশ 3D কম্পোনেন্ট

মেশ 3D কম্পোনেন্ট, যে এন্টিটির উপর এটি রয়েছে তার 3D মেশ প্রদান করে। আরও বিবরণের জন্য Mesh 3D দেখুন।

ভলিউমেট্রিক সেগমেন্টেশন (চাঙ্কিং)

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

পাশাপাশি থাকা ভলিউমেট্রিক ব্লকের মেশ ভার্টিসেস শেয়ার করতে পারে, তবে একটি ভলিউমেট্রিক ব্লকের ত্রিভুজগুলি তার সংলগ্ন ভলিউমের ত্রিভুজগুলির সাথে ওভারল্যাপ করবে না।

ঐচ্ছিক কম্পোনেন্ট

মেশ নরমাল

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

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT তার ডেটার জন্য XrSpatialBufferEXT ব্যবহার করে। XrSpatialBufferEXT :: bufferId এই কম্পোনেন্টটি যে এন্টিটিতে আছে তার মেশের ভার্টেক্স নরমাল সহ বাফারকে দেখায়। XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT হতে হবে। যে এন্টিটিতে XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT আছে সেটিতে অবশ্যই XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT থাকতে হবে। এই কম্পোনেন্টের মাধ্যমে প্রদান করা নরমাল XrSpatialMeshDataEXT :: vertexBuffer-এ প্রদান করা ভার্টিসেসের সাথে অবশ্যই মিলতে হবে, যা XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টের অংশ।

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

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

typedef struct XrSpatialComponentMesh3DNormalsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshNormalsCount;
    XrSpatialBufferEXT*    meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;

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

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

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

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

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

কনফিগারেশন

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

মেশ সেম্যান্টিক লেবেল

typedef enum XrSpatialMeshSemanticLabelEXT {
    XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;

XrSpatialMeshSemanticLabelEXT এনুমারেশন মেশের জন্য সিম্যান্টিক লেবেলের সেট বর্ণনা করে। প্রতি-ভার্টেক্স বা প্রতি-ত্রিভুজ সিম্যান্টিক লেবেলের জন্য XrSpatialBufferEXT থেকে uint8_t ভ্যালু বোঝাতে বিভিন্ন স্পেশিয়াল কম্পোনেন্ট এটি ব্যবহার করে। Mesh Vertex Semantic Labels এবং Mesh Triangle Semantic Labels দেখুন

যেসব এক্সটেনশন এই সিম্যান্টিক লেবেল সেটকে আরও বড় করতে চায় অথবা মেশের জন্য নিজস্ব নতুন সেট যোগ করতে চায়, তাদের সিম্যান্টিক লেবেল ডিজাইন ও এক্সটেনশন সংক্রান্ত নির্দেশিকাতে দেওয়া নির্দেশাবলী অনুসরণ করা উচিত।

Enum-এর বিবরণ

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

রানটাইম ভার্টেক্স বা ত্রিভুজকে শ্রেণীবদ্ধ করতে পারেনি।

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

ভার্টেক্স বা ত্রিভুজটি একটি ফ্লোরে ম্যাপ করে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

ভার্টেক্স বা ত্রিভুজটি একটি দেওয়ালের সাথে ম্যাপ করা আছে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

ভার্টেক্স বা ত্রিভুজটি একটি সিলিংয়ে ম্যাপ করে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

ভার্টেক্স বা ত্রিভুজটি একটি টেবিল ম্যাপ করে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

ভার্টেক্স বা ত্রিভুজটি একটি চেয়ারের সাথে ম্যাপ করা হয়েছে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

ভার্টেক্স বা ত্রিভুজটি একটি সোফার সাথে ম্যাপ করা হয়েছে।

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

ভার্টেক্স বা ত্রিভুজ শস্যক্ষেতকে ম্যাপ করে।

মেশ ভার্টেক্স সিম্যান্টিক লেবেল

কম্পোনেন্ট ওভারভিউ

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT স্পেশিয়াল এন্টিটির মেশের প্রতিটি ভার্টেক্সের জন্য একটি সিঙ্গল সিম্যান্টিক লেবেল প্রদান করে।

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

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT তার ডেটার জন্য XrSpatialBufferEXT ব্যবহার করে। XrSpatialBufferEXT :: bufferId এই কম্পোনেন্টটি যে এন্টিটিতে আছে তার মেশের ভার্টেক্স সিম্যান্টিক লেবেল সহ বাফারকে দেখায়। XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_UINT8_EXT হতে হবে। বাফারের মানগুলি XrSpatialMeshSemanticLabelEXT গণনার মানের সাথে মিলে যায়। XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT আছে এমন এন্টিটিতে অবশ্যই XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্ট থাকতে হবে। এই কম্পোনেন্টের মাধ্যমে প্রদান করা সিম্যান্টিক লেবেল XrSpatialMeshDataEXT :: vertexBuffer-এর XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টে প্রদান করা ভার্টিসেসের সাথে অবশ্যই মিলতে হবে। এর অর্থ হল, এই কম্পোনেন্ট দ্বারা প্রদত্ত স্পেশিয়াল বাফার ডেটার নির্দিষ্ট ইনডেক্সে থাকা সিম্যান্টিক লেবেল XrSpatialMeshDataEXT :: vertexBuffer দ্বারা প্রদত্ত একই ইনডেক্সে থাকা ভার্টেক্সের সাথে সম্পর্কিত। এর অর্থ হল, xrGetSpatialBufferUint8EXT :: bufferCountOutput অবশ্যই ভার্টেক্স সিম্যান্টিক লেবেল বাফার এবং XrSpatialMeshDataEXT :: vertexBuffer-এর জন্য একই ভ্যালু হতে হবে।

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

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

typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;

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

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

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

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

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

কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই। তবে, অ্যাপ্লিকেশনগুলিকে XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টের সাথে এই কম্পোনেন্ট এবং এর ডেটা ব্যবহার করতে উৎসাহিত করা হয়। এই কম্পোনেন্ট XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT-এর সাথে একসাথে চালু করা যাবে না। কোনও অ্যাপ্লিকেশন যদি XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT এবং XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT দুটিকেই XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents -এ যোগ করে, তাহলে রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতেই হবে। অ্যাপ্লিকেশন আলাদা XrSpatialContextEXT-এ দুটি কম্পোনেন্ট চালু করার চেষ্টা করলে, রানটাইমকে অবশ্যই XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতে হবে।

মেশ ট্রায়াঙ্গেল সিম্যান্টিক লেবেল

কম্পোনেন্ট ওভারভিউ

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT স্পেশিয়াল এন্টিটির মেশের প্রতিটি ত্রিভুজের জন্য একটি সিঙ্গল সিম্যান্টিক লেবেল প্রদান করে।

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

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT তার ডেটার জন্য XrSpatialBufferEXT ব্যবহার করে। XrSpatialBufferEXT :: bufferId এই কম্পোনেন্টটি যে এন্টিটির মেশে আছে, তার ট্রায়াঙ্গেল সিম্যান্টিক লেবেল সহ বাফারকে দেখায়। XrSpatialBufferEXT :: bufferType অবশ্যই XR_SPATIAL_BUFFER_TYPE_UINT8_EXT হতে হবে। বাফারের মানগুলি XrSpatialMeshSemanticLabelEXT গণনার মানের সাথে মিলে যায়। XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT আছে এমন এন্টিটিতে অবশ্যই XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্ট থাকতে হবে। এই কম্পোনেন্টের মাধ্যমে প্রদান করা সিম্যান্টিক লেবেল অবশ্যই XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টের XrSpatialMeshDataEXT-এ প্রদান করা ত্রিভুজের সাথে মিলতে হবে। ত্রিভুজাকার সিম্যান্টিক লেবেল সহ স্পেশিয়াল বাফারের এলিমেন্ট সংখ্যা হল XrSpatialMeshDataEXT :: indexBuffer-এর এলিমেন্ট সংখ্যাকে ৩ দিয়ে ভাগ করলে যা পাওয়া যায়। এর অর্থ হল, এই কম্পোনেন্ট দ্বারা প্রদত্ত স্পেশিয়াল বাফার ডেটার নির্দিষ্ট ইন্ডেক্সে থাকা সিম্যান্টিক লেবেল XrSpatialMeshDataEXT :: indexBuffer-এ [index * 3], [index * 3 + 1], [index * 3 + 2] দ্বারা উপস্থাপিত ত্রিভুজের সাথে সম্পর্কিত।

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

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

typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;

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

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

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

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

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

কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই। তবে, অ্যাপ্লিকেশনগুলিকে XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT কম্পোনেন্টের সাথে এই কম্পোনেন্ট এবং এর ডেটা ব্যবহার করতে উৎসাহিত করা হয়। এই কম্পোনেন্ট XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT-এর সাথে একসাথে চালু করা যাবে না। কোনও অ্যাপ্লিকেশন যদি XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT এবং XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT দুটিকেই XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents -এ যোগ করে, তাহলে রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতেই হবে। অ্যাপ্লিকেশন আলাদা XrSpatialContextEXT-এ দুটি কম্পোনেন্ট চালু করার চেষ্টা করলে, রানটাইমকে অবশ্যই XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT রিটার্ন করতে হবে।

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

নতুন Enum

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

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • XrSpatialCapabilityEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • XrSpatialCapabilityFeatureEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • XrSpatialComponentTypeEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • XrStructureType এক্সটেন্ড করা হচ্ছে :

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

ইস্যু

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

  • সংশোধন ১, ০২-১১-২০২৫ (নিহভ জৈন, Google)

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