他のアプリで顔認証機能を使用する方法について説明します。
サンプルアプリをビルドして実行する
AugmentedFaces Java アプリをビルドして実行するには:
Android Studio バージョン 3.1 以降を開きます。顔の拡張機能を利用するには、(Android Emulator ではなく)実機を使用することをおすすめします。デバイスは USB 経由で開発マシンに接続する必要があります。詳細な手順については、Android クイックスタートをご覧ください。
プロジェクトに AugmentedFaces Java サンプルをインポートします。
Android Studio で [Run] をクリックします。次に、デプロイのターゲットとしてデバイスを選択し、[OK] をクリックしてデバイス上でサンプルアプリを起動します。
[承認] をクリックして、サンプルアプリにカメラへのアクセスを許可します。
アプリは、前面カメラを開き、カメラフィードですぐに顔を追跡します。キツネの耳を額の両側に配置します。キツネの鼻を自分の鼻の上に当てます。
顔の拡張顔の使用
アセットをシーンフォームにインポートする
顔の拡張に使用するアセットのサイズを適正化して、正しい位置に配置するようにしてください。ヒントと実践方法については、顔のアセットの作成をご覧ください。
テクスチャや 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);
…
}