AR Foundation 向け拡張顔デベロッパー ガイド

拡張顔を使用して、独自のアプリで人の顔の上にアセットをレンダリングする方法を学びます。

前提条件

続行する前に、AR の基本コンセプトARCore セッションを構成する方法を理解してください。

顔の検出

顔は ARFace オブジェクトで表され、ARFaceManager によって作成、更新、削除されます。フレームごとに、ARFaceManager3 つのリスト(追加された顔、更新された顔、最後のフレーム以降に削除された顔)を含む facesChanged イベントを呼び出します。ARFaceManager はシーン内の顔を検出すると、ARFace コンポーネントがアタッチされたプレハブをインスタンス化して、顔をトラッキングします。Prefab は null のままにします。

ARFaceManager をセットアップするには、新しいゲーム オブジェクトを作成して ARFaceManager を追加します。

Face Prefab は、顔の中心のポーズでインスタンス化されたプレハブです。Maximum Face Count は、追跡できる顔の最大数を表します。

検出された顔へのアクセス

顔のプレハブにアタッチされた ARFace コンポーネントを使用して、検出された顔にアクセスします。ARFace は、頂点、インデックス、頂点法線、テクスチャ座標を提供します。

検出された顔の部分

Augmented Faces API は中心ポーズ、3 つのリージョン ポーズ、3D フェイス メッシュを提供します。

中央のポーズ

ユーザーの頭の中心を示すセンターポーズは、ARFaceManager によってインスタンス化された Prefab の原点です。頭蓋骨の内側、鼻の後ろにあります。

中央ポーズの軸は次のとおりです。

  • 正の X 軸(X+)は左耳を指しています
  • 正の Y 軸(Y+)は顔から上向きになります
  • 正の Z 軸(Z+)は頭の中央を指しています

リージョン ポーズ

左側の額、右側の額、鼻先に配置されるリージョン ポーズは、ユーザーの顔の重要な部分をマークします。領域のポーズは、中心のポーズと同じ軸の向きに従います。

領域のポーズを使用するには、ARFaceManager のサブシステムを ARCoreFaceSubsystem にダウンキャストし、subsystem.GetRegionPoses() を使用して各領域のポーズ情報を取得します。この方法の例については、GitHub の Unity の使用例をご覧ください。

3D 顔メッシュ

フェイスメッシュは、人間の顔を構成する 468 個のポイントで構成されています。また、中央のポーズを基準として定義されます。

フェイスメッシュを可視化するには、Face PrefabARFaceMeshVisualizer をアタッチします。ARFaceMeshVisualizer は、検出された顔に対応する Mesh を生成し、接続された MeshFilterMeshCollider のメッシュとして設定します。MeshRenderer を使用して、顔のレンダリングに使用する Material を設定します。

AR Default Face Prefab は、検出された顔メッシュにデフォルトのマテリアルをレンダリングします。

AR のデフォルト フェイスの使用を開始する手順は次のとおりです。

  1. ARFaceManager を設定します。
  2. [Hierarchy] タブで、+ > XR > AR Default Face を使用して新しい顔オブジェクトを作成します。このオブジェクトは一時的なもので、フェイス プレハブを作成したら削除できます。

  3. インスペクタで AR Default Face にアクセスします。

  4. 新しく作成した AR デフォルト フェイスを [Hierarchy] タブから [Project Assets] ウィンドウにドラッグして、Prefab を作成します。

  5. 新しく作成した Prefab を、ARFaceManagerFace Prefab フィールドで Face Prefab として設定します。

  6. [Hierarchy] タブで、不要になった顔オブジェクトを削除します。

フェイスメッシュの個々の頂点にアクセスする

face.vertices を使用して、面メッシュの頂点の位置にアクセスします。face.normals を使用して、対応する頂点法線にアクセスします。

顔メッシュの個々の頂点を可視化する

Blender を使用すると、フェイスメッシュの頂点に対応するインデックス番号を簡単に確認できます。

  1. Blender を開き、GitHub から canonical_face_mesh.fbx をインポートします。
  2. Edit > Preferences > Interface に移動します。
  3. [Display] メニューで [Developer Extras] を選択します。

  4. 3D ビューポートで顔をクリックして選択し、Tab キーを押して編集モードに入ります。

  5. Overlays ビューポートの横にあるプルダウン メニューを開き、[Indices] を選択します。

    Blender の顔メッシュ インデックス

  6. インデックス番号を確認する頂点をハイライト表示します。すべての頂点をハイライト表示するには、Select > All を使用します。