Jetpack XR-এর জন্য ARCore-এর সাহায্যে আপনার অ্যাপে ডেপথ সংক্রান্ত তথ্য রিট্রিভ করা

প্রযোজ্য XR ডিভাইস
এইসব XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে এই নির্দেশিকা আপনাকে সাহায্য করে।
XR হেডসেট
ওয়্যারড XR গ্লাস

আপনার অ্যাপ ARCore for Jetpack XR-এর মাধ্যমে ডেপথ সংক্রান্ত তথ্য রিট্রিভ করতে পারে, এর ফলে ডিভাইসের থেকে কোনও ফিজিক্যাল অবজেক্ট কতটা দূরে আছে তা নির্ধারণ করা যায়।

Jetpack XR সেশনের জন্য ARCore তৈরি করা

Jetpack XR-এর জন্য ARCore-এর মাধ্যমে ডেপথ সংক্রান্ত তথ্য পান Session. আপনি যদি XR-এর জন্য Jetpack Compose ব্যবহার করে স্পেশিয়াল UI উন্নত করেন, তাহলে XR-এর জন্য Jetpack Compose থেকে সেশন অ্যাক্সেস করুন। আপনি Jetpack SceneCore লাইব্রেরি থেকে স্পেশিয়ালাইজড এন্টিটি নিয়ে কাজ করলে, Jetpack XR Runtime থেকে সেশন অ্যাক্সেস করুন।

সেশন কনফিগার করা

XR সেশনে ডিফল্ট হিসেবে ডেপথ ম্যাপ রিট্রিভাল চালু করা থাকে না। ডেপথ ম্যাপ রিট্রিভাল চালু করতে, সেশন কনফিগার করুন এবং একটি DepthEstimationMode সেট করুন:

val newConfig = Config.Builder(session.config)
    .setDepthEstimation(DepthEstimationMode.SMOOTH_ONLY)
    .build()
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 টেস্ট অ্যাপের ডেপথ পার্ট দেখুন।