ดูวิธีใช้ Augmented Faces เพื่อแสดงผลชิ้นงานบนใบหน้ามนุษย์ในแอปของคุณเอง
ข้อกำหนดเบื้องต้น
โปรดทำความเข้าใจแนวคิดพื้นฐานของ AR และวิธีกำหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
ตรวจจับใบหน้า
ใบหน้าจะแสดงโดยออบเจ็กต์ ARFace
ที่สร้างขึ้น อัปเดต และนำออกโดย ARFaceManager
ARFaceManager
จะเรียกเหตุการณ์ facesChanged
1 ครั้งต่อเฟรม ซึ่งมีรายการ 3 รายการ ได้แก่ ใบหน้าที่เพิ่ม ใบหน้าที่อัปเดต และใบหน้าที่ถูกนำออกตั้งแต่เฟรมล่าสุด เมื่อ ARFaceManager
ตรวจพบใบหน้าในฉาก ระบบจะสร้างอินสแตนซ์ของ Prefab ที่มีคอมโพเนนต์ ARFace
แนบอยู่เพื่อติดตามใบหน้า ปล่อย Prefab เป็น null
ไว้ได้
หากต้องการตั้งค่า ARFaceManager
ให้สร้างออบเจ็กต์เกมใหม่และเพิ่ม ARFaceManager
ลงไป
Face Prefab คือ Prefab ที่สร้างขึ้นที่ท่าทางกึ่งกลางของใบหน้า Maximum Face Count หมายถึงจำนวนใบหน้าสูงสุดที่ติดตามได้
เข้าถึงใบหน้าที่ตรวจพบ
เข้าถึงใบหน้าที่ตรวจพบผ่านคอมโพเนนต์ ARFace
ซึ่งแนบอยู่กับ Prefab ใบหน้า ARFace
ระบุจุดยอด ดัชนี จุดยอดมุมปกติ และพิกัดพื้นผิว
ส่วนต่างๆ ของใบหน้าที่ตรวจพบ
Augmented Faces API มีโพสท่าตรงกลาง ท่าโพส 3 ตำแหน่ง และตาข่ายของใบหน้า 3 มิติ
โพสท่าตรงกลาง
ท่าทางกลาง ซึ่งทำเครื่องหมายจุดศูนย์กลางของศีรษะผู้ใช้คือจุดเริ่มต้นของ Prefab ที่สร้างขึ้นโดย ARFaceManager
โดยอยู่ภายในกะโหลกศีรษะ หลังจมูก
แกนของท่าทางกลางมีดังนี้
- แกน X บวก (X+) จะชี้ไปทางหูฟังข้างซ้าย
- แกน Y บวก (Y+) ชี้ขึ้นออกจากด้าน
- แกน Z บวก (Z+) จะชี้ไปยังกึ่งกลางของศีรษะ
ท่าทางของภูมิภาค
การวางตำแหน่งจุดสังเกตจะอยู่ที่หน้าผากด้านซ้าย หน้าผากด้านขวา และปลายจมูก ซึ่งจะระบุส่วนสำคัญของใบหน้าผู้ใช้ ท่าทางของภูมิภาคจะเป็นไปตามการวางแนวแกนเดียวกับท่าทางของส่วนกลาง
หากต้องการใช้ท่าทางของภูมิภาค ให้ดาวน์แคสต์ระบบย่อยของ ARFaceManager
เป็น ARCoreFaceSubsystem
และใช้ subsystem.GetRegionPoses()
เพื่อรับข้อมูลท่าทางของแต่ละภูมิภาค ดูตัวอย่างวิธีดำเนินการได้ที่ตัวอย่างการใช้งานของ Unity ใน GitHub
โครงหน้าตา 3 มิติ
เมชใบหน้าประกอบด้วยจุด 468 จุดที่ประกอบกันเป็นใบหน้ามนุษย์ และยังกำหนดโดยสัมพันธ์กับตำแหน่งกึ่งกลางด้วย
หากต้องการแสดงภาพเมชใบหน้า ให้แนบ ARFaceMeshVisualizer
กับ Face Prefab ARFaceMeshVisualizer
จะสร้าง Mesh
ที่สอดคล้องกับใบหน้าที่ตรวจพบ โดยตั้งค่าเป็นเมชใน MeshFilter
และ MeshCollider
ที่แนบมา ใช้ MeshRenderer
เพื่อตั้งค่า Material
ที่ใช้แสดงผลใบหน้า
AR Default Face Prefab จะแสดงผลวัสดุเริ่มต้นบนเมชใบหน้าที่ตรวจพบ
ทำตามขั้นตอนต่อไปนี้เพื่อเริ่มใช้ใบหน้าเริ่มต้น AR
- ตั้งค่า
ARFaceManager
ในแท็บ Hierarchy ให้ใช้ + > XR > AR Default Face เพื่อสร้างวัตถุใบหน้าใหม่ ออบเจ็กต์นี้เป็นแบบชั่วคราวและสามารถลบได้เมื่อคุณสร้าง Face Prefab แล้ว
เข้าถึง AR Default Face ในเครื่องมือตรวจสอบ
ลากใบหน้าเริ่มต้น AR ที่สร้างขึ้นใหม่จากแท็บ Hierarchy ไปยังหน้าต่าง Project Assets เพื่อสร้างพรีบับ
ตั้งค่า Prefab ที่สร้างขึ้นใหม่เป็น Prefab ใบหน้าในช่อง Face Prefab ของ
ARFaceManager
ในแท็บ Hierarchy ให้ลบออบเจ็กต์ใบหน้าออกเนื่องจากไม่จำเป็นแล้ว
เข้าถึงจุดยอดแต่ละจุดของเมชใบหน้า
ใช้ face.vertices
เพื่อเข้าถึงตำแหน่งจุดยอดของโครงหน้า ใช้ face.normals
เพื่อเข้าถึงเวิร์กเซลปกติของจุดยอดที่เกี่ยวข้อง
แสดงภาพจุดยอดแต่ละจุดของเมชใบหน้า
คุณสามารถใช้ Blender เพื่อดูหมายเลขดัชนีที่สอดคล้องกับจุดยอดของเมชใบหน้าได้ง่ายๆ โดยทำดังนี้
- เปิด Blender และนำเข้า
canonical_face_mesh.fbx
จาก GitHub - นำทางไปยัง Edit > Preferences > Interface
เลือก Developer Extras ในเมนู Display
เลือกใบหน้าโดยคลิกในวิวพอร์ต 3 มิติ แล้วกด Tab เพื่อเข้าสู่โหมดแก้ไข
เปิดเมนูแบบเลื่อนลงข้างวิวพอร์ต Overlays แล้วเลือก Indices
ไฮไลต์จุดยอดที่ต้องการระบุหมายเลขดัชนี หากต้องการไฮไลต์จุดยอดทั้งหมด ให้ใช้ Select > All