ดูวิธีใช้ใบหน้าที่เพิ่มประสิทธิภาพเพื่อแสดงผลชิ้นงานบนใบหน้ามนุษย์ในแอปของคุณเอง
ข้อกำหนดเบื้องต้น
โปรดทำความเข้าใจแนวคิดพื้นฐานของ 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
- ตั้งค่า
ARFaceManager
ในแท็บ Hierarchy ให้ใช้ + > XR > AR Default Face เพื่อสร้างออบเจ็กต์ใบหน้าใหม่ ออบเจ็กต์นี้เป็นแบบชั่วคราวและสามารถลบออกได้เมื่อคุณสร้าง Face Prefab แล้ว
เข้าถึง AR Default Face ในเครื่องมือตรวจสอบ
ลากใบหน้าเริ่มต้น AR ที่สร้างขึ้นใหม่จากแท็บ Hierarchy ไปยังหน้าต่าง Project Assets เพื่อสร้าง Prefab
ตั้งค่า 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