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

Augmented Faces を使用して、アプリで人間の顔の上にアセットをレンダリングする方法を学習します。

前提条件

AR の基礎的なコンセプトを理解しておいてください。 と ARCore セッションを構成する方法を確認してください。

顔の検出

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

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

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

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

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

検出された顔の部分

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

中央ポーズ

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

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

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

地域のポーズ

部位のポーズは、左額、右額、鼻先にあり、ユーザーの顔の重要な部分を示します。領域のポーズは、中心のポーズと同じ軸の向きに従います。

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

3D フェイスメッシュ

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

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

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

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

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

  3. Inspector で AR Default Face にアクセスします。

  4. 新しく作成した AR Default Face を [Hierarchy] タブから Project Assets ウィンドウにドラッグして、プレハブを作成します。

  5. ARFaceManagerFace 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 を使用します。