המדריך למפתחים של Augmented Faces ל-AR Foundation

כדאי ללמוד איך להשתמש בתכונה פנים רבודה כדי לעבד נכסים מעל פנים אנושיות באפליקציה שלכם.

דרישות מוקדמות

חשוב לוודא שאתם מבינים את המושגים הבסיסיים של AR ואיך להגדיר סשן ARCore לפני שממשיכים.

זיהוי פנים

פנים מיוצגות על ידי אובייקטים מסוג ARFace שנוצרים, מעודכנים ומסירים באמצעות הסמל ARFaceManager. פעם אחת לכל פריים, ARFaceManager מפעיל אירוע facesChanged שמכיל שלוש רשימות: פנים שנוספו, פנים שעודכנו ופנים שהוסרו מאז הפריים האחרון. כשמכשיר ARFaceManager מזהה פנים בסצנה, הוא יוצר מופע של Prefab עם רכיב ARFace שמצורף למעקב אחרי הפנים. אפשר להשאיר את השדה 'טרום': null.

כדי להגדיר את ARFaceManager, יוצרים אובייקט משחק חדש ומוסיפים אליו את ה-ARFaceManager.

Face Prefab הוא המופע הטרום-חירום בתנוחה המרכזית של הפנים. Maximum Face Count מייצג את המספר המקסימלי של קבוצות פנים שאפשר לעקוב אחריהן.

גישה לפנים שזוהו

ניתן לגשת לפנים שזוהו דרך הרכיב ARFace, שמצורף ל-Face Prefab. ARFace מספק קודקודים, אינדקסים, נורמליות בקודקוד וקואורדינטות טקסטורה.

חלקי פנים שזוהו

ממשק Augmented Faces API מספק תנוחה במרכז, שלוש תנוחות אזורים ורשת תלת-ממדית לזיהוי פנים.

מיקום במרכז

התנוחה המרכזית, שמסמנת את מרכז הראש של המשתמש, היא נקודת המקור של ה-Prefab שנוצר על ידי ARFaceManager. היא נמצאת בתוך הגולגולת, מאחורי האף.

הצירים של התנוחת המרכז הם:

  • ציר ה-X החיובי (X+ ) מצביע על האוזן השמאלית
  • ציר ה-Y החיובי (Y+) מפנה כלפי מעלה אל מחוץ לפנים
  • ציר ה-Z החיובי (Z+ ) מפנה למרכז הראש

תנוחות אזורים

מיקומים מסוימים, שנמצאים במצח השמאלי, במצח הימני ובקצה האף, מסמנים חלקים חשובים בפני המשתמש. מיקומי האזור משתנים לפי אותו כיוון של הציר כמו נקודת המרכז.

כדי להשתמש בתנוחות של אזורים, צריך להוריד את מערכת המשנה של ARFaceManager ל-ARCoreFaceSubsystem ולהשתמש ב-subsystem.GetRegionPoses() כדי לקבל מידע על התנוחה לכל אזור. דוגמה לאופן שבו עושים זאת מופיעה בדוגמת השימוש של Unity ב-GitHub.

רשת לזיהוי פנים בתלת ממד

רשת הפנים מורכבת מ-468 נקודות שמרכיבות פנים אנושיות. הוא מוגדר גם ביחס למיקום המרכזי.

כדי להמחיש את רשת הפנים, צריך לחבר ARFaceMeshVisualizer אל Face Prefab. הסמל ARFaceMeshVisualizer ייצור Mesh שתואם לזיהוי הפנים שזוהו, ויוגדר כרשת בעמודות MeshFilter ו-MeshCollider המצורפים. משתמשים MeshRenderer כדי להגדיר את הסמל Material שמשמש לעיבוד הפנים.

AR Default Face Prefab מעבד חומר ברירת מחדל ברשתות פנים שזוהו.

כדי להתחיל להשתמש בזיהוי הפנים שמוגדר כברירת מחדל ב-AR:

  1. מגדירים ARFaceManager.
  2. בכרטיסייה Hierarchy, משתמשים ב-+ > XR > AR Default Face כדי ליצור אובייקט פנים חדש. האובייקט הזה הוא זמני ואפשר למחוק אותו אחרי שיוצרים את המאפיין 'Prefab' לזיהוי פנים.

  3. נכנסים אל AR Default Face ב'סוקר'.

  4. גוררים את תמונת ברירת המחדל החדשה של ה-AR שנוצרה מהכרטיסייה Hierarchy לחלון Project Assets כדי ליצור Prefab.

  5. מגדירים את 'טרום מראש' שנוצר לאחרונה בשדה 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. כדי לבחור את הפנים, לוחצים עליהם באזור התצוגה התלת-ממדי ואז מקישים על Tab כדי לעבור למצב עריכה.

  5. יש לפתוח את התפריט הנפתח שליד אזור התצוגה של Overlays ולבחור באפשרות Indices.

    איורים של רשת פנים לבלנדר

  6. מדגישים את הקודקוד שאת מספר האינדקס שלו רוצים לקבוע. כדי להדגיש את כל הקודקודים, צריך להשתמש בפונקציה Select > All.