জেটপ্যাক এক্সআর-এর জন্য ARCore ব্যবহারকারীর পরিবেশে সমতল পৃষ্ঠগুলি সনাক্ত করতে পারে এবং তাদের ভঙ্গি, আকার এবং অভিযোজনের মতো তথ্য সরবরাহ করতে পারে। এটি আপনার অ্যাপকে বস্তু রাখার জন্য টেবিলের মতো সারফেস খুঁজে পেতে সাহায্য করতে পারে।
Jetpack XR সেশনের জন্য একটি ARCore তৈরি করুন
Jetpack XR সেশনের জন্য ARCore এর মাধ্যমে বিমানের তথ্য অ্যাক্সেস করুন। একটি Session
পাওয়ার জন্য একটি সেশনের জীবনচক্র বুঝতে দেখুন।
সেশন কনফিগার করুন
প্লেন সনাক্তকরণ XR সেশনে ডিফল্টরূপে সক্ষম হয় না। প্লেন ট্র্যাকিং সক্ষম করতে, সেশনটি কনফিগার করুন:
val newConfig = session.config.copy( planeTracking = Config.PlaneTrackingMode.HorizontalAndVertical, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigurePermissionsNotGranted -> TODO(/* The required permissions in result.permissions have not been granted. */) is SessionConfigureSuccess -> TODO(/* Success! */) }
অনুভূত প্লেনগুলির অবস্থা পুনরুদ্ধার করুন
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 == Plane.Label.Table }