يصف العنصر الأساسي موقعًا جغرافيًا واتجاهًا ثابتَين في العالم الحقيقي. يساعد إرفاق عنصر بنقطة تثبيت في ظهور العناصر بشكل واقعي في العالم الواقعي.
إنشاء جلسة ARCore لتطبيق Jetpack XR
أنشئ نقاط تثبيت من خلال جلسة ARCore لتطبيق Jetpack XR. اطّلِع على مقالة فهم رحلة جلسة للحصول على 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
، مثل 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
التي لها TrackableState
تبلغ Tracking
يتم تعديل 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()
. يؤدي ذلك إلى إزالة العنصر الأساسي من
مساحة تخزين تطبيقك وإلى جعل معرّف UUID المحدّد غير قابل للاسترداد للمكالمات إلى
Anchor.load()
.
Anchor.unpersist(session, uuid)
يمكن لتطبيقك أيضًا طلب قائمة بجميع العناصر الثابتة التي تم الاحتفاظ بها والتي لا تزال متوفّرة في مساحة تخزين تطبيقك:
val uuids = Anchor.getPersistedAnchorUuids(session)