เปิดใช้ Geospatial API สำหรับแอป Unity (AR Foundation) ที่กำหนดเป้าหมายเป็น iOS

กำหนดการตั้งค่าของแอปเพื่อให้ใช้ 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 แล้ว คุณต้องเพิ่มไลบรารีเพื่อเปิดใช้ฟีเจอร์เชิงพื้นที่ในแอป

  1. ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ตรวจสอบว่าได้เลือกเปิดใช้การสนับสนุน iOS แล้ว
  2. ในส่วนฟีเจอร์ที่ไม่บังคับ ให้เลือกเชิงพื้นที่

เปิดใช้ความสามารถเชิงพื้นที่ในการกําหนดค่าเซสชัน

เมื่อเปิดใช้ฟังก์ชันการทำงานเชิงพื้นที่ในแอปแล้ว ให้เปิดใช้ความสามารถเชิงพื้นที่ในการกำหนดค่าเซสชัน AR ของแอปเพื่อให้สื่อสารกับ ARCore API ได้ โดยทำดังนี้

  1. ตรวจสอบว่าโฟลเดอร์เนื้อหาของโปรเจ็กต์มีออบเจ็กต์ ARCoreExtensionsConfig ที่ใช้สคริปต์ได้ หากต้องการสร้าง ให้คลิกขวาในแผงชิ้นงาน แล้วเลือกสร้าง > XR > การกำหนดค่าส่วนขยาย ARCore
  2. เลือกออบเจ็กต์ ARCoreExtensionsConfig ที่ใช้สคริปต์ได้ในโฟลเดอร์ Assets และตั้งค่าโหมดเชิงพื้นที่เป็นเปิดใช้

  3. กำหนดค่าออบเจ็กต์เกม ARCore Extensions เพื่อใช้การกำหนดค่า ARCoreExtensionsConfig ในแผงลําดับชั้น ให้ค้นหาออบเจ็กต์เกม ARCore Extensions ที่คุณสร้างเมื่อตั้งค่า ARCore Extensions เป็นครั้งแรก และเชื่อมต่อช่อง ARCore Extensions Config กับออบเจ็กต์สคริปต์ ARCoreExtensionsConfig ในโฟลเดอร์ Assets

แจ้งให้ผู้ใช้อนุญาตการใช้ข้อมูลอุปกรณ์

แอปที่ใช้ ARCore Geospatial API ต้องแสดงข้อความแจ้งให้ผู้ใช้รับทราบและอนุญาตให้ใช้ข้อมูลจากอุปกรณ์ ดูข้อมูลเพิ่มเติมได้ในข้อกำหนดด้านความเป็นส่วนตัวของผู้ใช้

ตรวจสอบความเข้ากันได้ของอุปกรณ์

อุปกรณ์ที่รองรับ ARCore บางรุ่นอาจไม่รองรับ Geospatial API ด้วย หากต้องการตรวจสอบความเข้ากันได้ของอุปกรณ์ของผู้ใช้ ให้โทรไปที่ AREarthManager.IsGeospatialModeSupported() หากผลลัพธ์คือ FeatureSupported.Unsupported อย่าพยายามกําหนดค่าเซสชัน

ขอสิทธิ์เข้าถึงตําแหน่งจากผู้ใช้ขณะรันไทม์

หากต้องการเปิดใช้บริการตำแหน่งของ Unity ในสคริปต์ที่ทริกเกอร์คำขอสิทธิ์รันไทม์ ให้ทำดังนี้

  1. ใน Project Settings > iOS > Other Settings > Location Usage Description ให้ป้อนชื่อแอปที่ขอสิทธิ์

  2. เปิดใช้บริการตำแหน่งของ 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 อาจเพียงพอที่จะสร้างท่าทางที่มีความแม่นยำสูง

ขั้นตอนถัดไป