XR_ANDROID_scene_meshing
নাম স্ট্রিং
XR_ANDROID_scene_meshing
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
৭১৯
সংশোধন
৩
অনুমোদনের অবস্থা
অনুমোদিত নয়
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধনের তারিখ
২০২৫-০৫-১৫
আইপি স্ট্যাটাস
কোনো জ্ঞাত আইপি দাবি নেই।
অবদানকারীরা
স্পেন্সার কুইন, গুগল
জ্যারেড ফাইন্ডার, গুগল
আন্তোনিও ফন্টান, গুগল
কেয়ার্ন ওভারটার্ফ, গুগল
নিহাব জৈন, গুগল
সালার খান, গুগল
সেবাস্তিয়ান ক্লোজ, গুগল
ইয়ুর্গেন স্টর্ম, গুগল
ভিনি ডাসিলভা, গুগল
রিকার্ডো ক্যাম্পবেল, গুগল
সংক্ষিপ্ত বিবরণ
এই এক্সটেনশনটির উদ্দেশ্য হলো ব্যবহারকারীর পরিবেশে থাকা ভৌত বস্তুগুলোকে আনুমানিকভাবে উপস্থাপন করে এমন মেশ প্রদান করা।
অ্যাপ্লিকেশনগুলো দৃশ্যটি দেখার জন্য এবং ভার্চুয়াল বস্তুগুলোকে ভৌত বস্তুর সাথে সংঘর্ষের মতো মিথস্ক্রিয়া করানোর জন্য এই এক্সটেনশনটি ব্যবহার করতে পারে ।
সিন মেশ ডেটা রানটাইম দ্বারা তৈরি হয় এবং XrSceneMeshingTrackerANDROID ও XrSceneMeshSnapshotANDROID ব্যবহার করে অ্যাপ্লিকেশনের সাথে শেয়ার করা হয়। অ্যাপ্লিকেশনগুলো xrGetAllSubmeshStatesANDROID থেকে ফেরত আসা XrSceneSubmeshStateANDROID- এর মাধ্যমে সিন সাবমেশ তথ্যের মানগুলো অ্যাক্সেস করতে পারে । অ্যাপ্লিকেশনগুলো xrGetSubmeshDataANDROID থেকে ফেরত আসা XrSceneSubmeshDataANDROID- এর মাধ্যমে সিন সাবমেশ ডেটার মানগুলো অ্যাক্সেস করতে পারে ।
সিন মেশিং ডেটা একটি সংবেদনশীল ব্যক্তিগত তথ্য এবং এটি ব্যক্তিগত গোপনীয়তা ও অখণ্ডতার সাথে ঘনিষ্ঠভাবে জড়িত। জোরালোভাবে সুপারিশ করা হচ্ছে যে, যে অ্যাপ্লিকেশনগুলো সিন মেশিং ডেটা সংরক্ষণ বা স্থানান্তর করে, তারা যেন তা করার জন্য সর্বদা ব্যবহারকারীর কাছ থেকে সক্রিয় ও সুনির্দিষ্ট সম্মতি চেয়ে নেয়।
অনুমতি
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির ম্যানিফেস্টে অবশ্যই 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 এনুমারেশনটি সিন মেশিং-এর জন্য সিমান্টিক লেবেল সেটগুলো বর্ণনা করে। এই এনামের প্রতিটি ভ্যালু অন্য একটি এনামকে প্রতিনিধিত্ব করে, যেটিতে সিমান্টিক লেবেলগুলো থাকে। উদাহরণস্বরূপ, 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;
গণনা মানগুলোর নিম্নলিখিত অর্থ রয়েছে:
এনামের বিবরণ
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
এই শব্দার্থিক লেবেল সেটটি শব্দার্থিক লেবেলের অনুপস্থিতিকে নির্দেশ করে।
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
এই শব্দার্থিক লেবেল সেটটি XrSceneMeshSemanticLabelANDROID-কে প্রতিনিধিত্ব করে।
xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
প্যারামিটার বিবরণ
-
instanceহলো অ্যাপ্লিকেশন দ্বারা তৈরি একটি XrInstance । -
systemIdহলো xrGetSystem থেকে প্রাপ্ত একটিXrSystemId। -
supportedSemanticLabelSetsInputCapacityহলোsupportedSemanticLabelSetsএর ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পেতে ০ লিখুন। -
supportedSemanticLabelSetsOutputCountহলো লিখিতsupportedSemanticLabelSetsএর সংখ্যার একটি পয়েন্টার, অথবাsupportedSemanticLabelSetsInputCapacityঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতার একটি পয়েন্টার। -
supportedSemanticLabelSetsহলো XrSceneMeshSemanticLabelSetANDROID- এর একটি অ্যারের পয়েন্টার। যদিsupportedSemanticLabelSetsInputCapacity0 হয়, তবে এটিNULLহতে পারে । - প্রয়োজনীয়
supportedSemanticLabelSetsসাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য Buffer Size Parameters অধ্যায়টি দেখুন।
অ্যাপ্লিকেশনটি xrEnumerateSupportedSemanticLabelSetsANDROID ফাংশনটি ব্যবহার করে সিস্টেম দ্বারা সমর্থিত সিমান্টিক লেবেল সেটগুলো গণনা করতে পারে ।
প্রতিটি সিস্টেমকে অবশ্যই অন্তত XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID সমর্থন করতে হবে , কারণ এই enum মানটি কোনো সিমান্টিক লেবেল সেট না থাকাকে বোঝায় এবং অ্যাপ্লিকেশনটির ভার্টেক্স সিমান্টিকসের প্রয়োজন না হলে এটি ব্যবহার করা যেতে পারে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrEnumerateSupportedSemanticLabelSetsANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
instanceঅবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে -
supportedSemanticLabelSetsOutputCountঅবশ্যই একটিuint32_tমানের পয়েন্টার হতে হবে। - যদি
supportedSemanticLabelSetsInputCapacity0না হয়, তাহলেsupportedSemanticLabelSetsঅবশ্যইsupportedSemanticLabelSetsInputCapacityএবং XrSceneMeshSemanticLabelSetANDROID ভ্যালুগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SIZE_INSUFFICIENT -
XR_ERROR_SYSTEM_INVALID -
XR_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_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FEATURE_UNSUPPORTED -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_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_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_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 স্ট্রাকচারের মধ্যে মোড়ানো XrSceneMeshSnapshotANDROID হ্যান্ডেল এবং XrSceneMeshTrackingStateANDROID রিটার্ন করে। হ্যান্ডেলটি প্রযুক্তিগতভাবে তৈরির সময়কার সিন মেশ ডেটার একটি স্ন্যাপশট। এই হ্যান্ডেলটি যথাক্রমে xrGetAllSubmeshStatesANDROID এবং xrGetSubmeshDataANDROID ব্যবহার করে সিন মেশের তথ্য ও ডেটা কোয়েরি করার জন্য ব্যবহার করা যেতে পারে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrCreateSceneMeshSnapshotANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
trackerঅবশ্যই একটি বৈধ XrSceneMeshingTrackerANDROID হ্যান্ডেল হতে হবে। -
createInfoঅবশ্যই একটি বৈধ XrSceneMeshSnapshotCreateInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে। -
outSnapshotCreationResultঅবশ্যই একটি XrSceneMeshSnapshotCreationResultANDROID স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_POSE_INVALID -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_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 এনুমারেশনটি একটি সিন মেশিং ট্র্যাকারের ট্র্যাকিং অবস্থা বর্ণনা করে। এই এনামের প্রতিটি মান সিন মেশিং ট্র্যাকারের একটি অবস্থাকে নির্দেশ করে।
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;
গণনা মানগুলোর নিম্নলিখিত অর্থ রয়েছে:
এনামের বিবরণ
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এর ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পেতে ০ দিন। -
submeshStateCountOutputহলো লিখিতsubmeshStatesসংখ্যার একটি পয়েন্টার, অথবাsubmeshStateCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতার একটি পয়েন্টার। -
submeshStatesহলো XrSceneSubmeshStateANDROID স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার, যেখানে রানটাইম সিন মেশের সমস্ত সাবমেশের অবস্থা আউটপুট করবে।submeshStateCapacityInputমান 0 হলে এটিNULLহতে পারে । - প্রয়োজনীয়
submeshStatesসাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটারস (Buffer Size Parameters) অধ্যায়টি দেখুন।
অ্যাপ্লিকেশনটি সিন মেশের সমস্ত সাবমেশের অবস্থা জানতে xrGetAllSubmeshStatesANDROID ফাংশনটি ব্যবহার করতে পারে । এতে প্রাথমিক তথ্য থাকে, যা অ্যাপ্লিকেশনটিকে সেইসব সাবমেশ নির্বাচন করতে সাহায্য করে যেগুলোর ডেটা তার প্রয়োজন।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrGetAllSubmeshStatesANDROID কল করার আগে
XR_ANDROID_scene_meshingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
snapshotঅবশ্যই একটি বৈধ XrSceneMeshSnapshotANDROID হ্যান্ডেল হতে হবে। -
submeshStateCountOutputঅবশ্যই একটিuint32_tমানের পয়েন্টার হতে হবে। - যদি
submeshStateCapacityInput0না হয়, তাহলেsubmeshStatesঅবশ্যইsubmeshStateCapacityInputXrSceneSubmeshStateANDROID স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_SIZE_INSUFFICIENT -
XR_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 যা সাবমেশটিকে পরিবেষ্টনকারী বাউন্ডিং বক্সের মাত্রা বর্ণনা করে। এই 'bounds' সেই বেস স্পেসে সংজ্ঞায়িত করা হয় যা সিন মেশ হ্যান্ডেল তৈরি করতে ব্যবহৃত হয়েছিল।
রানটাইম 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- এর একটি তালিকা পাস করতে হয়, যেখানে প্রতিটি XrSceneSubmeshDataANDROID :: submeshId পুনরুদ্ধারযোগ্য সাবমেশের সংশ্লিষ্ট আইডিতে সেট করা থাকে।
inoutSubmeshData এর প্রতিটি উপাদানের জন্য XrSceneSubmeshDataANDROID :: submeshId অবশ্যই অনন্য হতে হবে এবং একই 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_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_SIZE_INSUFFICIENT -
XR_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এর ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পাওয়ার জন্য এর মান ০ হবে। -
vertexCountOutputহলো লিখিতvertexPositions,vertexNormals, এবংvertexSemanticsএর সংখ্যার একটি পয়েন্টার, অথবাvertexCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতার একটি পয়েন্টার। -
vertexPositionsহলো XrVector3f- এর একটি অ্যারে, যেখানে রানটাইম সাবমেশের ভার্টেক্স পজিশনগুলো আউটপুট করবে। -
vertexNormalsহলো XrVector3f- এর একটি অ্যারে, যেখানে রানটাইম সাবমেশের ভার্টেক্স নরমালগুলো আউটপুট করবে। যদি অ্যাপ্লিকেশনটি নরমাল নিষ্ক্রিয় করে একটি ট্র্যাকার তৈরি করে থাকে, তবে এই ফিল্ডটিNULLরাখা যেতে পারে । -
vertexSemanticsহলোuint8_tএর একটি অ্যারে, যেখানে রানটাইম সাবমেশের ভার্টেক্স সিম্যান্টিকস আউটপুট করবে। যদি অ্যাপ্লিকেশনটিXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDসিম্যান্টিক লেবেল সেট করে একটি ট্র্যাকার তৈরি করে থাকে, তাহলে এই ফিল্ডটিNULLরাখা যেতে পারে । -
indexCapacityInputহলোindicesধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পেতে ০ দিন। -
indexCountOutputহলো লিখিতindicesসংখ্যার একটি পয়েন্টার, অথবাvertexCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতার একটি পয়েন্টার। -
indicesহলোuint32_tফরম্যাটের একটি অ্যারে, যেখানে রানটাইম সাবমেশের ইন্ডেক্সগুলো আউটপুট করবে। - প্রয়োজনীয়
vertexPositions,vertexNormals,vertexSemantics, এবংindicesসাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য Buffer Size Parameters অধ্যায়টি দেখুন।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSceneSubmeshDataANDROID ব্যবহার করার আগে
XR_ANDROID_scene_meshingএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। - যদি
vertexCapacityInput0না হয়, তাহলেvertexPositionsঅবশ্যইvertexCapacityInputXrVector3f স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার হতে হবে। - যদি
vertexCapacityInput0না হয়, তাহলেvertexNormalsঅবশ্যইvertexCapacityInputXrVector3f স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার হতে হবে। - যদি
vertexCapacityInput0না হয়, তাহলেvertexSemanticsঅবশ্যইvertexCapacityInputএরuint8_tমানগুলোর একটি অ্যারের পয়েন্টার হতে হবে। - যদি
indexCapacityInput0না হয়, তাহলেindicesঅবশ্যইindexCapacityInputuint32_tমানগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
XrSceneMeshSemanticLabelANDROID এনুমারেশনটি হলো সিমান্টিক লেবেলের ডিফল্ট সেট, যা মেশ ভার্টেক্সগুলোকে লেবেল করতে ব্যবহার করা যায় । এর মাধ্যমে বর্ণনা করা হয় যে, মেশ ভার্টেক্সটি কোন ভৌত পরিবেশের তলের উপর অবস্থিত। এই এনুম সেটটি 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;
এনামগুলোর নিম্নলিখিত অর্থ রয়েছে:
এনামের বিবরণ
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_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_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-এর সম্প্রসারণ :
নতুন এনাম
নতুন এনাম ধ্রুবক
-
XR_ANDROID_SCENE_MESHING_EXTENSION_NAME -
XR_ANDROID_scene_meshing_SPEC_VERSION XrObjectType- এর সম্প্রসারণ:
-
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROID -
XR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
-
XrStructureType সম্প্রসারণ :
-
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_DATA_ANDROID -
XR_TYPE_SCENE_SUBMESH_STATE_ANDROID -
XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
-
সমস্যা
সংস্করণ ইতিহাস
সংশোধন ৩, ২০২৫-০৫-১৫ (সালার খান)
- প্রাথমিক এক্সটেনশনের বিবরণ