Jetpack XR-এর জন্য ARCore ব্যবহার করে প্লেন শনাক্ত করুন

প্রযোজ্য XR ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরণের XR ডিভাইসের অভিজ্ঞতা তৈরি করতে সাহায্য করবে।
XR হেডসেট
তারযুক্ত XR চশমা

জেটপ্যাক এক্সআরের জন্য ARCore ব্যবহারকারীর পরিবেশে সমতল পৃষ্ঠ সনাক্ত করতে পারে এবং তাদের ভঙ্গি, আকার এবং অভিযোজনের মতো তথ্য প্রদান করতে পারে। এটি আপনার অ্যাপকে বস্তু রাখার জন্য টেবিলের মতো পৃষ্ঠ খুঁজে পেতে সাহায্য করতে পারে।

একটি সেশন অ্যাক্সেস করুন

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

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

XR সেশনে ডিফল্টভাবে প্লেন ডিটেকশন সক্ষম করা থাকে না। প্লেন ট্র্যাকিং সক্ষম করতে, সেশনটি কনফিগার করুন এবং PlaneTrackingMode.HORIZONTAL_AND_VERTICAL মোড সেট করুন:

val newConfig = session.config.copy(
    planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

অনুভূত সমতলগুলির অবস্থা পুনরুদ্ধার করুন

জেটপ্যাক এক্সআরের জন্য এআরকোর একটি 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
}