يصف Anchor موقعًا جغرافيًا ثابتًا واتجاهًا في العالم الحقيقي. يساعد ربط عنصر بنقطة ارتساء في ظهور العناصر بشكل واقعي في العالم الحقيقي.
الوصول إلى جلسة
إنشاء نقاط ارتكاز من خلال Session في ARCore for Jetpack XR إذا كنت بصدد تحسين واجهة المستخدم المكانية باستخدام Jetpack Compose للواقع الممتد، يمكنك الوصول إلى جلسة من
Jetpack Compose للواقع الممتد. إذا كنت تعمل باستخدام كيانات مجسّمة
من مكتبة 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) }
فهم TrackingState
يحتوي كل Trackable على TrackingState يجب التحقّق منه قبل استخدامه.
يتم تعديل Pose Trackable الذي يتضمّن TrackableState بقيمة Tracking بشكل نشط من خلال النظام. قد تصبح Trackable التي تكون Paused Tracking في المستقبل، في حين أنّ Trackable التي تكون 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)