Jetpack XR-এর জন্য ARCore ব্যবহারকারীর পরিবেশের সমতল পৃষ্ঠতল শনাক্ত করতে পারে এবং সেগুলির পোজ, সাইজ ও ওরিয়েন্টেশনের মতো তথ্য প্রদান করতে পারে। এটি আপনার অ্যাপকে টেবিলের মতো সারফেস খুঁজে পেতে সাহায্য করতে পারে, যাতে অবজেক্ট প্লেস করা যায়।
সেশন অ্যাক্সেস করা
Jetpack XR-এর জন্য ARCore-এর মাধ্যমে প্লেন সংক্রান্ত তথ্য অ্যাক্সেস করুন Session। আপনি XR-এর জন্য Jetpack Compose ব্যবহার করে স্পেশিয়াল UI উন্নত করলে, Jetpack Compose for XR থেকে সেশন অ্যাক্সেস করুন। আপনি Jetpack SceneCore লাইব্রেরি থেকে
স্পেশিয়ালাইজড এন্টিটি নিয়ে কাজ করলে, Jetpack XR Runtime থেকে সেশন অ্যাক্সেস করুন।
সেশন কনফিগার করা
XR সেশনে ডিফল্ট হিসেবে প্লেন শনাক্তকরণ চালু থাকে না। প্লেন
ট্র্যাকিং চালু করতে, সেশন কনফিগার করুন এবং
PlaneTrackingMode.HORIZONTAL_AND_VERTICAL মোড সেট করুন:
val newConfig = Config.Builder(session.config) .setPlaneTracking(PlaneTrackingMode.HORIZONTAL_AND_VERTICAL) .build() when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
অনুমান করা প্লেনের স্টেট ফিরিয়ে আনা
Jetpack XR-এর জন্য ARCore, প্লেনের স্ট্যাটাস প্রদান করে। এটি একটি
StateFlow-এর মাধ্যমে করা হয় যা প্লেনের স্ট্যাটাস এমিট করে। সেশনে প্লেনে
সাবস্ক্রাইব করলে, প্লেন যোগ করা, আপডেট করা বা
সরিয়ে দেওয়া হলে আপনার অ্যাপকে বিজ্ঞপ্তি পাঠানো হয়।
Plane.subscribe(session).collect { planes -> // Planes have changed; update plane rendering }
কোনও প্লেনের নিম্নলিখিত প্রপার্টি থাকে:
label: প্রদত্তPlane-এর একটি শব্দার্থগত বিবরণ। এটিWALL,FLOOR,CEILING, বাTABLEহতে পারে।centerPose: শনাক্ত করা প্লেনের কেন্দ্রের পোজ।extents: শনাক্ত করা প্লেনের ডাইমেনশন, মিটারে।vertices: একটি কনভেক্স বহুভুজের শীর্ষবিন্দুর তালিকা যা প্লেনকে আনুমানিক দেখায়।
প্লেনের বিরুদ্ধে হিট-টেস্ট পারফর্ম করা
হিট-টেস্ট হল সেশন দ্বারা ট্র্যাক করা অবজেক্টের সাথে রে-এর ইন্টারসেকশন গণনা করার একটি পদ্ধতি। টেবিলে পয়েন্ট করে সেই লোকেশনে কোনও অবজেক্ট প্লেস করা হল হিট-টেস্টের একটি সাধারণ প্রয়োগ। হিট-টেস্ট কন্ডাক্ট করলে হিট করা অবজেক্টের একটি তালিকা পাওয়া যায়। অন্যভাবে বলতে গেলে, হিট-টেস্ট প্রথম অবজেক্টে হিট করে থেমে যায় না। তবে, প্রায়শই আপনি কোনও নির্দিষ্ট ধরনের প্রথম অবজেক্ট হিটের ব্যাপারে আগ্রহী হতে পারেন।
হিট-টেস্ট করতে, Ray সহ Interaction.hitTest() ব্যবহার করুন:
val results = androidx.xr.arcore.hitTest(session, ray) // When interested in the first Table hit: val tableHit = results.firstOrNull { val trackable = it.trackable trackable is Plane && trackable.state.value.label == PlaneLabel.TABLE }