নাম স্ট্রিং XR_ANDROID_scene_meshing
এক্সটেনশন টাইপ ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর 464
রিভিশন 3
এক্সটেনশন এবং সংস্করণ নির্ভরতা OpenXR 1.0
সর্বশেষ সংশোধিত তারিখ 2025-05-15
আইপি স্থিতি কোন পরিচিত আইপি দাবি.
অবদানকারী স্পেন্সার কুইন, গুগল জ্যারেড ফাইন্ডার, গুগল আন্তোনিও ফন্টান, গুগল কেয়ার্ন ওভারটার্ফ, গুগল নিহাভ জৈন, গুগল সালার খান, গুগল সেবাস্টিয়ান ক্লোজ, গুগল জার্গেন স্টর্ম, গুগল ভিনি ডাসিলভা, গুগল রিকার্ডো ক্যাম্পবেল, গুগল
ওভারভিউ
এই এক্সটেনশনটি মেশের জন্য জাল ডেটা প্রদান করার উদ্দেশ্যে তৈরি করা হয়েছে যা আপনার পরিবেশের ভৌত বস্তুগুলিকে প্রায় প্রতিনিধিত্ব করে। এটি একটি নিমজ্জিত অ্যাপ্লিকেশনে আপনার দৃশ্যকে কল্পনা করার জন্য এবং ভার্চুয়াল বস্তুগুলিকে সংঘর্ষের মতো শারীরিক বস্তুর সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেওয়ার জন্য ব্যবহার করা যেতে পারে।
দৃশ্য মেশিং ডেটা সংবেদনশীল ব্যক্তিগত তথ্য হতে পারে এবং ব্যক্তিগত গোপনীয়তা এবং অখণ্ডতার সাথে ঘনিষ্ঠভাবে যুক্ত। এটি দৃঢ়ভাবে সুপারিশ করা হয় যে অ্যাপ্লিকেশনগুলি যেগুলি দৃশ্য মেশিং ডেটা সঞ্চয় করে বা স্থানান্তর করে সেগুলি সর্বদা ব্যবহারকারীকে সক্রিয় এবং নির্দিষ্ট গ্রহণযোগ্যতার জন্য অনুরোধ করে৷
অনুমতি
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির অবশ্যই তাদের ম্যানিফেস্টে তালিকাভুক্ত android.permission.SCENE_UNDERSTANDING_FINE
অনুমতি থাকতে হবে৷ android.permission.SCENE_UNDERSTANDING_FINE
অনুমতিটিকে একটি সংবেদনশীল অনুমতি হিসাবে বিবেচনা করা হয় কারণ এটি রানটাইমকে ব্যবহারকারীর পরিবেশ অধ্যয়ন করার অনুমতি দেয়।
এই ফাংশনগুলি ব্যবহার করার জন্য অ্যাপ্লিকেশনটিকে রানটাইমে অনুমতির অনুরোধ করতে হবে :
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(সুরক্ষা স্তর: বিপজ্জনক)
সিস্টেমের ক্ষমতা পরিদর্শন করুন
xrGetSystemProperties কল করার সময় একটি অ্যাপ্লিকেশন XrSystemSceneMeshingPropertiesANDROID কাঠামোকে XrSystemProperties- এ চেইন করে সিস্টেমটি দৃশ্য মেশিং করতে সক্ষম কিনা তা পরীক্ষা করতে পারে ।
XrSystemSceneMeshingPropertiesANDROID
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
supportsSceneMeshing
হল একটি XrBool32 , যা নির্দেশ করে যে সিস্টেম দৃশ্য মেশিং সমর্থন করে কিনা।
SceneMeshing supportsSceneMeshing
করলে XR_FALSE
হয়, সিস্টেম দৃশ্য মেশিং সমর্থন করে না। যখন xrCreateSceneMeshingTrackerANDROID- এ কল করা ব্যর্থ হবে তখন অ্যাপ্লিকেশানটির দৃশ্য মেশিং কার্যকারিতা ব্যবহার করা এড়ানো উচিত যখন supportsSceneMeshing
XR_FALSE
৷
SceneMeshing supportsSceneMeshing
করলে XR_TRUE
হয়, সিস্টেম দৃশ্য মেশিং সমর্থন করে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSystemSceneMeshingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshing
এক্সটেনশনটি অবশ্যই সক্রিয় করা উচিত -
type
XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
XrSceneMeshSemanticLabelSetANDROID
XrSceneMeshSemanticLabelSetANDROID গণনা দৃশ্য মেশিংয়ের জন্য শব্দার্থিক লেবেল সেটগুলি বর্ণনা করে। এই enum-এর প্রতিটি মান অন্য enum প্রতিনিধিত্ব করে যাতে শব্দার্থিক লেবেল থাকে। উদাহরণস্বরূপ, XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
মান XrSceneMeshSemanticLabelANDROID সেটটিকে উপস্থাপন করে।
typedef enum XrSceneMeshSemanticLabelSetANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
xrEnumerateSupportedSemanticLabelSetsANDROID
অ্যাপ্লিকেশনটি xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশন ব্যবহার করে সিস্টেম দ্বারা সমর্থিত শব্দার্থিক লেবেল সেট পেতে পারে ।
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
পরামিতি বিবরণ
-
instance
হল একটি XrInstance যা অ্যাপ্লিকেশন দ্বারা তৈরি করা হয়েছে। -
systemId
হল একটি XrSystemId হল xrGetSystem থেকে পুনরায় চেষ্টা করা হয়েছে। -
supportedSemanticLabelSetsInputCapacity
হলsupportedSemanticLabelSets
এর দৈর্ঘ্য। -
supportedSemanticLabelSetsOutputCount
হলsupportedSemanticLabelSets
অ্যারের শুরু থেকে রানটাইম দ্বারা পরিবর্তিত উপাদানগুলির সংখ্যা৷ -
supportedSemanticLabelSets
হল XrSceneMeshSemanticLabelSetANDROID এর একটি অ্যারে যেখানে সমর্থিত শব্দার্থিক লেবেল সেট রানটাইম দ্বারা লেখা হয়।
এটা প্রত্যাশিত যে প্রতিটি সিস্টেম অন্ততপক্ষে XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
সমর্থন করবে কারণ এই enum মানটি কোনো শব্দার্থিক লেবেল সেটের প্রতিনিধিত্ব করে না এবং অ্যাপ্লিকেশনটির ভার্টেক্স শব্দার্থের প্রয়োজন না হলে ব্যবহার করা যেতে পারে ।
একটি দৃশ্য মেশিং ট্র্যাকার হ্যান্ডেল তৈরি করুন
XrSceneMeshingTrackerANDROID
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
XrSceneMeshingTrackerANDROID হ্যান্ডেল দৃশ্য মেশিং এবং সম্পর্কিত সংস্থান পরিচালনার জন্য একটি দৃশ্য মেশিং ট্র্যাকার উপস্থাপন করে।
এই হ্যান্ডেলটি এই এক্সটেনশনে xrCreateSceneMeshSnapshotANDROID ব্যবহার করে একটি দৃশ্য জাল স্ন্যাপশট তৈরি করতে ব্যবহার করা যেতে পারে ।
xrCreateSceneMeshingTrackerANDROID
একটি অ্যাপ্লিকেশন xrCreateSceneMeshingTrackerANDROID ফাংশন ব্যবহার করে একটি XrSceneMeshingTrackerANDROID হ্যান্ডেল তৈরি করতে পারে ৷
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
পরামিতি বিবরণ
-
session
হল একটি XrSession যেখানে দৃশ্য মেশিং ট্র্যাকার সক্রিয় থাকবে। -
createInfo
হল একটি XrSceneMeshingTrackerCreateInfoANDROID কাঠামোর একটি পয়েন্টার যা তৈরি করা দৃশ্য মেশিং ট্র্যাকার বর্ণনা করতে ব্যবহৃত হয়। -
tracker
হল রিটার্ন করা XrSceneMeshingTrackerANDROID হ্যান্ডেল।
সিস্টেমটি দৃশ্য মেশিং সমর্থন না করলে, xrCreateSceneMeshingTrackerANDROID XR_ERROR_FEATURE_UNSUPPORTED
ফেরত দেবে। অ্যাপ্লিকেশনটি XrSystemSceneMeshingPropertiesANDROID কাঠামোর সাথে xrGetSystemProperties কল করে সিস্টেম সমর্থনের জন্য পরীক্ষা করতে পারে।
একটি দৃশ্য মেশিং ট্র্যাকার তৈরি করার সময় XrSceneMeshingTrackerCreateInfoANDROID::semanticLabelSet এ সিস্টেম দ্বারা সমর্থিত শুধুমাত্র শব্দার্থিক লেবেল সেটগুলি ব্যবহার করা যেতে পারে ৷ xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশনটি সমর্থিত শব্দার্থিক লেবেল সেটের তালিকা পেতে ব্যবহার করা যেতে পারে ।
যদি অ্যাপ্লিকেশনটি একটি অসমর্থিত semanticLabelSet
অনুরোধ করে, xrCreateSceneMeshingTrackerANDROID XR_ERROR_FEATURE_UNSUPPORTED
ফেরত দেবে।
xrCreateSceneMeshingTrackerANDROID হ্যান্ডেল দৃশ্য মেশিংয়ের জন্য সমস্ত সংস্থানের মালিক। দৃশ্য মেশিং অভিজ্ঞতার সাথে শেষ হয়ে গেলে, অ্যাপ্লিকেশনটিকে অবশ্যই xrDestroySceneMeshingTrackerANDROID ফাংশনের মাধ্যমে হ্যান্ডেলটি ধ্বংস করতে হবে।
XrSceneMeshingTrackerCreateInfoANDROID
XrSceneMeshingTrackerCreateInfoANDROID কাঠামো একটি XrSceneMeshingTrackerANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।
typedef struct XrSceneMeshingTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet;
XrBool32 enableNormals;
} XrSceneMeshingTrackerCreateInfoANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
semanticLabelSet
হল একটি XrSceneMeshSemanticLabelSetANDROID যা দৃশ্য মেশিংয়ের জন্য ব্যবহৃত শব্দার্থিক লেবেল সেট নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এটিXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
তে সেট করা থাকে, রানটাইম XrSceneSubmeshDataANDROID::vertexSemantics বাফার ক্ষেত্রটিকে উপেক্ষা করবে। -
enableNormals
হল একটি XrBool32 যা দৃশ্য মেশ ডেটা পাওয়ার সময় দৃশ্য মেশ বাফারে মেশ শীর্ষবিন্দুগুলির জন্য শীর্ষবিন্দুর স্বাভাবিকগুলি অন্তর্ভুক্ত করতে হবে কিনা তা নির্দিষ্ট করতে ব্যবহৃত হয়।
xrDestroySceneMeshingTrackerANDROID
xrDestroySceneMeshingTrackerANDROID ফাংশন tracker
এবং অন্তর্নিহিত সংস্থানগুলি প্রকাশ করে যখন দৃশ্য মেশিং অভিজ্ঞতার সাথে শেষ হয়।
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
পরামিতি বিবরণ
-
tracker
হল একটি XrSceneMeshingTrackerANDROID পূর্বে xrCreateSceneMeshingTrackerANDROID দ্বারা তৈরি।
একটি দৃশ্য জাল স্ন্যাপশট হ্যান্ডেল তৈরি করুন
XrSceneMeshSnapshotANDROID
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
XrSceneMeshSnapshotANDROID হ্যান্ডেল একটি দৃশ্য জাল স্ন্যাপশট উপস্থাপন করে। এটি xrCreateSceneMeshSnapshotANDROID ব্যবহার করে তৈরি করা হয়েছে যা মূলত ফাংশন কলের সময় দৃশ্য মেশ ডেটার একটি স্ন্যাপশট দখল করে।
এই হ্যান্ডেলটি xrGetAllSubmeshStatesANDROID এবং xrGetSubmeshDataANDROID ব্যবহার করে সাবমেশ তথ্য এবং ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে ।
XrSceneMeshSnapshotCreateInfoANDROID
XrSceneMeshSnapshotCreateInfoANDROID কাঠামো একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
baseSpace
হল একটি XrSpace যা রেফারেন্স স্পেস বর্ণনা করতে ব্যবহৃত হয় যেখানে দৃশ্যটি সাবমেশ পোজ তথ্য উপস্থাপন করা উচিত । -
time
হল XrTime যা সেই সময় বর্ণনা করে যখন দৃশ্য জাল প্রক্রিয়া করা হবে বা প্রদর্শিত হবে। -
boundingBox
হল একটি XrBoxf যা বাউন্ডিং বক্সের বর্ণনা দেয় যার মধ্যে দৃশ্য জাল পেতে হয়।
XrSceneMeshTrackingStateANDROID
XrSceneMeshTrackingStateANDROID গণনা দৃশ্য মেশিং ট্র্যাকারের জন্য ট্র্যাকিং অবস্থা বর্ণনা করে। এই enum এর প্রতিটি মান দৃশ্য মেশিং ট্র্যাকারের একটি অবস্থার প্রতিনিধিত্ব করে। এই enumটি XrSceneMeshSnapshotCreationResultANDROID কাঠামোতে মোড়ানো যা xrCreateSceneMeshSnapshotANDROID থেকে ফিরে এসেছে।
typedef enum XrSceneMeshTrackingStateANDROID {
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID = 0,
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID = 1,
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID = 2,
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID = 3,
XR_SCENE_MESH_TRACKING_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshTrackingStateANDROID;
XrSceneMeshSnapshotCreationResultANDROID
XrSceneMeshSnapshotCreationResultANDROID কাঠামো xrCreateSceneMeshSnapshotANDROID থেকে ফিরে আসা একটি দৃশ্য জাল স্ন্যাপশট তৈরির ফলাফল সঞ্চয় করে। ফলাফলের মধ্যে রয়েছে স্ন্যাপশট হ্যান্ডেল এবং স্ন্যাপশট তৈরির সময় দৃশ্য মেশিং ট্র্যাকারের ট্র্যাকিং অবস্থা।
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
snapshot
রানটাইম দ্বারা তৈরি একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল। -
trackingState
হল একটি XrSceneMeshTrackingStateANDROID যা স্ন্যাপশট তৈরির সময় দৃশ্য মেশিং ট্র্যাকারের অবস্থা বর্ণনা করে।
xrCreateSceneMeshSnapshotANDROID
অ্যাপ্লিকেশনটি xrCreateSceneMeshSnapshotANDROID ফাংশন ব্যবহার করে দৃশ্য মেশিং ট্র্যাকার থেকে একটি দৃশ্য জাল স্ন্যাপশট তৈরি করতে পারে । এই ফাংশনটি XrSceneMeshSnapshotCreationResultANDROID কাঠামোতে মোড়ানো XrSceneMeshTrackingStateANDROID সহ একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল প্রদান করে । হ্যান্ডেলটি প্রযুক্তিগতভাবে তৈরির সময় দৃশ্য জাল ডেটার একটি স্ন্যাপশট। এই হ্যান্ডেলটি যথাক্রমে xrGetAllSubmeshStatesANDROID এবং xrGetSubmeshDataANDROID ব্যবহার করে দৃশ্য জাল তথ্য এবং ডেটা অনুসন্ধান করতে ব্যবহার করা যেতে পারে ।
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
পরামিতি বিবরণ
-
tracker
হল একটি XrSceneMeshingTrackerANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshingTrackerANDROID দিয়ে তৈরি করা হয়েছিল। -
createInfo
হল একটি XrSceneMeshSnapshotCreateInfoANDROID কাঠামোর নির্দেশক যা দৃশ্য জাল স্ন্যাপশট তৈরি করার জন্য প্রয়োজনীয় তথ্য ধারণ করে। -
outSnapshotCreationResult
হল একটি XrSceneMeshSnapshotCreationResultANDROID অবজেক্টের একটি পয়েন্টার যা স্ন্যাপশট তৈরির ফলাফলের সাথে রানটাইম দ্বারা পপুলেট করা হয়।
দৃশ্য জাল স্ন্যাপশট থেকে দৃশ্য জাল তথ্য অর্জন
XrSceneSubmeshStateANDROID
XrSceneSubmeshStateANDROID একটি সাবমেশ বর্ণনা করে। এতে সাবমেশ সম্পর্কে প্রাথমিক তথ্য রয়েছে (আইডি, পোজ, সীমানা, সর্বশেষ আপডেট করা সময়)।
typedef struct XrSceneSubmeshStateANDROID {
XrStructureType type;
void* next;
XrUuid submeshId;
XrTime lastUpdatedTime;
XrPosef submeshPoseInBaseSpace;
XrExtent3Df bounds;
} XrSceneSubmeshStateANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
submeshId
হল একটি XrUuid যা সাবমেশকে চিহ্নিত করে। -
lastUpdatedTime
হল একটি XrTime সেই সময়ের প্রতিনিধিত্ব করে যখন সাবমেশ শেষবার আপডেট করা হয়েছিল। -
submeshPoseInBaseSpace
হল একটি XrPosef যা দৃশ্য জাল স্ন্যাপশট তৈরি করতে ব্যবহৃত বেস স্পেসে সাবমেশের ভঙ্গি উপস্থাপন করে। এটিও সাবমেশ বাউন্ডিং বাক্সের কেন্দ্রের ভঙ্গি। -
bounds
হল একটি XrExtent3Df যা সাবমেশকে ঘেরা বাউন্ডিং বাক্সের মাত্রা বর্ণনা করে। এই সীমানা বেস স্পেসে রয়েছে যা দৃশ্য জাল হ্যান্ডেল তৈরি করতে ব্যবহৃত হয়েছিল।
xrGetAllSubmeshStatesANDROID
অ্যাপ্লিকেশানটি xrGetAllSubmeshStatesANDROID ফাংশন ব্যবহার করে দৃশ্য জালের সমস্ত সাবমেশের অবস্থা পেতে পারে৷ এতে অ্যাপ্লিকেশনটিকে সাবমেশ নির্বাচন করার অনুমতি দেওয়ার জন্য প্রাথমিক তথ্য তথ্য রয়েছে যার জন্য অ্যাপ্লিকেশনটি ডেটা চায়৷ এই ফাংশনটি 2-কল ইডিয়মে ব্যবহার করা যেতে পারে ।
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
পরামিতি বিবরণ
-
snapshot
হল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID দিয়ে তৈরি করা হয়েছিল। -
submeshStateCapacityInput
হলsubmeshStates
এর দৈর্ঘ্য। -
submeshStateCountOutput
হলsubmeshStates
উপাদানগুলির সংখ্যা যা অ্যারের শুরু থেকে রানটাইম দ্বারা পরিবর্তিত হয়। -
submeshStates
হল XrSceneSubmeshStateANDROID কাঠামোর একটি অ্যারে যেখানে রানটাইম দৃশ্য জালের সমস্ত সাবমেশের অবস্থা আউটপুট করবে।
XrSceneSubmeshDataANDROID
XrSceneSubmeshDataANDROID সাবমেশ আইডি সহ একটি সাবমেশের জন্য ত্রিভুজ ডেটা রয়েছে৷ এই কাঠামোটি সাবমেশের ডেটা পেতে xrGetSubmeshDataANDROID- এ ব্যবহার করা হয়। অ্যাপ্লিকেশনটিকে অবশ্যই এই কাঠামোর সাবমেশ আইডি এবং বরাদ্দকৃত বাফারগুলিতে বাফার পয়েন্টার সেট করতে হবে যাতে সাবমেশের জন্য ফেরত ডেটা বরাদ্দ করা বাফারগুলিতে জমা করা যায়। অ্যাপ্লিকেশনটি xrGetSubmeshDataANDROID-কে 2-কল শব্দ হিসাবে ব্যবহার করতে পারে যেখানে প্রথম কলের জন্য অ্যাপ্লিকেশনটিকে সাবমেশ আইডি সেট করতে হবে এবং সাবমেশ ডেটার জন্য প্রয়োজনীয় বাফারগুলির আকারগুলি পেতে হবে এবং তারপরে অ্যাপ্লিকেশনটি বাফারগুলি বরাদ্দ করতে পারে এবং দ্বিতীয় কলে ডেটা পেতে পারে৷
typedef struct XrSceneSubmeshDataANDROID {
XrStructureType type;
const void* next;
XrUuid submeshId;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector3f* vertexPositions;
XrVector3f* vertexNormals;
uint8_t* vertexSemantics;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t* indices;
} XrSceneSubmeshDataANDROID;
সদস্য বিবরণ
-
type
হল এই কাঠামোর XrStructureType । -
next
হলNULL
বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
submeshId
হল একটি XrUuid যা সাবমেশকে চিহ্নিত করে। -
vertexCapacityInput
হলvertexPositions
,vertexNormals
এবংvertexSemantics
এর দৈর্ঘ্য। -
vertexCountOutput
হলvertexPositions
,vertexNormals
এবংvertexSemantics
এর উপাদানের সংখ্যা যা অ্যারের শুরু থেকে রানটাইম দ্বারা পরিবর্তিত হয়েছে। -
vertexPositions
হল XrVector3f এর একটি অ্যারে যেখানে রানটাইম সাবমেশের শীর্ষস্থানীয় অবস্থানগুলিকে আউটপুট করবে। -
vertexNormals
হল XrVector3f এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ভার্টেক্স নরমাল আউটপুট করবে। এই ক্ষেত্রটিNULL
ছেড়ে দেওয়া যেতে পারে যদি অ্যাপ্লিকেশনটি নরমাল অক্ষম করে একটি ট্র্যাকার তৈরি করে। -
vertexSemantics
হলuint8_t
এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ভার্টেক্স শব্দার্থকে আউটপুট করবে। যদি অ্যাপ্লিকেশনটিXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
শব্দার্থিক লেবেল সেট সহ একটি ট্র্যাকার তৈরি করে তবে এই ক্ষেত্রটিNULL
ছেড়ে দেওয়া যেতে পারে ৷ -
indexCapacityInput
হলindices
দৈর্ঘ্য। -
indexCountOutput
হলindices
উপাদানগুলির সংখ্যা যা অ্যারের শুরু থেকে রানটাইম দ্বারা পরিবর্তিত হয়েছে। -
indices
হলuint32_t
এর একটি অ্যারে যেখানে রানটাইম সাবমেশের সূচকগুলিকে আউটপুট করবে।
xrGetSubmeshDataANDROID
অ্যাপ্লিকেশনটি সাবমেশের একটি নির্বাচিত তালিকার জন্য ডেটা পেতে xrGetSubmeshDataANDROID ফাংশন ব্যবহার করতে পারে । এই ফাংশনটি 2-কল ইডিয়মে ব্যবহার করা যেতে পারে । প্রথম কলে, অ্যাপ্লিকেশনটিকে অবশ্যই একটি বৈধ সাবমেশ আইডি সেট করতে হবে (যেমন: একই দৃশ্যের মেশ স্ন্যাপশট সহ xrGetAllSubmeshStatesANDROID থেকে পুনরুদ্ধারযোগ্য) এবং সাবমেশ ডেটার জন্য প্রয়োজনীয় বাফারগুলির আকার পেতে সাবমেশের নির্বাচিত তালিকার প্রতিটি উপাদানের জন্য শূন্য ক্ষমতা। দ্বিতীয় কলে, অ্যাপ্লিকেশনটিকে সাবমেশের ডেটা পাওয়ার জন্য বাফারগুলির ক্ষমতা সহ সাবমেশের নির্বাচিত তালিকার প্রতিটি উপাদানের জন্য একটি বরাদ্দকৃত বাফারে বাফার পয়েন্টার সেট করতে হবে ।
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
পরামিতি বিবরণ
-
snapshot
হল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID দিয়ে তৈরি করা হয়েছিল। -
submeshDataCount
হলinoutSubmeshData
দৈর্ঘ্য। -
inoutSubmeshData
হল XrSceneSubmeshDataANDROID- এর একটি অ্যারে যেখানে প্রতিটি উপাদান সাবমেশ আইডির উপর ভিত্তি করে রানটাইম দ্বারা মেশ ডেটা দিয়ে পপুলেট করা হবে।
XrSceneMeshSemanticLabelANDROID
XrSceneMeshSemanticLabelANDROID গণনা হল শব্দার্থিক লেবেলের ডিফল্ট সেট যা জাল শীর্ষবিন্দুর কোন ভৌত পরিবেশে জাল শীর্ষবিন্দু রয়েছে তা বর্ণনা করতে ব্যবহার করা যেতে পারে । এই enum সেটটি XrSceneMeshSemanticLabelSetANDROID- এ XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
মান দ্বারা প্রতিনিধিত্ব করা হয়।
typedef enum XrSceneMeshSemanticLabelANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID = 2,
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID = 3,
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID = 4,
XR_SCENE_MESH_SEMANTIC_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelANDROID;
একটি দৃশ্য জাল স্ন্যাপশট ধ্বংস
xrDestroySceneMeshSnapshotANDROID
অ্যাপ্লিকেশানটি xrDestroySceneMeshSnapshotANDROID ফাংশন ব্যবহার করে একটি দৃশ্য জাল স্ন্যাপশট ধ্বংস করতে পারে । একবার হ্যান্ডেলটি ধ্বংস হয়ে গেলে, অ্যাপ্লিকেশনটি আর সাবমেশ তথ্য বা ডেটা পেতে এটি ব্যবহার করতে পারবে না। ট্র্যাকারটি ধ্বংস হয়ে গেলে হ্যান্ডেলটি স্বয়ংক্রিয়ভাবে ধ্বংস হয়ে যায় কারণ ট্র্যাকার হ্যান্ডেলটি দৃশ্য জাল স্ন্যাপশট হ্যান্ডেলের মূল।
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
পরামিতি বিবরণ
-
snapshot
হল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID দিয়ে তৈরি করা হয়েছিল যা এই ফাংশন দ্বারা ধ্বংস হয়ে যাবে।
দৃশ্য মেশিং জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোড প্রদর্শন করে কিভাবে রেন্ডারিংয়ের জন্য দৃশ্য জাল ডেটা অ্যাক্সেস করতে হয়।
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup
XrSpace appPlaySpace; // Created at app startup
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateSceneMeshingTrackerANDROID xrCreateSceneMeshingTrackerANDROID;
PFN_xrDestroySceneMeshingTrackerANDROID xrDestroySceneMeshingTrackerANDROID;
PFN_xrEnumerateSupportedSemanticLabelSetsANDROID xrEnumerateSupportedSemanticLabelSetsANDROID;
PFN_xrCreateSceneMeshSnapshotANDROID xrCreateSceneMeshSnapshotANDROID;
PFN_xrDestroySceneMeshSnapshotANDROID xrDestroySceneMeshSnapshotANDROID;
PFN_xrGetAllSubmeshStatesANDROID xrGetAllSubmeshStatesANDROID;
PFN_xrGetSubmeshDataANDROID xrGetSubmeshDataANDROID;
// Inspect system capability
XrSystemSceneMeshingPropertiesANDROID sceneMeshingProps = {
.type = XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &sceneMeshingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!sceneMeshingProps.supportsSceneMeshing) {
// scene meshing is not supported.
return;
}
uint32_t supportedsemanticLabelSetsCount = 0;
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, 0, &supportedsemanticLabelSetsCount, nullptr);
std::vector<XrSceneMeshSemanticLabelSetANDROID> supportedSemanticLabelSets(
supportedsemanticLabelSetsCount);
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, supportedsemanticLabelSetsCount,
&supportedsemanticLabelSetsCount, supportedSemanticLabelSets.data());
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID;
// Check if system supports XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
if (std::find(supportedSemanticLabelSets.begin(), supportedSemanticLabelSets.end(),
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID) !=
supportedSemanticLabelSets.end()) {
semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID;
}
XrSceneMeshingTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID,
.semanticLabelSet = semanticLabelSet,
.enableNormals = XR_TRUE
};
XrSceneMeshingTrackerANDROID tracker = XR_NULL_HANDLE;
CHK_XR(xrCreateSceneMeshingTrackerANDROID(session, &trackerCreateInfo, &tracker));
XrSceneMeshSnapshotCreationResultANDROID snapshotResult = {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID,
.snapshot = XR_NULL_HANDLE
};
XrSceneMeshSnapshotANDROID& snapshot = snapshotResult.snapshot;
XrSceneMeshSnapshotCreateInfoANDROID createInfo = {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
};
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrBoxf box; // populated with the bounding box of the camera frustum
// ...
createInfo.baseSpace = appPlaySpace;
createInfo.time = time;
createInfo.boundingBox = box;
// Grab the scene mesh snapshot. This way the app can: know all of the submesh infos,
// choose the appropriate submeshes for which to get data, allocate the necessary
// buffer for those submeshes, and then get the data.
CHK_XR(xrCreateSceneMeshSnapshotANDROID(tracker, &createInfo, &snapshotResult));
// check the tracking state
if (snapshotResult.trackingState == XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID) {
// unrecoverable error. Exit the app.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
break;
} else if (snapshotResult.trackingState != XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID) {
// The tracker is not tracking. Try again later.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
continue;
}
// 2-call idiom for getting submesh states
std::vector<XrSceneSubmeshStateANDROID> states;
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
states.resize(submeshCount);
for (XrSceneSubmeshStateANDROID& state : states) {
state = {.type = XR_TYPE_SCENE_SUBMESH_STATE_ANDROID};
}
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, submeshCount, &submeshCount, states.data()));
// To store the poses for the selected submeshes
std::vector<XrPosef> submeshesPoses;
submeshesPoses.reserve(submeshCount);
std::vector<XrSceneSubmeshDataANDROID> submeshes;
submeshes.reserve(submeshCount);
// Iterate the states and determine which submeshes the app wants data for
for (XrSceneSubmeshStateANDROID& state : states) {
// Modify this bool as necessary by looking at states. Maybe state.lastUpdatedTime
// is below a threshold or maybe the bounding box does not intersect with camera view
// frustum (The submesh will be culled).
bool needed;
if (needed) {
// Add the selected submesh to the submeshes list. Set the capacity
// zero for now since the size of the buffer will be determined later.
XrSceneSubmeshDataANDROID submesh = {
.type = XR_TYPE_SCENE_SUBMESH_DATA_ANDROID,
.submeshId = state.submeshId,
.vertexCapacityInput = 0,
.vertexCountOutput = 0,
.vertexPositions = nullptr,
.vertexNormals = nullptr,
.vertexSemantics = nullptr,
.indexCapacityInput = 0,
.indexCountOutput = 0,
.indices = nullptr,
};
submeshes.push_back(submesh);
submeshesPoses.push_back(state.submeshPoseInBaseSpace);
}
}
// Grab the data for the selected submeshes using the 2-call idiom.
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
for (XrSceneSubmeshDataANDROID& submesh : submeshes) {
submesh.vertexCapacityInput = submesh.vertexCountOutput;
submesh.vertexCountOutput = 0;
submesh.vertexPositions = new XrVector3f[submesh.vertexCountOutput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCountOutput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCountOutput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCountOutput];
}
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
// Destroy the scene mesh snapshot since we have finally grabbed the submeshes data. In
// next iteration app can: create a new one to get latest mesh data
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
// Iterate the submeshes and get the vertex positions, vertex normals and
// vertex semantics data for the selected submeshes
for (uint32_t i = 0; i < submeshes.size(); i++) {
XrSceneSubmeshDataANDROID& data = submeshes[i];
XrVector3f* vertexPositions = data.vertexPositions;
XrVector3f* vertexNormals = data.vertexNormals;
XrSceneMeshSemanticLabelANDROID* vertexSemantics =
reinterpret_cast<XrSceneMeshSemanticLabelANDROID*>(data.vertexSemantics);
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
নতুন অবজেক্টের ধরন
নতুন Enum ধ্রুবক
XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROID
-
XR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
-
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID
-
XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
-
XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID
-
XR_TYPE_SCENE_SUBMESH_STATE_ANDROID
-
XR_TYPE_SCENE_SUBMESH_DATA_ANDROID
নতুন Enums
নতুন কাঠামো
- XrSystemSceneMeshingPropertiesANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneSubmeshStateANDROID
- XrSceneSubmeshDataANDROID
নতুন ফাংশন
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
ইস্যু
সংস্করণ ইতিহাস
- রিভিশন 3, 2025-05-15 (সালার খান) ** প্রাথমিক এক্সটেনশন বর্ণনা
OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।