راهنمای برنامه‌نویس چهره‌های افزوده برای Sceneform

با نحوه استفاده از ویژگی چهره های افزوده در برنامه های خود آشنا شوید.

برنامه نمونه را بسازید و اجرا کنید

برای ساخت و اجرای برنامه جاوا AugmentedFaces :

  1. Android Studio نسخه 3.1 یا بالاتر را باز کنید. برای کار با چهره های افزوده توصیه می شود از یک دستگاه فیزیکی (و نه شبیه ساز اندروید) استفاده کنید. دستگاه باید از طریق USB به دستگاه توسعه متصل شود. برای جزئیات مراحل شروع سریع اندروید را ببینید.

  2. نمونه جاوا AugmentedFaces را به پروژه خود وارد کنید.

  3. در اندروید استودیو روی Run کلیک کنید . سپس، دستگاه خود را به عنوان هدف استقرار انتخاب کنید و روی OK کلیک کنید تا برنامه نمونه بر روی دستگاه شما راه اندازی شود.

  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 را پیکربندی کنید

Augmented Faces نیاز به پیکربندی جلسه ARCore برای استفاده از دوربین جلویی (سلفی) و فعال کردن پشتیبانی از شبکه چهره دارد. برای انجام این کار در Sceneform، کلاس ARfragment را گسترش دهید و پیکربندی را لغو کنید:

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

  …
 }