Jetpack XR-এর জন্য ARCore দিয়ে অ্যাঙ্কর তৈরি করুন

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

অ্যাঙ্কর বাস্তব জগতে একটি নির্দিষ্ট অবস্থান এবং অভিযোজন বর্ণনা করে। অ্যাঙ্করের সাথে একটি বস্তু সংযুক্ত করলে বস্তুগুলিকে বাস্তব জগতে বাস্তবসম্মতভাবে স্থাপন করা হয়।

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

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

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

অ্যাঙ্কর তৈরি এবং লোড করার জন্য সেশন কনফিগার করার প্রয়োজন হয় না। তবে, XR সেশনে অ্যাঙ্কর পারসিস্টেন্স ডিফল্টরূপে সক্ষম হয় না। স্থানীয় স্টোরেজ থেকে অ্যাঙ্কর টিকিয়ে রাখতে এবং লোড করতে, সেশন কনফিগার করুন এবং AnchorPersistenceMode.LOCAL মোড সেট করুন:

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

স্থানের একটি নির্দিষ্ট স্থানে বিষয়বস্তু নোঙর করুন

একটি অ্যাঙ্কর তৈরি করা হয় একটি Pose ব্যবহার করে, যা বিদ্যমান Trackable সাথে সম্পর্কিত কিনা তা ব্যাখ্যা করা যেতে পারে।

ট্র্যাকেবলের সাপেক্ষে একটি অ্যাঙ্কর তৈরি করুন

যখন একটি নোঙ্গর তৈরি করা হয় একটি Trackable এর সাপেক্ষে, যেমন একটি Plane , যার ফলে নোঙ্গরটি স্থানের মধ্য দিয়ে যাওয়ার সময় সংযুক্ত Trackable অনুসরণ করে।

when (val result = trackable.createAnchor(pose)) {
    is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ }
    else -> { /* handle failure */ }
}

ট্র্যাকেবল ছাড়াই একটি অ্যাঙ্কর তৈরি করুন

Trackable এর সাথে সংযুক্ত নয় এমন একটি অ্যাঙ্কর তৈরি করতে:

when (val result = Anchor.create(session, pose)) {
    is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ }
    else -> { /* handle failure */ }
}

একটি অ্যাঙ্কারের সাথে একটি সত্তা সংযুক্ত করুন

এই স্থানে একটি মডেল রেন্ডার করতে, একটি GltfModel তৈরি করুন এবং এর প্যারেন্টকে একটি AnchorEntity তে সেট করুন।

AnchorEntity.create(session, anchor).apply {
    parent = session.scene.activitySpace
    addChild(entity)
}

ট্র্যাকিংস্টেট বুঝুন

প্রতিটি Trackable একটি TrackingState থাকে যা ব্যবহারের আগে পরীক্ষা করা উচিত। Trackable এর TrackableState আছে এমন একটি Pose সিস্টেম দ্বারা সক্রিয়ভাবে আপডেট করা হয়। Paused Trackable ভবিষ্যতে Tracking পরিণত হতে পারে, যেখানে Stopped এর Tracking Tracking হবে না।

পুরো সেশন জুড়ে একটি অ্যাঙ্কর বজায় রাখুন

একটি অ্যাঙ্কর যা স্থায়ী হয় না তা একটি সেশন ধ্বংস হওয়ার পরে অদৃশ্য হয়ে যায়। একটি অ্যাঙ্কর স্থায়ী করার মাধ্যমে, আপনার অ্যাপটি তার ব্যক্তিগত অ্যাপ ডেটাতে সেই অ্যাঙ্করের অবস্থান মনে রাখে। এই অ্যাঙ্করটি পরবর্তী সেশনে পুনরুদ্ধার করা যেতে পারে এবং বিশ্বের একই স্থানে অ্যাঙ্কর করা হয়।

একটি অ্যাঙ্কর টিকিয়ে রাখতে, এখানে দেখানো হিসাবে Anchor.persist() ব্যবহার করুন:

val uuid = anchor.persist()

আপনার অ্যাপ ভবিষ্যতের সেশনে UUID ব্যবহার করে অ্যাঙ্করটি পুনরুদ্ধার করতে পারে:

when (val result = Anchor.load(session, uuid)) {
    is AnchorCreateSuccess -> {
        // Loading was successful. The anchor is stored in result.anchor.
    }
    else -> {
        // handle failure
    }
}

যখন আপনার আর অ্যাঙ্করের প্রয়োজন হবে না, তখন unpersist() কল করুন। এটি আপনার অ্যাপের স্টোরেজ থেকে অ্যাঙ্করটি সরিয়ে দেয় এবং প্রদত্ত UUID কে Anchor.load() এ কল করার জন্য অপ্রত্যাশিত করে তোলে।

Anchor.unpersist(session, uuid)

আপনার অ্যাপটি আপনার অ্যাপের স্টোরেজে থাকা সমস্ত অ্যাঙ্করের তালিকার জন্য অনুরোধ করতে পারে:

val uuids = Anchor.getPersistedAnchorUuids(session)