يصف عنصر الربط موقعًا جغرافيًا واتجاهًا في العالم الحقيقي. يساعد ربط عنصر بنقطة ارتكاز في ظهور العناصر بشكل واقعي في العالم الحقيقي، كما يساعد تطبيقك في توفير الطاقة من خلال عدم الحاجة إلى تنفيذ منطق كل إطار.
الوصول إلى جلسة
إنشاء نقاط ارتساء من خلال Session في ARCore for Jetpack XR إذا كنت بصدد تحسين واجهة مستخدم مكانية باستخدام Jetpack Compose للواقع الممتد (XR)، يمكنك الوصول إلى جلسة من
Jetpack Compose للواقع الممتد (XR). إذا كنت تعمل باستخدام عناصر مجسّمة من مكتبة Jetpack SceneCore، يمكنك الوصول إلى جلسة من Jetpack XR
Runtime.
ضبط الجلسة
لا يتطلّب إنشاء نقاط الارتكاز وتحميلها ضبط إعدادات الجلسة.
ومع ذلك، لا يتم تفعيل ثبات نقاط الارتكاز تلقائيًا في جلسات XR. لحفظ نقاط الارتكاز وتحميلها من مساحة التخزين المحلية، اضبط الجلسة على وضع AnchorPersistenceMode.LOCAL:
val newConfig = Config.Builder(session.config) .setAnchorPersistence(AnchorPersistenceMode.LOCAL) .build() when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
تثبيت المحتوى في موقع جغرافي في المساحة
يتم إنشاء نقطة ارتساء باستخدام Pose، ويمكن تفسيرها بالنسبة إلى Anchorable حالي أو تثبيتها في العالم. Anchorable هو
Trackable يمكن ربط نقاط ارتساء به.
إنشاء عنصر ثابت بالنسبة إلى Anchorable
عند إنشاء نقطة ارتساء بالنسبة إلى Anchorable، مثل Plane، يؤدي ذلك إلى جعل نقطة الارتساء تتبع Anchorable المرفق عند تحرّكه في المساحة.
val anchor = plane.createAnchor(pose)
إنشاء نقطة ارتكاز ثابتة في العالم
لإنشاء نقطة ارتساء ثابتة في العالم، لا تربطها بـ
Anchorable. لا تستخدِم هذا النوع من نقاط الارتكاز إلّا للنقاط العائمة في الفضاء، لأنّ تقدير الجلسة لموضع الأجسام الثابتة يتغيّر بمرور الوقت:
val anchor = Anchor.create(session, pose)
ربط كيان بنقطة ارتساء
لعرض نموذج في هذا الموقع الجغرافي، أنشئ GltfModel واضبط العنصر الرئيسي على AnchorSpace.
AnchorSpace.create(session, anchor).apply { parent = session.scene.activitySpace addChild(entity) }
فهم TrackingState
يحتوي كل Trackable على TrackingState يجب التحقّق منه قبل استخدامه.
يتم تحديث Pose Trackable الذي يتضمّن TrackableState بقيمة Tracking بشكل نشط من قِبل النظام. قد يصبح 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)