ระบบปฏิบัติการ iOS และ Android มีไลบรารีพื้นฐานในการทำ AR เป็นของตัวเองนามว่า ARKit และ ARCore ตามลำดับ ทำให้เกิดการเปลี่ยนครั้งใหญ่สำหรับคนทำ AR เช่นผมที่ประกอบกับ Unity ออก Library AR foundation มาให้ใช้เป็นทางเลือกที่น่าสนใจ
อย่างตอนนี้ที่ผมทำแพลตฟอร์ม AR Smart Heritage ของกรมศิลปากร และแพลตฟอร์มนวัตกรรมมุ่งเป้าที่เสนอหัวข้ออยู่ของ ที่ชื่อเดียวกัน Smart Heritage ในช่งแรกเราพยายามหา Solution ของ AR พื้นฐานให้ตอบโจทย์ตั้งแต่ MapBoxAR ซึ่งไม่ไหวเนื่องจาก Request Time หนักไป ทำให้เราต้องใช้ Vuforia AR ซึ่งค่าใช้จ่ายคือ 15,000 บาทซึ่งหนักเอาเรื่อง ดังนั้นเลยหา Solution ที่ฟรีและดี ประกอบกับข้อมูลการ Install ใน Google Play Store ของแอปพลิเคชัน AR Smart Heritage นั้นเป็น Android รุ่นใหม่หมดแล้ว สรุปคือเราไม่ต้องกังวลเรื่อง Feature AR ของเครื่องรุ่นเก่าๆ แล้วล่ะนั่นคือการตัดสินใจ
AR Foundation เป็น Library ที่ทาง Unity พัฒนาขึ้นเอง สามารถใช้งานได้ตั้งแต่ Unity 2019.1 ขึ้นไปซึ่งตอนนี้เป็นตัวเลือกหลักในการเปลี่ยน Version ของแอปพลิเคชันที่ผมทำ
เปิด Unity ขึ้นมาเลือกแพลตฟอร์มเป็น Android หรือ iOS เลยครับ
ไปที่ Windows -> Package Manager เพื่อทำการติดตั้ง Library ต่อไปนี้:
ทำการเลือก AR Foundation แล้วทำการติดตั้ง โดยการกด Install ที่ปุ่มมุมล่างขวา
หากใช้ Android ให้เลือก ARCore XR Plugin
และถ้าเลือก iOS ก็ลง ARKit XR Plugin
ซึ่งเราสามารถลงทีเดียวเลยก็ได้ครับให้ครบ ถ้าไม่กังวลขนาดที่ไม่จำเป็นในแอปพลิเคชันของเรา
ไปที่ Build Setting… เลือก Android Platform แล้วเลือก Player Settings.
ไปที่ Other Settings ทำการเลือกเครื่องหมายถูกที่ Auto Graphics API
เอาล่ะมาทดสอบกันหน่อย ไปที่ Hierarchy ของ Unity Editor
คลิกขวาเลือก XR->AR Session Origin ในตัว AR Session Origin จะมี AR Camera เป็น Child ซึ่งคือตัวกล้องหลักของเราในการเล่นแอปพลิเคชัน AR นั่นเอง
ต่อมาให้เลือก XR -> AR Session ซึ่งนั้นจะมีตำแหน่งของการทำงานร่วมกับ ARCore, ARKit
ลบกล้อง MainCamera ออกไปหลังจากนั้นให้เรานำ Cube ไปวางเป็น Child ใน AR Session
เพิ่ม Code ต่อไปนี้ เป็น Code ที่ผมเขียนมาเพื่อให้มัน Rotate Object ได้
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateARObject : MonoBehaviour { float rotSpeed = 5; public Camera cam; Vector3 direction; public GameObject objectTemp; void OnMouseDrag() { float rotX = Input.GetAxis("Mouse X")*rotSpeed*Mathf.Deg2Rad; float rotY = Input.GetAxis("Mouse Y")*rotSpeed*Mathf.Deg2Rad; transform.RotateAround(Vector3.up, -rotX); } }
นำ Model ของ AR เราไปใส่เป็น Child ใน Cube ใน Cube ให้เลือกเอาเครื่องหมายถูกใน Mesh Renderer ออก
ใน Cube จะมี Script ของเราให้ลาก AR CAmera ไปวางใน Cam และ ลาก Cube ไปวางใน Object Temp
ทำการ build ลง Android เราจะเห็นว่า การทำงานมันคือ ARCore ของโมเดลสามารถเลื่อนหมุนได้ และเดินเข้าไปดูรอบๆ หรือ ดูใกล้ๆ ทันที
เราจะหมุนโมเดลได้
ฝากผลงาน AR Smart Heritage ของอุทยานประวัติศาสตร์สูโขทัย ด้วยนะครับ เรากำลัง Scale ไปที่อุทยานอื่นหลังหมดวิกฤติไวรัส https://www.daydev.com/ar/smartheritage (รอเวอร์ชันใหม่ของแอปก่อนนะครับ)