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

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

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

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

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

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

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

Face Prefab เป็นอินสแตนซ์ Prefab ที่ตำแหน่งตรงกลางของใบหน้า Maximum Face Count แสดงจำนวนใบหน้าสูงสุดที่สามารถติดตามได้

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

เข้าถึงใบหน้าที่ตรวจพบผ่านคอมโพเนนต์ ARFace ซึ่งแนบอยู่กับ Face Prefab ARFace จะระบุจุดยอด ดัชนี ค่าปกติของจุดยอด และพิกัดพื้นผิว

ส่วนต่างๆ ของใบหน้าที่ตรวจพบ

Augmented Faces API จัดท่าศูนย์กลาง ท่า 3 ภูมิภาค และตาข่ายหน้าแบบ 3 มิติ

จัดท่ากึ่งกลาง

ท่าที่อยู่ตรงกลางซึ่งทำเครื่องหมายตรงกลางศีรษะของผู้ใช้คือจุดเริ่มต้นของการจำลองล่วงหน้าของ ARFaceManager อยู่ภายในกะโหลกศีรษะบริเวณหลังจมูก

แกนของท่าศูนย์กลางมีดังนี้

  • แกน X เชิงบวก (X+) ชี้ไปยังหูด้านซ้าย
  • แกน Y บวก (Y+) ชี้ขึ้นออกจากใบหน้า
  • แกน Z ที่เป็นบวก (Z+) จะชี้ไปยังกึ่งกลางของศีรษะ

ท่าทางตามภูมิภาค

บริเวณหน้าผากซ้าย หน้าผากขวา และปลายจมูกจะเป็นเครื่องหมายส่วนสำคัญของใบหน้าของผู้ใช้ พื้นที่ดังกล่าววางแนวตามแนวแกนเดียวกับจุดศูนย์กลาง

หากต้องการใช้การระบุตำแหน่งตามภูมิภาค ให้ดาวน์เกรดระบบย่อยของ ARFaceManager เป็น ARCoreFaceSubsystem และใช้ subsystem.GetRegionPoses() เพื่อรับข้อมูลการท่าทางสำหรับแต่ละภูมิภาค ดูตัวอย่างวิธีดำเนินการได้จากตัวอย่างการใช้งานของ Unity ใน GitHub

ตาข่ายแบบ 3 มิติ

ตาข่ายใบหน้ามีจุด 468 จุดที่ประกอบกันเป็นใบหน้าคน นอกจากนี้ยังกำหนดโดยสัมพันธ์กับศูนย์กลางโพสท่า

หากต้องการแสดงภาพตาข่ายใบหน้า ให้แนบ ARFaceMeshVisualizer เข้ากับ Face Prefab ARFaceMeshVisualizer จะสร้าง Mesh ที่ตรงกับใบหน้าที่ตรวจพบ โดยตั้งค่าเป็น 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 ที่สร้างใหม่เป็น Face Prefab ในช่อง Face Prefab ของ ARFaceManager

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

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

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

แสดงภาพจุดยอดแต่ละจุดของโครงตาข่ายใบหน้า

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

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

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

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

    ดัชนีตาข่ายของเครื่องปั่น

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