AR Foundation の拡張現実デベロッパー ガイド

拡張顔を使って、アプリ内で人間の顔の上にアセットをレンダリングする方法を学習する。

Prerequisites

先に進む前に、基本的な AR のコンセプトARCore セッションの設定方法をご確認ください。

顔の検出

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

ARFaceManager を設定するには、新しいゲーム オブジェクトを作成し、それに ARFaceManager を追加します。

Face Prefab は、顔の中央のポーズでインスタンス化された Prefab です。Maximum Face Count は、追跡可能な顔の最大量を表します。

検出された顔にアクセスする

検出された顔には、Face Prefab にアタッチされている 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. インスペクタで AR Default Face にアクセスします。

  4. 新しく作成された AR のデフォルト顔を [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] を選択します。

    ブレンダーの顔のメッシュ インデックス

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