Unity 3D

Unity การใช้งาน AR Foundation สร้าง Augmented Reality

ตอนนี้ Unity ได้นำ AR Foundation ที่พัฒนาโดย Unity เองมาเป็นทางเลือกให้กับคนสร้าง AR

ระบบปฏิบัติการ 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 (รอเวอร์ชันใหม่ของแอปก่อนนะครับ)

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน