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

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

Jetpack XR সেশনের জন্য একটি ARCore তৈরি করুন

Jetpack XR সেশনের জন্য ARCore-এর মাধ্যমে অ্যাঙ্কর তৈরি করুন। একটি Session পাওয়ার জন্য একটি সেশনের জীবনচক্র বুঝতে দেখুন।

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

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

val newConfig = session.config.copy(
    anchorPersistence = Config.AnchorPersistenceMode.Enabled,
)
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! */)
}

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

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

একটি 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 তৈরি করুন] [5] এবং এটির অভিভাবককে একটি AnchorEntity এ সেট করুন।

AnchorEntity.create(session, anchor).apply {
    setParent(session.activitySpace)
    addChild(entity)
}

TrackingState বুঝুন

প্রতিটি Trackable একটি TrackingState রয়েছে যা ব্যবহার করার আগে পরীক্ষা করা উচিত। একটি Trackable যার Tracking এর একটি TrackableState রয়েছে তার Pose সিস্টেম দ্বারা সক্রিয়ভাবে আপডেট করা হয়েছে। একটি Trackable যা Paused তা ভবিষ্যতে Tracking হয়ে উঠতে পারে, যেখানে Stopped হয়েছে তা কখনই 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() কল করুন। এটি আপনার অ্যাপের সঞ্চয়স্থান থেকে অ্যাঙ্করটিকে সরিয়ে দেয় এবং Anchor.load() এ কল করার জন্য প্রদত্ত UUID-কে পুনরুদ্ধারযোগ্য করে তোলে।

Anchor.unpersist(session, uuid)

আপনার অ্যাপটি এমন সমস্ত অ্যাঙ্করগুলির একটি তালিকার জন্য অনুরোধ করতে পারে যা এখনও আপনার অ্যাপের স্টোরেজে উপস্থিত রয়েছে:

val uuids = Anchor.getPersistedAnchorUuids(session)