คู่มือนักพัฒนาซอฟต์แวร์ด้าน 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 ซึ่งแนบอยู่กับ 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 ที่สอดคล้องกับใบหน้าที่ตรวจพบ โดยตั้งค่าเป็น 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 ที่สร้างใหม่เป็น Face Prefab ในช่อง Face Prefab ของ ARFaceManager

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

เข้าถึงจุดยอดของแต่ละจุดของโครงหน้า

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

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

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

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

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

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

    ดัชนีตาข่ายสำหรับเครื่องปั่นสำหรับใบหน้า

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