আপনার অ্যাপ ARCore for Jetpack XR-এর মাধ্যমে গভীরতার তথ্য সংগ্রহ করে ডিভাইসটির কাছাকাছি ভৌত বস্তুগুলো কতটা আছে তা নির্ধারণ করতে পারে।
Jetpack XR-এর জন্য একটি ARCore সেশন তৈরি করুন
একটি ARCore for Jetpack XR Session মাধ্যমে গভীরতার তথ্য সংগ্রহ করুন। আপনি যদি Jetpack Compose for XR ব্যবহার করে স্থানিক UI উন্নত করেন, তাহলে Jetpack Compose for XR থেকে একটি সেশন অ্যাক্সেস করুন । আপনি যদি Jetpack SceneCore লাইব্রেরি থেকে স্থানিক সত্তা (spatialized entities) নিয়ে কাজ করেন, তাহলে Jetpack XR Runtime থেকে একটি সেশন অ্যাক্সেস করুন ।
সেশনটি কনফিগার করুন
XR সেশনগুলিতে ডিফল্টরূপে ডেপথ ম্যাপ পুনরুদ্ধার সক্রিয় থাকে না। ডেপথ ম্যাপ পুনরুদ্ধার সক্রিয় করতে, সেশনটি কনফিগার করুন এবং একটি DepthEstimationMode সেট করুন:
val newConfig = session.config.copy( depthEstimation = DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
DepthEstimationMode এর নিম্নলিখিত মানগুলি উপলব্ধ আছে:
-
DISABLED: দৃশ্যের গভীরতা সম্পর্কে কোনো তথ্য প্রদান করা হয়নি। -
RAW_ONLY: কাঁচা গভীরতা এবং কনফিডেন্স মান ব্যবহার করে গভীরতা নিরূপণ সক্রিয় করা হয়েছে। -
SMOOTH_ONLY: মসৃণ গভীরতা এবং কনফিডেন্স মান ব্যবহার করে গভীরতা নিরূপণ সক্রিয় করা হয়েছে। -
SMOOTH_AND_RAW: র এবং স্মুথ উভয় প্রকার গভীরতা ও কনফিডেন্স ভ্যালু ব্যবহার করে গভীরতা নিরূপণ সক্রিয় করা হয়েছে।
র' ডেপথ ম্যাপ অধিক নির্ভুলতার সাথে গভীরতার আনুমানিক ধারণা দেয়, কিন্তু র' ডেপথ ইমেজে ক্যামেরার ছবির সমস্ত পিক্সেলের গভীরতার আনুমানিক ধারণা অন্তর্ভুক্ত নাও থাকতে পারে। এর বিপরীতে, স্মুথ ডেপথ ম্যাপ প্রতিটি পিক্সেলের জন্য আনুমানিক গভীরতা প্রদান করে, কিন্তু গভীরতার আনুমানিক ধারণার স্মুথিং এবং ইন্টারপোলেশনের কারণে প্রতি-পিক্সেল গভীরতার ডেটা কম নির্ভুল হতে পারে।
গভীরতা মানচিত্রের সক্ষমতা যাচাই করুন
বিভিন্ন ডিভাইসের ক্ষমতা ভিন্ন ভিন্ন হয়ে থাকে। স্টেরিও ক্যামেরা কনফিগারেশনযুক্ত ডিভাইসগুলো বাম এবং ডান উভয় ক্যামেরার জন্যই ডেপথ এস্টিমেশন ম্যাপ প্রদান করতে পারে। একইভাবে, একক ক্যামেরাযুক্ত ডিভাইসগুলো কেবল মনো ক্যামেরার জন্যই ডেপথ এস্টিমেশন ম্যাপ প্রদান করতে পারে।
ডিভাইসটি কোন কোন ডেপথ ম্যাপ সমর্থন করে তা পরীক্ষা করতে, XrDevice.isRenderingModeSupported ব্যবহার করুন:
val xrDevice = XrDevice.getCurrentDevice(context) val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO) val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)
গভীরতার ডেটা পুনরুদ্ধার করুন
কোনো নির্দিষ্ট ক্যামেরার গভীরতার ডেটা পেতে, DepthMap ব্যবহার করুন:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
গভীরতার মান গণনা করুন
প্রাপ্ত ডেপথ ম্যাপ থেকে আপনি ডেপথ এবং কনফিডেন্স ভ্যালু পেতে পারেন:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
ব্যবহৃত কনফিগারেশন সেটিংয়ের ওপর নির্ভর করে, smoothDepthMap বা rawDepthMap ব্যবহার করে সংশ্লিষ্ট ডেপথ ম্যাপটি অ্যাক্সেস করুন। এই ম্যাপগুলোতে থাকা পরিমাপগুলো মিটারে প্রকাশ করা হয়। এছাড়াও আপনি smoothConfidenceMap এবং rawConfidenceMap ব্যবহার করে কনফিডেন্স ভ্যালুগুলো অ্যাক্সেস করতে পারেন। এই ভ্যালুগুলোর পরিসর ০ থেকে ২৫৫ পর্যন্ত, যেখানে ২৫৫ সর্বোচ্চ কনফিডেন্সকে নির্দেশ করে।
ডিবাগ বা ভিজ্যুয়ালাইজেশনের উদ্দেশ্যে একটি ডেপথ ম্যাপ রেন্ডার করতে, ARCore টেস্ট অ্যাপের ডেপথ অংশটি দেখুন।