หมุดอธิบายตำแหน่งและการวางแนวที่ตายตัวในโลกแห่งความเป็นจริง การแนบวัตถุกับจุดยึดช่วยให้วัตถุดูวางอยู่ในตำแหน่งที่สมจริงในโลกจริง
สร้างเซสชัน ARCore สำหรับ Jetpack XR
สร้างจุดยึดผ่านเซสชัน ARCore สำหรับ Jetpack XR ดูหัวข้อทำความเข้าใจวงจรของเซสชันเพื่อรับ Session
กำหนดค่าเซสชัน
การสร้างและโหลดหมุดไม่จำเป็นต้องมีการกําหนดค่าเซสชัน อย่างไรก็ตาม ระบบไม่ได้เปิดใช้การคงที่ของหมุดในเซสชัน XR โดยค่าเริ่มต้น หากต้องการเก็บข้อมูลและโหลดหมุด ให้กําหนดค่าเซสชัน ดังนี้
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
ที่แนบอยู่เมื่อ 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
ในอนาคต แต่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)