כדאי ללמוד איך להשתמש בתכונה פנים רבודה כדי לעבד נכסים מעל פנים אנושיות באפליקציה שלכם.
דרישות מוקדמות
חשוב לוודא שאתם מבינים את המושגים הבסיסיים של 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:
- מגדירים
ARFaceManager
. בכרטיסייה Hierarchy, משתמשים ב-+ > XR > AR Default Face כדי ליצור אובייקט פנים חדש. האובייקט הזה הוא זמני ואפשר למחוק אותו אחרי שיוצרים את המאפיין 'Prefab' לזיהוי פנים.
נכנסים אל AR Default Face ב'סוקר'.
גוררים את תמונת ברירת המחדל החדשה של ה-AR שנוצרה מהכרטיסייה Hierarchy לחלון Project Assets כדי ליצור Prefab.
מגדירים את 'טרום מראש' שנוצר לאחרונה בשדה Face Prefab של
ARFaceManager
.בכרטיסייה Hierarchy, מוחקים את אובייקט הפנים כי אין בו יותר צורך.
גישה לקודים בודדים ברשת הפנים
בעזרת face.vertices
ניתן לגשת למיקומים של הקודקודים ברשת הפנים. משתמשים ב-face.normals
כדי לגשת לנורמליות המתאימות בקודקודים.
הציגו קודקודים בודדים ברשת הפנים
אפשר להשתמש בפונקציה Blender כדי להציג בקלות את מספרי האינדקס שתואמים לקודים של רשת פנים:
- פותחים את Blender ומייבאים את
canonical_face_mesh.fbx
מ-GitHub. - נווט אל Edit > Preferences > Interface.
בתפריט Display, בוחרים באפשרות Developer Extras.
כדי לבחור את הפנים, לוחצים עליהם באזור התצוגה התלת-ממדי ואז מקישים על Tab כדי לעבור למצב עריכה.
יש לפתוח את התפריט הנפתח שליד אזור התצוגה של Overlays ולבחור באפשרות Indices.
מדגישים את הקודקוד שאת מספר האינדקס שלו רוצים לקבוע. כדי להדגיש את כל הקודקודים, צריך להשתמש בפונקציה Select > All.