การจับเคลื่อนย้าย ขยาย หรือ เรียกใช้รูปแบบโต้ตอบสภาพแวดล้อม ที่เรียก Object Manipulation ผ่าน ARCore และ Unity เบื้องต้น โดยเขียนโปรแกรม C# ในการตรวจจับสถานะในการทำให้ AR มีความสมจริง
จากบทเรียน ARCore ก่อนหน้านี้:
ตัวอย่างนี้เป็น Unity Based ในการเรียกใช้ ARCore มาทำงาน ก็เลยเอา Labs ที่กำลังเป็นงาน PR ตัวหนึ่งที่ทำมาปรับใช้กันหน่อย ดังนั้นขอข้ามการติดตั้ง Environment ของ ARCore บน Unity ก่อน ใครที่ไม่รู้ว่าทำยังไงให้ไปอ่านบทความ: ARCore Face Rig บน Unity 3D ก่อนในบทความนั้นจะมีขั้นตอนการติดตั้ง และตั้งค่า Environment ของ Unity ให้พร้อมทำงานกับ ARCore
ในตัวอย่างนี้ ท่าทาง Animation ต่างๆ ผมจะใช้ Mixamo.com ในการออกแบบท่าทาง ตัวละคร โมเดล Spiderman ขึ้นมาใหม่ก่อน
ตัวอย่างนี้ผมจะใช้ Examples ของ ARCore ตัวหนึ่งคือ Object Manipulation ที่สามารถเคลื่อนย้าย ขยาย หรือวาง Point ใหม่เรียก Model มายัง AR ได้
ให้ไปเปิด Scene ชื่อ: Examples->ObjectManipulation->Scenes เปิด Scenes ขึ้นมาแล้วเอา Spiderman ออกมาใส่ Collider ให้เรียบร้อย
เมื่อสร้างเสร็จแล้วให้ ทำเป็น Prefabs ชื่อ Spiderman แล้วไปวางแทนตำแหน่ง Andy ซะที่ Andy Generator ใน Hierarchy
ทีนี้ ตามสมมติฐานเราต้องทำการ Detect Wall หรือ กำแพง ซึ่ง ARCore นี่มันจะสร้าง Plane ขึ้นมาเป็นแบบ Vertical Plane ซึ่งเราอนุมานว่าเป็นกำแพง Wall เราเลยต้องลองเขียนโปรแกรมเข้าไปที่ Prefab ของ Spiderman เล็กน้อย
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CustomAnimation : MonoBehaviour { Animator animator; public bool isRotation = false; // Start is called before the first frame update void Start() { animator = this.gameObject.GetComponent<Animator>(); if (this.gameObject.transform.rotation.eulerAngles.z > 0) { // Do something Debug.Log("Hang"); isRotation = true; animator.SetBool("isHang",true); }else{ isRotation = false; animator.SetBool("isHang",false); } if(isRotation){ RotationAnim(); } } public void RotationAnim(){ this.gameObject.transform.Rotate(90, 0, 0,Space.Self); } }
ไปเขียน Custom อื่นๆเองนะครับ อันนี้เบื้องต้น ดังนั้นเราต้องไปสร้าง Bool ของ Animator Controller ว่า isHang ไว้เช็คถ้าเราแตะ Plane แนวตั้งหรือกำแพงให้เรียกใช้งาน isHang
ดังนั้น Prefab ของ Spiderman จะเป็นดังนี้
ส่วน Feature พื้นฐานของ ARCore ส่วนของ Object Manipulation ก็จะมี วงกลมไว้ให้เราหมุน หรือ ขยาย GameObject ครับตามนี้:
ทดสอบกันหน่อยดีกว่า ระบบทำงานยังไง
ห้องที่แสงสว่างดีที่สุดของบ้านคือ ห้องน้ำนี่แหละ….
จะเห็นว่าไม่ยากเลยในการสร้าง ARCore ในการตรวจจับ Wall หรือกำแพง
ปล. บทความ ARCore เขียนขึ้นนานแล้วแต่เพิ่งเอาขึ้นระบบ 15 วัน ถ้ามีไรเปลี่ยนแปลงแจ้งได้นะครับ