מדריך למפתחים בנושא 'פנים משופרות' ל-Squareform

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

יצירה והפעלה של אפליקציה לדוגמה

כדי ליצור ולהפעיל את אפליקציית AugmentedFaces Java:

  1. פותחים את Android Studio בגרסה 3.1 ואילך. מומלץ להשתמש במכשיר פיזי (ולא באמולטור של Android) כדי לעבוד עם פנים משופרות. המכשיר צריך להיות מחובר למכונת הפיתוח באמצעות USB. לקבלת הוראות מפורטות, ניתן לעיין במדריך למתחילים של Android.

  2. מייבאים את דוגמה ל-AugmentedFaces ב-Java לפרויקט שלכם.

  3. ב-Android Studio, לוחצים על הפעלה . לאחר מכן, בוחרים את המכשיר כיעד הפריסה ולוחצים על אישור כדי להפעיל את האפליקציה לדוגמה במכשיר.

  4. לוחצים על אישור כדי לתת למצלמה גישה לאפליקציה לדוגמה.

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

שימוש בפנים משופרות בסצנה

  1. ייבוא נכסים ל-Squareform

  2. הגדרת הסשן ב-ARCore

  3. קבלת גישה לפנים שזוהו

  4. רינדור האפקט על הפנים שזוהו

ייבוא נכסים ל-Squareform

יש לוודא שהנכסים שבהם אתם משתמשים בפיצ'רים של פנים מודגשות משנים את המיקום שלהם וממקמים אותם בצורה נכונה. לטיפים ולשיטות מומלצות, אפשר לעיין במאמר יצירת נכסים דיגיטליים לפנים משופרות.

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

בזמן ריצה, משתמשים ב-ModelRenderable.Builder כדי לטעון את הדגמים של *.sfb וב-Texture.Builder כדי לטעון מרקם של הפנים.

// To ensure that the asset doesn't cast or receive shadows in the scene,
// ensure that setShadowCaster and setShadowReceiver are both set to false.
ModelRenderable.builder()
    .setSource(this, R.raw.fox_face)
    .build()
    .thenAccept(
        modelRenderable -> {
          faceRegionsRenderable = modelRenderable;
          modelRenderable.setShadowCaster(false);
          modelRenderable.setShadowReceiver(false);
        });

// Load the face mesh texture.
Texture.builder()
    .setSource(this, R.drawable.fox_face_mesh_texture)
    .build()
    .thenAccept(texture -> faceMeshTexture = texture);

הכיוון של רשת הפנים

שימו לב בכיוון של רשת הפנים לסצנה:

הגדרת הסשן ב-ARCore

כדי להשתמש בתכונה 'פנים משופרות', צריך להגדיר את הסשן של ARCore כך שישתמש במצלמה הקדמית (סלפי) ולהפעיל תמיכה ברשת הפנים. כדי לעשות זאת בתרחיש, מרחיבים את המחלקה ARARC ומבטלים את ההגדרה:

@Override
protected Set<Session.Feature> getSessionFeatures() {
  return EnumSet.of(Session.Feature.FRONT_CAMERA);
}

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setAugmentedFaceMode(AugmentedFaceMode.MESH3D);
  return config;
}

הסיווג הזה של ArFragment מסווג בפריסת הפעילות שלך.

קבלת גישה לזיהוי הפנים

הכיתה AugmentedFace מרחיבה את הכיתה Trackable. בפעילות שלך באפליקציה, אפשר להשתמש ב-AugmentedFace כדי לקבל גישה לפנים שזוהו. לשם כך עליך להפעיל את התכונה בשיטה addOnUpdateListener().

// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

עיבוד האפקט של הפנים

עיבוד האפקט כולל את השלבים הבאים:

for (AugmentedFace face : faceList) {
  // Create a face node and add it to the scene.
  AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
  faceNode.setParent(scene);

  // Overlay the 3D assets on the face.
  faceNode.setFaceRegionsRenderable(faceRegionsRenderable);

  // Overlay a texture on the face.
  faceNode.setFaceMeshTexture(faceMeshTexture);

  …
 }