ऐंकर, असल दुनिया में किसी जगह और उसकी दिशा के बारे में बताता है. किसी ऑब्जेक्ट को ऐंकर से अटैच करने पर, ऑब्जेक्ट असल दुनिया में सही जगह पर दिखता है.
Jetpack XR के लिए ARCore सेशन बनाना
Jetpack XR सेशन के लिए, ARCore की मदद से ऐंकर बनाएं. Session
पाने के लिए, सेशन के लाइफ़साइकल को समझना लेख पढ़ें.
सेशन कॉन्फ़िगर करना
ऐंकर बनाने और लोड करने के लिए, सेशन को कॉन्फ़िगर करने की ज़रूरत नहीं होती.
हालांकि, XR सेशन में ऐंकर की जगह बनाए रखने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती. लोकल स्टोरेज से ऐंकर सेव करने और लोड करने के लिए, सेशन को कॉन्फ़िगर करें और AnchorPersistenceMode.LOCAL
मोड सेट करें:
val newConfig = session.config.copy( anchorPersistence = Config.AnchorPersistenceMode.LOCAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* A different unhandled exception was thrown. */) }
कॉन्टेंट को स्पेस में किसी तय जगह पर ऐंकर करना
एंकर को Pose
का इस्तेमाल करके बनाया जाता है. इसे किसी मौजूदा Trackable
के हिसाब से इंटरप्रेट किया जा सकता है या नहीं भी किया जा सकता.
ट्रैक किए जा सकने वाले ऑब्जेक्ट के हिसाब से ऐंकर बनाना
जब किसी ऐंकर को Trackable
के हिसाब से बनाया जाता है, जैसे कि Plane
. इससे ऐंकर, अटैच किए गए Trackable
को फ़ॉलो करता है, जब वह स्पेस में घूमता है.
when (val result = trackable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Trackable के बिना ऐंकर बनाना
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
होता है. इसका इस्तेमाल करने से पहले, इसकी जांच कर लेनी चाहिए.
Tracking
के TrackableState
वाले Trackable
को सिस्टम, Pose
तौर पर अपडेट करता है. Paused
, आने वाले समय में Tracking
बन सकता है. वहीं, Stopped
कभी भी Tracking
नहीं बन सकता.Trackable
सभी सेशन में ऐंकर को बनाए रखना
सेशन खत्म होने के बाद, सेव नहीं किया गया ऐंकर गायब हो जाता है. ऐंकर को सेव करने पर, आपका ऐप्लिकेशन अपने निजी ऐप्लिकेशन डेटा में ऐंकर की पोज़िशन को सेव कर लेता है. इस ऐंकर को बाद के सेशन में वापस लाया जा सकता है. साथ ही, इसे दुनिया में उसी जगह पर ऐंकर किया जाता है.
किसी ऐंकर को बनाए रखने के लिए, 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()
पर कॉल करने के लिए वापस नहीं पाया जा सकता.
Anchor.unpersist(session, uuid)
आपका ऐप्लिकेशन, उन सभी ऐंकर की सूची का अनुरोध भी कर सकता है जिन्हें सेव किया गया है और जो अब भी आपके ऐप्लिकेशन के स्टोरेज में मौजूद हैं:
val uuids = Anchor.getPersistedAnchorUuids(session)