Sceneform için Artırılmış Yüzler geliştirici kılavuzu

Artırılmış Yüzler özelliğini kendi uygulamalarınızda nasıl kullanacağınızı öğrenin.

Örnek uygulamayı oluşturup çalıştırın

AugmentedFaces Java uygulamasını geliştirmek ve çalıştırmak için:

  1. Android Studio'nun 3.1 veya daha yeni bir sürümünü açın. Artırılmış Yüzler ile çalışmak için Android emülatörünün değil, fiziksel bir cihazın kullanılması önerilir. Cihaz, USB ile geliştirme makinesine bağlı olmalıdır. Ayrıntılı adımlar için Android hızlı başlangıç sayfasına bakın.

  2. AugmentedFaces Java örneğini projenize aktarın.

  3. Android Studio'da Çalıştır'ı tıklayın. Ardından, dağıtım hedefi olarak cihazınızı seçin ve cihazınızda örnek uygulamayı başlatmak için Tamam'ı tıklayın.

  4. Kameranın örnek uygulamaya erişmesine izin vermek için Onayla'yı tıklayın.

    Uygulama, ön kamerayı açmalı ve yüzünüzü kamera kamerası feed'inde hemen izlemelidir. Tilki kulaklarının görüntülerinin her iki kenarının da alnına ve tilki burnunun kendi burnunun üstüne yerleştirilmesi gerekir.

Artırılmış Yüzleri Sahnede Kullanma

  1. Öğeleri Sceneform'a aktarma

  2. ARCore oturumunu yapılandırma

  3. Algılanan yüze erişim sağlama

  4. Algılanan yüz üzerindeki efekti oluşturun

Öğeleri Sceneform'a aktarma

Genişletilmiş Yüzler için kullandığınız öğelerin ölçeklendirildiğinden ve doğru şekilde konumlandığından emin olun. İpuçları ve uygulamalar için Artırılmış Yüzler için Öğeler Oluşturma bölümüne bakın.

Doku ve 3D modeller gibi öğeleri Sceneform'da artırılmış yüz örgüsine uygulamak için öncelikle öğeleri içe aktarın.

Çalışma zamanında *.sfb modelleri yüklemek için ModelRenderable.Builder özelliğini, yüz için bir doku yüklemek üzere Texture.Builder kullanın.

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

Yüz örgü yönü

Sceneform için yüz örgüsünün yönünü not edin:

ARCore oturumunu yapılandırma

Artırılmış Yüzler, ARCore oturumunun ön yüzdeki (selfie) kamerayı kullanacak şekilde yapılandırılması ve yüz örgü desteğini etkinleştirmesi gerekir. Bunu Sahne biçiminde yapmak için ARparça sınıfını genişletin ve yapılandırmayı geçersiz kılın:

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

Etkinlik düzeninizde bu alt sınıflı ArFragment sınıfına bakın.

Algılanan yüze erişim elde edin

AugmentedFace sınıfı, Trackable sınıfını genişletir. Uygulamanızın etkinliğinde, algılanan yüze addOnUpdateListener() yöntemini kullanarak erişmek için AugmentedFace özelliğini kullanın.

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

Yüz için efekt oluşturun

Efekti oluşturmak için şu adımları uygulayın:

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

  …
 }