دليل مطوّري برامج الوجوه المعزّزة لتطبيق Sceneform

يمكنك التعرّف على كيفية استخدام ميزة "الوجوه المُعزَّزة" في تطبيقاتك.

إنشاء نموذج التطبيق وتشغيله

لإنشاء تطبيق AEnhancedFaces Java وتشغيله:

  1. افتح الإصدار 3.1 أو إصدار أحدث من "استوديو Android". يُنصَح باستخدام جهاز (وليس "محاكي Android") للعمل مع ميزة "الوجوه المُعزَّزة". يجب توصيل الجهاز بجهاز التطوير عبر USB. يُرجى الاطّلاع على البدء السريع لنظام التشغيل Android للحصول على خطوات مفصّلة.

  2. استورِد نموذج JavaFace Java إلى مشروعك.

  3. في "استوديو Android"، انقر على تشغيل . بعد ذلك، اختَر جهازك بصفته هدف النشر وانقر على حسنًا لتشغيل نموذج التطبيق على جهازك.

  4. انقر على موافقة لمنح الكاميرا حق الوصول إلى التطبيق النموذجي.

    من المفترض أن يفتح التطبيق الكاميرا الأمامية ويتتبّع وجهك على الفور في خلاصة الكاميرا. ويجب أن تضع صورًا لأذنَي الثعالب على جانبَي جبنك، وأن تضع أنف ثعلب فوق أنفك.

استخدام "الوجوه المعزّزة" في Sceneform

  1. استيراد مواد العرض إلى Sceneform

  2. ضبط جلسة ARCore

  3. يمكنك الوصول إلى الوجه الذي تم رصده.

  4. عرض التأثير على الوجه الذي تم التعرّف عليه

استيراد مواد العرض إلى Sceneform

تأكّد من تحديد مواد العرض التي تستخدمها للوجوه المُعزَّزة وتحديد موضعها بشكل صحيح. للحصول على نصائح وممارسات، يمكنك الرجوع إلى إنشاء مواد عرض للوجوه المُعزّزة.

لتطبيق مواد العرض مثل الزخارف والنماذج الثلاثية الأبعاد على شبكة وجه معزّزة في Sceneform، عليك أولاً استيراد مواد العرض.

وفي وقت التشغيل، استخدِم 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);

اتجاه شبكة الوجه

نشير إلى اتجاه شبكة المواقع المتداخلة في Sceneform:

ضبط جلسة ARCore

تتطلّب ميزة "الوجوه المُعزَّزة" جلسة ARCore بحيث يتم استخدام الكاميرا الأمامية (الخاصة بالتقاط الصور الذاتية) وتفعيل إمكانية استخدام شبكة المتداخلة. ولإجراء ذلك في Sceneform، يجب توسيع فئة ARpart وإلغاء الضبط:

@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);

  …
 }