XR_ANDROID_scene_meshing
নামের স্ট্রিং
XR_ANDROID_scene_meshing
এক্সটেনশনের ধরন
ইনস্ট্যান্স এক্সটেনশন
রেজিস্টার করা এক্সটেনশন নম্বর
719
সংশোধন
3
অনুমোদনের স্ট্যাটাস
অনুমোদিত নয়
এক্সটেনশন ও ভার্সন ডিপেন্ডেন্সি
শেষবার পরিবর্তন করার তারিখ
2025-05-15
IP স্ট্যাটাস
IP সংক্রান্ত কোনও দাবি নেই।
কন্ট্রিবিউটর
স্পেন্সার কুইন, Google
জ্যারেড ফাইন্ডার, Google
অ্যান্টোনিও ফন্টান, Google
কেয়ার্ন ওভারটার্ফ, Google
নিহাভ জৈন, Google
সালার খান, Google
সেবাস্টিয়ান ক্লোজ, Google
ইয়ুর্গেন স্টুর্ম, Google
ভিনি ডাসিলভা, Google
রিকার্ডো ক্যাম্পবেল, Google
এক নজরে
এই এক্সটেনশনের উদ্দেশ্য হল এমন মেশ প্রদান করা যা ব্যবহারকারীর পরিবেশে থাকা ফিজিক্যাল অবজেক্টকে আনুমানিক উপস্থাপন করে।
অ্যাপ্লিকেশন এই এক্সটেনশন ব্যবহার করে দৃশ্যটি দেখতে এবং ভার্চুয়াল অবজেক্টগুলিকে সংঘর্ষের মতো শারীরিক অবজেক্টগুলির সাথে ইন্টার্যাক্ট করতে দিতে পারে।
রানটাইম দ্বারা সিন মেশ ডেটা জেনারেট করা হয় এবং XrSceneMeshingTrackerANDROID ও XrSceneMeshSnapshotANDROID ব্যবহার করে অ্যাপ্লিকেশনের সাথে শেয়ার করা হয়। অ্যাপ্লিকেশনগুলি xrGetAllSubmeshStatesANDROID থেকে ফেরত আসা XrSceneSubmeshStateANDROID-এর মাধ্যমে দৃশ্য সাবমেশ তথ্যের মানগুলি অ্যাক্সেস করতে পারে। অ্যাপ্লিকেশন xrGetSubmeshDataANDROID থেকে ফেরত আসা XrSceneSubmeshDataANDROID-এর মাধ্যমে সিন সাবমেশ ডেটার ভ্যালু অ্যাক্সেস করতে পারে।
সিন মেশিং ডেটা হল সংবেদনশীল ব্যক্তিগত তথ্য এবং এটি ব্যক্তিগত গোপনীয়তা ও সততার সাথে ঘনিষ্ঠভাবে যুক্ত। সিন মেশিং ডেটা স্টোর বা ট্রান্সফার করে এমন অ্যাপ্লিকেশনকে ব্যবহারকারীর থেকে সক্রিয় ও নির্দিষ্ট সম্মতি নেওয়ার জন্য বিশেষভাবে সাজেস্ট করা হয়।
অনুমতি
Android অ্যাপ্লিকেশনের ম্যানিফেস্টে android.permission.SCENE_UNDERSTANDING_FINE অনুমতি তালিকাভুক্ত থাকতেই হবে। android.permission.SCENE_UNDERSTANDING_FINE অনুমতিকে সংবেদনশীল অনুমতি হিসেবে বিবেচনা করা হয় কারণ এটি রানটাইমকে ব্যবহারকারীর পরিবেশ অধ্যয়ন করার অনুমতি দেয়।
এইসব ফাংশন ব্যবহার করার জন্য অ্যাপ্লিকেশনকে রানটাইমে অবশ্যই অনুমতি চাইতে হবে:
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(সুরক্ষা লেভেল: বিপজ্জনক)
সিস্টেমের ক্ষমতা পরীক্ষা করা
XrSystemSceneMeshingPropertiesANDROID স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।supportsSceneMeshingহল একটিXrBool32, যা নির্দেশ করে যে সিস্টেমটি সিন মেশিং সমর্থন করে কিনা।
xrGetSystemProperties কল করার সময় XrSystemProperties-এর সাথে XrSystemSceneMeshingPropertiesANDROID স্ট্রাকচার চেইন করার মাধ্যমে সিস্টেম সিন মেশিং করতে সক্ষম কিনা তা কোনও অ্যাপ্লিকেশন চেক করতে পারে।
রানটাইম supportsSceneMeshing-এর জন্য XR_FALSE রিটার্ন করলে, সিস্টেম সিন মেশিং সাপোর্ট করে না এবং তাই xrCreateSceneMeshingTrackerANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED অবশ্যই রিটার্ন করতে হবে। supportsSceneMeshing, XR_FALSE হলে, অ্যাপ্লিকেশনটির সিন মেশিং কার্যকারিতা ব্যবহার করা এড়ানো উচিত।
রানটাইম supportsSceneMeshing-এর জন্য XR_TRUE রিটার্ন করলে, সিস্টেম সিন মেশিং সাপোর্ট করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSystemSceneMeshingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
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_DEFAULT2_ANDROID = 1000801000,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
গুনতির ভ্যালুর অর্থ হল:
Enum-এর বিবরণ
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
এই সিম্যান্টিক লেবেল সেট সিম্যান্টিক লেবেলের অনুপস্থিতি দেখায়।
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
এই সিম্যান্টিক লেবেল সেট XrSceneMeshSemanticLabelANDROID-কে দেখায়।
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID
এই সিম্যান্টিক লেবেল সেট XrSceneMeshSemanticLabel2ANDROID-কে দেখায়। (XR_ANDROID_scene_meshing_semantic_label2 এক্সটেনশন দ্বারা যোগ করা হয়েছে)
xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
প্যারামিটারের বিবরণ
instanceহল অ্যাপ্লিকেশন দ্বারা তৈরি করা একটি XrInstance।systemIdহল একটিXrSystemIdযা xrGetSystem থেকে আবার চেষ্টা করা হয়েছে।supportedSemanticLabelSetsInputCapacityহলsupportedSemanticLabelSets-এর ক্যাপাসিটি অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনতে 0।supportedSemanticLabelSetsOutputCountহলsupportedSemanticLabelSets-এর সংখ্যার একটি পয়েন্টার, অথবাsupportedSemanticLabelSetsInputCapacityঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।supportedSemanticLabelSetsহল XrSceneMeshSemanticLabelSetANDROID-এর অ্যারের একটি পয়েন্টার।supportedSemanticLabelSetsInputCapacity০ হলে এটিNULLহতে পারে।- প্রয়োজনীয়
supportedSemanticLabelSetsসাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার অধ্যায় দেখুন।
অ্যাপ্লিকেশনটি xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশন ব্যবহার করে সিস্টেম দ্বারা সমর্থিত সিম্যান্টিক লেবেল সেটগুলি গণনা করতে পারে।
প্রতিটি সিস্টেমকে অবশ্যই কমপক্ষে XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID-কে সাপোর্ট করতে হবে কারণ এই enum ভ্যালু কোনও সিম্যান্টিক লেবেল সেটকে দেখায় না এবং অ্যাপ্লিকেশনটির ভার্টেক্স সিম্যান্টিক্সের প্রয়োজন না হলে এটি ব্যবহার করা যেতে পারে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrEnumerateSupportedSemanticLabelSetsANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
instanceঅবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে -
supportedSemanticLabelSetsOutputCountঅবশ্যইuint32_tভ্যালুর পয়েন্টার হতে হবে -
supportedSemanticLabelSetsInputCapacityযদি0না হয়, তাহলেsupportedSemanticLabelSetsঅবশ্যইsupportedSemanticLabelSetsInputCapacityXrSceneMeshSemanticLabelSetANDROID মানের অ্যারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
দৃশ্য মেশিং ট্র্যাকার হ্যান্ডেল তৈরি করুন
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
XrSceneMeshingTrackerANDROID হ্যান্ডেল, সিন মেশিং এবং সংশ্লিষ্ট রিসোর্স ম্যানেজ করার জন্য সিন মেশিং ট্র্যাকারকে দেখায়।
এই এক্সটেনশনে xrCreateSceneMeshSnapshotANDROID ব্যবহার করে সিন মেশ স্ন্যাপশট তৈরি করতে এই হ্যান্ডেল ব্যবহার করা যেতে পারে।
xrCreateSceneMeshingTrackerANDROID ফাংশনটি এভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
প্যারামিটারের বিবরণ
sessionহল একটি XrSession যেখানে সিন মেশিং ট্র্যাকার অ্যাক্টিভ থাকবে।createInfoহল XrSceneMeshingTrackerCreateInfoANDROID স্ট্রাকচারের একটি পয়েন্টার যা তৈরি করা হবে এমন সিন মেশিং ট্র্যাকারের বিবরণ দিতে ব্যবহার করা হয়।trackerহল রিটার্ন করা XrSceneMeshingTrackerANDROID হ্যান্ডেল।
কোনও অ্যাপ্লিকেশন xrCreateSceneMeshingTrackerANDROID ফাংশন ব্যবহার করে XrSceneMeshingTrackerANDROID হ্যান্ডেল তৈরি করতে পারে।
সিস্টেমে সিন মেশিং কাজ না করলে, রানটাইম অবশ্যই xrCreateSceneMeshingTrackerANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করবে। এই ক্ষেত্রে, xrGetSystemProperties ফাংশন কল করা হলে, রানটাইমকে XrSystemSceneMeshingPropertiesANDROID :: supportsSceneMeshing-এর জন্য XR_FALSE রিটার্ন করতেই হবে, যাতে অ্যাপ্লিকেশনটি সিন মেশিং ট্র্যাকার তৈরি করা এড়াতে পারে।
অ্যাপ্লিকেশনটিকে অবশ্যই শুধুমাত্র সেই সিম্যান্টিক লেবেল সেট ব্যবহার করতে হবে যা সিস্টেমে XrSceneMeshingTrackerCreateInfoANDROID :: semanticLabelSet-এ সমর্থিত, যখন একটি সিন মেশিং ট্র্যাকার তৈরি করা হয়। অ্যাপ্লিকেশনটি যদি কাজ করে না এমন সিন মেশ ভার্টেক্স সিম্যান্টিক লেবেল সেট ব্যবহার করে, তাহলে রানটাইম অবশ্যই xrCreateSceneMeshingTrackerANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করবে।
অ্যাপ্লিকেশনটি xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশনের মাধ্যমে সমর্থিত সিম্যান্টিক লেবেল সেটের তালিকা গণনা করতে পারে।
xrCreateSceneMeshingTrackerANDROID হ্যান্ডেল সিন মেশিংয়ের সব রিসোর্স ম্যানেজ করে। সিন মেশিং অভিজ্ঞতা শেষ হয়ে গেলে, অ্যাপ্লিকেশনকে xrDestroySceneMeshingTrackerANDROID ফাংশনের মাধ্যমে হ্যান্ডেলটি অবশ্যই ধ্বংস করতে হবে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrCreateSceneMeshingTrackerANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
sessionঅবশ্যই একটি সঠিক XrSession হ্যান্ডেল হতে হবে -
createInfoঅবশ্যই একটি সঠিক XrSceneMeshingTrackerCreateInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে -
trackerঅবশ্যই XrSceneMeshingTrackerANDROID হ্যান্ডেলের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrSceneMeshingTrackerCreateInfoANDROID স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
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যা দৃশ্য মেশ ডেটা পাওয়ার সময় দৃশ্য মেশ বাফারে মেশ ভার্টেক্সের জন্য ভার্টেক্স নরমাল অন্তর্ভুক্ত করা হবে কিনা তা নির্দিষ্ট করতে ব্যবহৃত হয়।
XrSceneMeshingTrackerCreateInfoANDROID স্ট্রাকচারটি XrSceneMeshingTrackerANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSceneMeshingTrackerCreateInfoANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
semanticLabelSetঅবশ্যই একটি সঠিক XrSceneMeshSemanticLabelSetANDROID ভ্যালু হতে হবে
xrDestroySceneMeshingTrackerANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
প্যারামিটারের বিবরণ
trackerহল একটি XrSceneMeshingTrackerANDROID যা আগে xrCreateSceneMeshingTrackerANDROID দ্বারা তৈরি করা হয়েছে।
সিন মেশিং অভিজ্ঞতা শেষ হয়ে গেলে, xrDestroySceneMeshingTrackerANDROID ফাংশনটি tracker এবং অন্তর্নিহিত রিসোর্স রিলিজ করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrDestroySceneMeshingTrackerANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
trackerঅবশ্যই একটি সঠিক XrSceneMeshingTrackerANDROID হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
trackerএবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
দৃশ্য মেশ স্ন্যাপশট হ্যান্ডেল তৈরি করুন
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
XrSceneMeshSnapshotANDROID হ্যান্ডেল একটি সিন মেশ স্ন্যাপশটকে দেখায়। এই স্ন্যাপশট xrCreateSceneMeshSnapshotANDROID ব্যবহার করে তৈরি করা হয় যা ফাংশন কলের সময় সিন মেশ ডেটার স্ন্যাপশট নেয়।
এই হ্যান্ডেল ব্যবহার করে xrGetAllSubmeshStatesANDROID এবং xrGetSubmeshDataANDROID-এর মাধ্যমে সাবমেশ সংক্রান্ত তথ্য ও ডেটা ফিরিয়ে আনা যেতে পারে।
xrCreateSceneMeshSnapshotANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
প্যারামিটারের বিবরণ
trackerহল একটি XrSceneMeshingTrackerANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshingTrackerANDROID দিয়ে তৈরি করা হয়েছে।createInfoহল XrSceneMeshSnapshotCreateInfoANDROID স্ট্রাকচারের পয়েন্টার, যাতে সিন মেশ স্ন্যাপশট তৈরি করার জন্য প্রয়োজনীয় তথ্য থাকে।outSnapshotCreationResultহল একটি XrSceneMeshSnapshotCreationResultANDROID অবজেক্টের পয়েন্টার যা স্ন্যাপশট তৈরির ফলাফল সহ রানটাইম দ্বারা পপুলেট করা হয়।
অ্যাপ্লিকেশনটি সিন মেশিং ট্র্যাকার থেকে সিন মেশ স্ন্যাপশট তৈরি করতে xrCreateSceneMeshSnapshotANDROID ফাংশন ব্যবহার করতে পারে। এই ফাংশন XrSceneMeshSnapshotCreationResultANDROID স্ট্রাকচারে র্যাপ করা XrSceneMeshTrackingStateANDROID-এর সাথে XrSceneMeshSnapshotANDROID হ্যান্ডেল ফিরিয়ে দেয়। হ্যান্ডেলটি টেকনিক্যালি তৈরির সময় দৃশ্য মেশ ডেটার একটি স্ন্যাপশট। এই হ্যান্ডেলটি xrGetAllSubmeshStatesANDROID এবং xrGetSubmeshDataANDROID ব্যবহার করে যথাক্রমে সিন মেশ তথ্য এবং ডেটা কোয়েরি করতে ব্যবহার করা যেতে পারে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrCreateSceneMeshSnapshotANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
trackerঅবশ্যই একটি সঠিক XrSceneMeshingTrackerANDROID হ্যান্ডেল হতে হবে -
createInfoঅবশ্যই একটি সঠিক XrSceneMeshSnapshotCreateInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে -
outSnapshotCreationResultঅবশ্যই XrSceneMeshSnapshotCreationResultANDROID স্ট্রাকচারের পয়েন্টার হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALID
XrSceneMeshSnapshotCreateInfoANDROID স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।baseSpaceহল একটি XrSpace যার মধ্যে দৃশ্যের সাবমেশ পোজ সংক্রান্ত তথ্য দেখানো হয়।timeহলXrTimeযা সেই সময়কে বর্ণনা করে যখন দৃশ্য মেশ প্রসেস বা ডিসপ্লে করা হবে, সাধারণত XrFrameState ::predictedDisplayTime.boundingBoxহল একটি XrBoxf যা বাউন্ডিং বক্সের বর্ণনা দেয় যার মধ্যে দৃশ্য মেশ পাওয়া যায়।
XrSceneMeshSnapshotCreateInfoANDROID স্ট্রাকচারটি XrSceneMeshSnapshotANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSceneMeshSnapshotCreateInfoANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
baseSpaceঅবশ্যই একটি সঠিক XrSpace হ্যান্ডেল হতে হবে
XrSceneMeshSnapshotCreationResultANDROID স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
মেম্বারদের বিবরণ
typeহল এই স্ট্রাকচারের XrStructureType।nextহলNULLঅথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।snapshotহল রানটাইম দ্বারা তৈরি করা একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল।trackingStateহল একটি XrSceneMeshTrackingStateANDROID যা স্ন্যাপশট তৈরির সময় সিন মেশিং ট্র্যাকারের অবস্থা বর্ণনা করে।
XrSceneMeshSnapshotCreationResultANDROID স্ট্রাকচার xrCreateSceneMeshSnapshotANDROID থেকে রিটার্ন করা সিন মেশ স্ন্যাপশট তৈরির ফলাফল স্টোর করে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSceneMeshSnapshotCreationResultANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
snapshotঅবশ্যই একটি সঠিক XrSceneMeshSnapshotANDROID হ্যান্ডেল হতে হবে -
trackingStateঅবশ্যই একটি সঠিক XrSceneMeshTrackingStateANDROID ভ্যালু হতে হবে
XrSceneMeshTrackingStateANDROID এনিউমারেশন, সিন মেশিং ট্র্যাকারের জন্য ট্র্যাকিং স্টেট বর্ণনা করে। এই enum-এর প্রতিটি ভ্যালু দৃশ্য মেশিং ট্র্যাকারের একটি অবস্থাকে দেখায়।
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;
গুনতির ভ্যালুর অর্থ হল:
Enum-এর বিবরণ
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID
ট্র্যাকারটি এখনও মেশ ডেটা প্রদান করার জন্য প্রস্তুত নয়।
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID
ট্র্যাকারটি সক্রিয়ভাবে ট্র্যাক করছে।
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID
শেষ মেশ আপডেটের পর থেকে ইন্টিগ্রেট করার জন্য ট্র্যাকার সঠিক পরিমাপের জন্য অপেক্ষা করছে।
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID
ট্র্যাকার একাধিক সাইকেলের জন্য সঠিক পরিমাপ পায়নি এবং সমস্যা সংক্রান্ত স্ট্যাটাসে রয়েছে।
এই স্ট্যাটাসটি শুধুমাত্র অ্যাপ্লিকেশনের অতিরিক্ত তথ্য হিসেবে কাজ করে। অন্য কোনও সোর্স থেকে সমস্যা না হলে, রানটাইমকে অবশ্যই অ্যাপ্লিকেশনকে স্ন্যাপশট তৈরি করা এবং ট্র্যাকারের বর্তমান XrSceneMeshTrackingStateANDROID নির্বিশেষে সেগুলি থেকে ডেটা ফিরিয়ে আনার অনুমতি দেওয়া চালিয়ে যেতে হবে। স্ট্যাটাস XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID না হলে, স্ন্যাপশট আপ-টু-ডেট নাও হতে পারে বা খালি থাকতে পারে।
সিন মেশ স্ন্যাপশট থেকে সিন মেশ ডেটা সংগ্রহ করা হচ্ছে
xrGetAllSubmeshStatesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
প্যারামিটারের বিবরণ
snapshotহল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID-এর মাধ্যমে তৈরি করা হয়েছে।submeshStateCapacityInputহলsubmeshStates-এর ক্যাপাসিটি অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনতে 0।submeshStateCountOutputহলsubmeshStates-এর সংখ্যার একটি পয়েন্টার, অথবাsubmeshStateCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।submeshStatesহল XrSceneSubmeshStateANDROID স্ট্রাকচারের একটি অ্যারের পয়েন্টার, যেখানে রানটাইম সিন মেশের সব সাবমেশের স্ট্যাটাস আউটপুট করবে।submeshStateCapacityInput০ হলে এটিNULLহতে পারে।- প্রয়োজনীয়
submeshStatesসাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার অধ্যায় দেখুন।
অ্যাপ্লিকেশনটি সিন মেশের সব সাবমেশের অবস্থা জানতে xrGetAllSubmeshStatesANDROID ফাংশন ব্যবহার করতে পারে। এতে প্রাথমিক তথ্য থাকে যার মাধ্যমে অ্যাপ্লিকেশনটি সাবমেশ বেছে নিতে পারে যার জন্য অ্যাপ্লিকেশনটি ডেটা চায়।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrGetAllSubmeshStatesANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন চালু করতেই হবে -
snapshotঅবশ্যই একটি সঠিক XrSceneMeshSnapshotANDROID হ্যান্ডেল হতে হবে -
submeshStateCountOutputঅবশ্যইuint32_tভ্যালুর পয়েন্টার হতে হবে -
submeshStateCapacityInputযদি0না হয়, তাহলেsubmeshStates-কেsubmeshStateCapacityInputXrSceneSubmeshStateANDROID স্ট্রাকচারের অ্যারের পয়েন্টার হতেই হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
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 যা সাবমেশকে ঘিরে থাকা বাউন্ডিং বক্সের ডাইমেনশন বর্ণনা করে। এই বাউন্ডটি বেস স্পেসে সংজ্ঞায়িত করা হয়েছে যা দৃশ্য মেশ হ্যান্ডেল তৈরি করতে ব্যবহৃত হয়েছিল।
রানটাইম, সাবমেশ দ্বারা দখল করা ফিজিক্যাল স্পেসের অঞ্চলের সাথে submeshId ম্যাপ করার জন্য যথাসাধ্য চেষ্টা করে। রানটাইম যেকোনও সময় এই ম্যাপিং হারাতে পারে এবং শনাক্ত করা সাবমেশের যেকোনও সাবসেটে নতুন UUID অ্যাসাইন করতে পারে। বিশেষ করে, পরবর্তী অ্যাপ্লিকেশন ইনস্ট্যান্সে একই মেশের জন্য একই UUID আবার ব্যবহার করার জন্য রানটাইমের প্রয়োজন হয় না।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSceneSubmeshStateANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
typeঅবশ্যইXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
xrGetSubmeshDataANDROID ফাংশনটি এভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
প্যারামিটারের বিবরণ
snapshotহল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID-এর মাধ্যমে তৈরি করা হয়েছে।submeshDataCountহলinoutSubmeshData-এর দৈর্ঘ্য।inoutSubmeshDataহল XrSceneSubmeshDataANDROID-এর একটি অ্যাপ্লিকেশন অ্যালোকেটেড অ্যারে, যেখানে রানটাইম প্রতিটি এলিমেন্টকে XrSceneSubmeshDataANDROID ::submeshId-এ পাস করা সাবমেশ আইডির সাথে যুক্ত মেশ ডেটা দিয়ে পপুলেট করে।
অ্যাপ্লিকেশনটি xrGetSubmeshDataANDROID ফাংশন ব্যবহার করতে পারে, যাতে সাবমেশের ব্যাচ বা সব সাবমেশ একসাথে পাওয়া যায়। এর জন্য প্রতিটি XrSceneSubmeshDataANDROID :: submeshId-এর সাথে XrSceneSubmeshDataANDROID-এর তালিকা পাস করতে হবে, যা সাবমেশ ফিরিয়ে আনার জন্য সংশ্লিষ্ট আইডিতে সেট করা থাকে।
XrSceneSubmeshDataANDROID :: submeshId অবশ্যই inoutSubmeshData-এর প্রতিটি এলিমেন্টের জন্য অনন্য হতে হবে এবং একই snapshot-এর জন্য xrGetAllSubmeshStatesANDROID দ্বারা পুনরুদ্ধারযোগ্য হতে হবে। সাবমেশ আইডি ভুল হলে অথবা inoutSubmeshData-এ একাধিক এলিমেন্টের একই সাবমেশ আইডি থাকলে, রানটাইম অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে।
submeshDataCount-এর ভ্যালু xrGetAllSubmeshStatesANDROID :: submeshStateCountOutput-এর মাধ্যমে রিটার্ন করা ভ্যালুর সমান বা তার থেকে কম হতেই হবে, অন্যথায় রানটাইম XR_ERROR_VALIDATION_FAILURE রিটার্ন করতেই হবে।
বেছে নেওয়া সব সাবমেশের ভার্টেক্স ও ইন্ডেক্স কাউন্ট কোয়েরি করার জন্য ২-কল ইডিয়মে এটি ব্যবহার করা যেতে পারে।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrGetSubmeshDataANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
snapshotঅবশ্যই একটি সঠিক XrSceneMeshSnapshotANDROID হ্যান্ডেল হতে হবে -
inoutSubmeshDataঅবশ্যইsubmeshDataCountXrSceneSubmeshDataANDROID স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
submeshDataCountপ্যারামিটার অবশ্যই0-এর থেকে বেশি হতে হবে
রিটার্ন কোড
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
XrSceneSubmeshDataANDROID স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:
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-এর ক্যাপাসিটি অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনতে 0।vertexCountOutputহলvertexPositions,vertexNormals, এবংvertexSemantics-এর সংখ্যার একটি পয়েন্টার, অথবাvertexCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।vertexPositionsহল XrVector3f-এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ভার্টেক্স পজিশন আউটপুট করবে।vertexNormalsহল XrVector3f-এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ভার্টেক্স নরমাল আউটপুট করবে। অ্যাপ্লিকেশনটি যদি সাধারণ ট্র্যাকার বন্ধ করে কোনও ট্র্যাকার তৈরি করে, তাহলে এই ফিল্ডটিNULLরাখা যেতে পারে।vertexSemanticsহলuint8_t-এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ভার্টেক্স সিম্যান্টিক্স আউটপুট করবে। অ্যাপ্লিকেশনটিXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDসিম্যান্টিক লেবেল সেট সহ ট্র্যাকার তৈরি করলে, এই ফিল্ডটিNULLছেড়ে দেওয়া যেতে পারে।indexCapacityInputহলindices-এর ক্যাপাসিটি অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনতে 0।indexCountOutputহলindices-এর সংখ্যার একটি পয়েন্টার, অথবাvertexCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।indicesহলuint32_t-এর একটি অ্যারে যেখানে রানটাইম সাবমেশের ইন্ডেক্স আউটপুট করবে।- প্রয়োজনীয়
vertexPositions,vertexNormals,vertexSemanticsএবংindicesসাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার অধ্যায় দেখুন।
সঠিক ব্যবহার (অন্তর্নিহিত)
- XrSceneSubmeshDataANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন চালু করতেই হবে -
typeঅবশ্যইXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে -
vertexCapacityInputযদি0না হয়, তাহলেvertexPositionsঅবশ্যইvertexCapacityInputXrVector3f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
vertexCapacityInputযদি0না হয়, তাহলেvertexNormalsঅবশ্যইvertexCapacityInputXrVector3f স্ট্রাকচারের অ্যারের পয়েন্টার হতে হবে -
vertexCapacityInputযদি0না হয়, তাহলেvertexSemanticsঅবশ্যইvertexCapacityInputuint8_tমানের অ্যারের পয়েন্টার হতে হবে -
indexCapacityInputযদি0না হয়, তাহলেindicesঅবশ্যইindexCapacityInputuint32_tমানের অ্যারের পয়েন্টার হতে হবে
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;
enum-এর অর্থ হল:
Enum-এর বিবরণ
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID
এই সিম্যান্টিক লেবেল থেকে বোঝা যায় যে সংশ্লিষ্ট মেশ এলিমেন্টটি একটি অজানা অবজেক্টকে উপস্থাপন করে।
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID
এই সিম্যান্টিক লেবেল থেকে বোঝা যায় যে সংশ্লিষ্ট মেশ এলিমেন্টটি একটি মেঝে।
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID
এই সিম্যান্টিক লেবেল থেকে বোঝা যায় যে সংশ্লিষ্ট মেশ এলিমেন্টটি সিলিংকে দেখায়।
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID
এই সিম্যান্টিক লেবেল থেকে বোঝা যায় যে সংশ্লিষ্ট মেশ এলিমেন্টটি একটি দেওয়ালকে বোঝাচ্ছে।
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID
এই সিম্যান্টিক লেবেল থেকে বোঝা যায় যে সংশ্লিষ্ট মেশ এলিমেন্ট একটি টেবিলকে উপস্থাপন করে।
দৃশ্য মেশ স্ন্যাপশট ধ্বংস করুন
xrDestroySceneMeshSnapshotANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
প্যারামিটারের বিবরণ
snapshotহল একটি XrSceneMeshSnapshotANDROID হ্যান্ডেল যা আগে xrCreateSceneMeshSnapshotANDROID-এর মাধ্যমে তৈরি করা হয়েছে এবং এই ফাংশনের মাধ্যমে তা নষ্ট হয়ে যাবে।
অ্যাপ্লিকেশনটি xrDestroySceneMeshSnapshotANDROID ফাংশন ব্যবহার করে সিন মেশ স্ন্যাপশট ধ্বংস করতে পারে। হ্যান্ডেলটি নষ্ট হয়ে গেলে, অ্যাপ্লিকেশনটি সাবমেশ তথ্য বা ডেটা পেতে আর এটি ব্যবহার করতে পারবে না। ট্র্যাকার নষ্ট হয়ে গেলে হ্যান্ডেল অটোমেটিক নষ্ট হয়ে যায় কারণ ট্র্যাকার হ্যান্ডেল হল সিন মেশ স্ন্যাপশট হ্যান্ডেলের পেরেন্ট।
সঠিক ব্যবহার (অন্তর্নিহিত)
- xrDestroySceneMeshSnapshotANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশন অবশ্যই চালু করতে হবে -
snapshotঅবশ্যই একটি সঠিক XrSceneMeshSnapshotANDROID হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
snapshotএবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে
রিটার্ন কোড
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
সিন মেশিংয়ের জন্য কোডের উদাহরণ
রেন্ডারিংয়ের জন্য কীভাবে সিন মেশ ডেটা অ্যাক্সেস করতে হয় তা নিম্নলিখিত উদাহরণ কোড থেকে জানতে পারবেন।
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
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
std::vector<XrSceneSubmeshStateANDROID> states(submeshCount, {
.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.vertexCapacityInput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCapacityInput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCapacityInput];
}
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 =
new XrSceneMeshSemanticLabelANDROID[data.vertexCountOutput];
for (uint32_t j = 0; j < data.vertexCountOutput; j++) {
vertexSemantics[j] =
static_cast<XrSceneMeshSemanticLabelANDROID>(data.vertexSemantics[j]);
}
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] vertexSemantics;
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
নতুন অবজেক্টের ধরন
নতুন কমান্ড
- xrCreateSceneMeshSnapshotANDROID
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
নতুন স্ট্রাকচার
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneSubmeshDataANDROID
- XrSceneSubmeshStateANDROID
XrSystemProperties এক্সটেন্ড করা হচ্ছে :
নতুন Enum
নতুন Enum কনস্ট্যান্ট
XR_ANDROID_SCENE_MESHING_EXTENSION_NAMEXR_ANDROID_scene_meshing_SPEC_VERSIONXrObjectType এক্সটেন্ড করা হচ্ছে :
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROIDXR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
XrStructureType এক্সটেন্ড করা হচ্ছে :
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
ইস্যু
ভার্সনের ইতিহাস
রিভিশন ৩, ১৫-০৫-২০২৫ (সালার খান)
- প্রাথমিক এক্সটেনশনের বিবরণ