يصف Anchor موقعًا جغرافيًا ثابتًا واتجاهًا في العالم الحقيقي. يساعد ربط عنصر بنقطة ارتساء في عرض العناصر بشكل واقعي في العالم الحقيقي.
الوصول إلى جلسة
إنشاء نقاط ارتكاز من خلال Session في ARCore for Jetpack XR إذا كنت بصدد تحسين واجهة المستخدم المكانية باستخدام Jetpack Compose للواقع الممتد (XR)، يمكنك الوصول إلى جلسة من خلال Jetpack Compose للواقع الممتد (XR). إذا كنت تعمل مع كيانات مجسَّمة
من مكتبة Jetpack SceneCore، يمكنك الوصول إلى جلسة من
Jetpack XR Runtime.
ضبط الجلسة
لا يتطلّب إنشاء نقاط الارتكاز وتحميلها ضبط إعدادات الجلسة.
ومع ذلك، لا يتم تفعيل ميزة ثبات نقاط الارتكاز تلقائيًا في جلسات الواقع الممتد. للحفاظ على بيانات نقاط الارتكاز وتحميلها من مساحة التخزين المحلية، اضبط إعدادات الجلسة على وضع AnchorPersistenceMode.LOCAL:
val newConfig = session.config.copy( anchorPersistence = 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، ويمكن تفسيرها بالنسبة إلى Anchorable حالي أو لا. Anchorable هو Trackable
يمكن أن تكون مثبّتة به نقاط ارتساء.
إنشاء نقطة ارتساء مرتبطة بعنصر Anchorable
عند إنشاء نقطة ارتساء بالنسبة إلى Anchorable، مثل Plane، ما يجعل نقطة الارتساء تتبع Anchorable المرفق عند تحرّكه في المساحة
when (val result = anchorable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
إنشاء نقطة ارتكاز بدون عنصر Anchorable
لإنشاء مرساة غير مرتبطة بـ Anchorable، اتّبِع الخطوات التالية:
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 يجب التحقّق منه قبل الاستخدام.
يتم تحديث Trackable الذي يتضمّن TrackableState بقيمة Tracking بشكل نشط من خلال النظام.Pose قد تصبح 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)