คู่มือนักพัฒนาซอฟต์แวร์ด้าน Augmented Faces สำหรับ AR Foundation

ดูวิธีใช้ใบหน้าที่เพิ่มประสิทธิภาพเพื่อแสดงผลชิ้นงานบนใบหน้ามนุษย์ในแอปของคุณเอง

ข้อกำหนดเบื้องต้น

โปรดทำความเข้าใจแนวคิดพื้นฐานของ AR และวิธีกำหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ

ตรวจจับใบหน้า

ใบหน้าจะแสดงโดยออบเจ็กต์ ARFace ที่สร้างขึ้น อัปเดต และนำออกโดย ARFaceManager ARFaceManager จะเรียกเหตุการณ์ facesChanged 1 ครั้งต่อเฟรม ซึ่งมีรายการ 3 รายการ ได้แก่ ใบหน้าที่เพิ่ม ใบหน้าที่อัปเดต และใบหน้าที่ถูกนำออกตั้งแต่เฟรมล่าสุด เมื่อ ARFaceManager ตรวจพบใบหน้าในฉาก ระบบจะสร้างอินสแตนซ์ของ Prefab ที่มีคอมโพเนนต์ ARFace แนบอยู่เพื่อติดตามใบหน้า ปล่อย Prefab เป็น null ไว้ได้

หากต้องการตั้งค่า ARFaceManager ให้สร้างออบเจ็กต์เกมใหม่และเพิ่ม ARFaceManager ลงไป

Face Prefab คือ Prefab ที่สร้างขึ้นที่ท่าทางกึ่งกลางของใบหน้า Maximum Face Count แสดงจำนวนใบหน้าสูงสุดที่ระบบติดตามได้

เข้าถึงใบหน้าที่ตรวจพบ

เข้าถึงใบหน้าที่ตรวจพบผ่านคอมโพเนนต์ ARFace ที่แนบมากับ Face 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

  1. ตั้งค่า ARFaceManager
  2. ในแท็บ Hierarchy ให้ใช้ + > XR > AR Default Face เพื่อสร้างออบเจ็กต์ใบหน้าใหม่ ออบเจ็กต์นี้เป็นแบบชั่วคราวและสามารถลบออกได้เมื่อคุณสร้าง Face Prefab แล้ว

  3. เข้าถึง AR Default Face ในเครื่องมือตรวจสอบ

  4. ลากใบหน้าเริ่มต้น AR ที่สร้างขึ้นใหม่จากแท็บ Hierarchy ไปยังหน้าต่าง Project Assets เพื่อสร้าง Prefab

  5. ตั้งค่า Prefab ที่สร้างขึ้นใหม่เป็น Prefab ใบหน้าในช่อง Face Prefab ของ ARFaceManager

  6. ในแท็บ Hierarchy ให้ลบออบเจ็กต์ใบหน้าออกเนื่องจากไม่จำเป็นแล้ว

เข้าถึงจุดยอดแต่ละจุดของเมชใบหน้า

ใช้ face.vertices เพื่อเข้าถึงตำแหน่งของจุดยอดของเมชใบหน้า ใช้ face.normals เพื่อเข้าถึงเวิร์กเซลปกติของจุดยอดที่เกี่ยวข้อง

แสดงภาพจุดยอดแต่ละจุดของเมชใบหน้า

คุณสามารถใช้ Blender เพื่อดูหมายเลขดัชนีที่สอดคล้องกับจุดยอดของเมชใบหน้าได้ง่ายๆ โดยทำดังนี้

  1. เปิด Blender และนำเข้า canonical_face_mesh.fbx จาก GitHub
  2. นำทางไปยัง Edit > Preferences > Interface
  3. เลือก Developer Extras ในเมนู Display

  4. เลือกใบหน้าโดยคลิกในวิวพอร์ต 3 มิติ แล้วกด Tab เพื่อเข้าสู่โหมดแก้ไข

  5. เปิดเมนูแบบเลื่อนลงข้างOverlaysวิวพอร์ต แล้วเลือก Indices

    ดัชนีเมชใบหน้าของ Blender

  6. ไฮไลต์จุดยอดที่ต้องการกำหนดหมายเลขดัชนี หากต้องการไฮไลต์จุดยอดทั้งหมด ให้ใช้ Select > All