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

ดูวิธีใช้ 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

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

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

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

  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