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

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

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

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

זיהוי פנים

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

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

Face Prefab הוא 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 ב-Inspector.

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

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

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

    אינדקסים של רשתות פנים ב-Blender

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