תוכלו ללמוד איך להשתמש בתכונה פנים רבודה כדי לעבד נכסים מעל פנים אנושיות באפליקציה שלכם.
דרישות מוקדמות
לפני שממשיכים, חשוב להבין את המושגים הבסיסיים של 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:
- מגדירים
ARFaceManager
. בכרטיסייה Hierarchy, משתמשים באפשרויות + > XR > AR Default Face כדי ליצור אובייקט פנים חדש. האובייקט הזה הוא זמני וניתן למחוק אותו אחרי שיוצרים את ה-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.