顔の追加機能のシナリオ開発者向けガイド

他のアプリで顔認証機能を使用する方法について説明します。

サンプルアプリをビルドして実行する

AugmentedFaces Java アプリをビルドして実行するには:

  1. Android Studio バージョン 3.1 以降を開きます。顔の拡張機能を利用するには、(Android Emulator ではなく)実機を使用することをおすすめします。デバイスは USB 経由で開発マシンに接続する必要があります。詳細な手順については、Android クイックスタートをご覧ください。

  2. プロジェクトに AugmentedFaces Java サンプルをインポートします。

  3. Android Studio で [Run] をクリックします。次に、デプロイのターゲットとしてデバイスを選択し、[OK] をクリックしてデバイス上でサンプルアプリを起動します。

  4. [承認] をクリックして、サンプルアプリにカメラへのアクセスを許可します。

    アプリは、前面カメラを開き、カメラフィードですぐに顔を追跡します。キツネの耳を額の両側に配置します。キツネの鼻を自分の鼻の上に当てます。

顔の拡張顔の使用

  1. シーンシーンにアセットをインポートする

  2. ARCore セッションを構成する

  3. 検出された顔へのアクセスを取得する

  4. 検出された顔にエフェクトをレンダリングする

アセットをシーンフォームにインポートする

顔の拡張に使用するアセットのサイズを適正化して、正しい位置に配置するようにしてください。ヒントと実践方法については、顔のアセットの作成をご覧ください。

テクスチャや 3D モデルなどのアセットをシーンシーンの拡張顔メッシュに適用するには、まずアセットをインポートします。

実行時に、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 セッションを構成する必要があります。シーンでこれを行うには、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);

  …
 }