กำหนดการตั้งค่าของแอปเพื่อให้ใช้ Geospatial API ได้
ข้อกำหนดเบื้องต้น
โปรดทำความเข้าใจแนวคิดพื้นฐานของ AR และวิธีกำหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Geospatial API ได้ที่ข้อมูลเบื้องต้นเกี่ยวกับ Geospatial API
หากคุณเพิ่งเริ่มพัฒนาโดยใช้ ARCore โปรดดูการเริ่มต้นใช้งานสำหรับข้อมูลเกี่ยวกับข้อกำหนดของซอฟต์แวร์และฮาร์ดแวร์ ข้อกำหนดเบื้องต้น และข้อมูลอื่นๆ สำหรับแพลตฟอร์มที่คุณใช้โดยเฉพาะ
หากต้องการใช้ ARCore Geospatial API โปรเจ็กต์ของคุณต้องรองรับ AR Foundation และ ARCore Extensions สำหรับ AR Foundation
เปิดใช้ ARCore API
ก่อนใช้ระบบการระบุตำแหน่งด้วยภาพ (VPS) ในแอป คุณต้องเปิดใช้ ARCore API ในโปรเจ็กต์ Google Cloud ใหม่หรือที่มีอยู่ก่อน บริการนี้มีหน้าที่รับผิดชอบในการโฮสต์ จัดเก็บ และแก้ไขหมุดยึดเชิงพื้นที่
เราขอแนะนำให้ใช้การให้สิทธิ์แบบไม่ใช้คีย์ แต่ก็รองรับการให้สิทธิ์คีย์ API ด้วย
เพิ่มไลบรารีที่จำเป็นลงในแอป
หลังจากให้สิทธิ์แอปเรียก ARCore API แล้ว คุณต้องเพิ่มไลบรารีเพื่อเปิดใช้ฟีเจอร์เชิงพื้นที่ในแอป
- ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ตรวจสอบว่าได้เลือกเปิดใช้การสนับสนุน iOS แล้ว
- ในส่วนฟีเจอร์เสริม ให้เลือกภูมิสารสนเทศ
เปิดใช้ความสามารถเชิงพื้นที่ในการกําหนดค่าเซสชัน
เมื่อเปิดใช้ฟังก์ชันภูมิสารสนเทศในแอปแล้ว ให้เปิดใช้ความสามารถด้านภูมิสารสนเทศในการกำหนดค่าเซสชัน AR ของแอปเพื่อให้สื่อสารกับ ARCore API ได้
- ตรวจสอบว่าโฟลเดอร์ Assets ของโปรเจ็กต์มีออบเจ็กต์ที่สคริปต์ได้ ARCoreGroupsConfig หากต้องการสร้าง ให้คลิกขวาในแผงชิ้นงาน แล้วเลือกสร้าง > XR > การกำหนดค่าส่วนขยาย ARCore
เลือกออบเจ็กต์ที่สคริปต์ได้ ARCoreExpandConfig ในโฟลเดอร์ Assets และตั้งค่า Geospatial Mode เป็น Enabled
กำหนดค่าออบเจ็กต์เกม ARCore Extensions เพื่อใช้การกำหนดค่า ARCoreExtensionsConfig ในแผงลําดับชั้น ให้ค้นหาออบเจ็กต์เกม ARCore Extensions ที่คุณสร้างเมื่อตั้งค่า ARCore Extensions เป็นครั้งแรก และเชื่อมต่อช่อง ARCore Extensions Config กับออบเจ็กต์สคริปต์ ARCoreExtensionsConfig ในโฟลเดอร์ Assets
แจ้งให้ผู้ใช้อนุญาตให้ใช้ข้อมูลของอุปกรณ์
แอปที่ใช้ ARCore Geospatial API ต้องแสดงข้อความแจ้งให้ผู้ใช้รับทราบและอนุญาตให้ใช้ข้อมูลจากอุปกรณ์ ดูข้อมูลเพิ่มเติมได้ในข้อกำหนดด้านความเป็นส่วนตัวของผู้ใช้
ตรวจสอบความเข้ากันได้ของอุปกรณ์
อุปกรณ์ที่รองรับ ARCore บางรุ่นอาจไม่รองรับ Geospatial API ด้วย หากต้องการตรวจสอบความเข้ากันได้ของอุปกรณ์ของผู้ใช้ ให้โทรไปที่ AREarthManager.IsGeospatialModeSupported()
หากผลลัพธ์คือ FeatureSupported.Unsupported
อย่าพยายามกําหนดค่าเซสชัน
ขอสิทธิ์เข้าถึงตําแหน่งจากผู้ใช้ขณะรันไทม์
หากต้องการเปิดใช้บริการตำแหน่งของ Unity ในสคริปต์ที่ทริกเกอร์คำขอสิทธิ์รันไทม์ ให้ทำดังนี้
ใน Project Settings > iOS > Other Settings > Location Usage Description ให้ป้อนชื่อแอปที่กำลังขอสิทธิ์
เปิดใช้บริการตำแหน่งของ Unity เพื่อทริกเกอร์คำขอสิทธิ์รันไทม์ ดังนี้
public void OnEnable() { Input.location.Start(); } public void OnDisable() { Input.location.Stop(); }
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของ Unity
LocationService
ตรวจสอบความพร้อมให้บริการของข้อมูลเชิงพื้นที่ ณ ตำแหน่งปัจจุบันของอุปกรณ์
เนื่องจาก Geospatial API ใช้ VPS และ GPS ร่วมกันเพื่อระบุตำแหน่งเชิงพื้นที่ คุณจึงใช้ API ได้ตราบใดที่อุปกรณ์ระบุตำแหน่งได้ ในพื้นที่ที่มีความแม่นยำของ GPS ต่ำ เช่น พื้นที่ในอาคารและสภาพแวดล้อมในเมืองที่หนาแน่น API จะอาศัยความครอบคลุมของ VPS เพื่อสร้างท่าทางที่มีความแม่นยำสูง ภายใต้เงื่อนไขทั่วไป VPS ควรมีความแม่นยำในการระบุตำแหน่งประมาณ 5 เมตร และความแม่นยำในการหมุน 5 องศา ใช้ AREarthManager.CheckVpsAvailability()
เพื่อดูว่าตำแหน่งหนึ่งๆ มีบริการ VPS หรือไม่
นอกจากนี้ คุณยังใช้ Geospatial API ในพื้นที่ที่ไม่มี VPS ครอบคลุมได้ด้วย ในสภาพแวดล้อมกลางแจ้งที่มีสิ่งกีดขวางเหนือศีรษะเพียงเล็กน้อยหรือไม่มีเลย GPS อาจเพียงพอที่จะสร้างท่าทางที่มีความแม่นยำสูง
ขั้นตอนถัดไป
- รับตำแหน่งเชิงพื้นที่ของกล้องอุปกรณ์เพื่อระบุตำแหน่งที่แน่นอนของอุปกรณ์ของผู้ใช้ในโลกแห่งความเป็นจริง
- ตรวจสอบความพร้อมใช้งาน VPS ในตำแหน่งที่ระบุของอุปกรณ์