Augmented Faces を使用して、アプリで人間の顔の上にアセットをレンダリングする方法を学習します。
前提条件
AR の基礎的なコンセプトを理解しておいてください。 と ARCore セッションを構成する方法を確認してください。
顔の検出
顔は、ARFaceManager
によって作成、更新、削除される ARFace
オブジェクトで表されます。フレームごとに、ARFaceManager
は 3 つのリスト(追加された顔、更新された顔、最後のフレーム以降に削除された顔)を含む 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 個のポイントで構成されています。また、中心のポーズを基準として定義されます。
顔メッシュを可視化するには、ARFaceMeshVisualizer
を Face Prefab にアタッチします。ARFaceMeshVisualizer
は、検出された顔に対応する Mesh
を生成し、接続された MeshFilter
と MeshCollider
のメッシュとして設定します。MeshRenderer
を使用して、顔のレンダリングに使用する Material
を設定します。
AR Default Face Prefab は、検出された顔メッシュにデフォルトのマテリアルをレンダリングします。
AR のデフォルトの顔の使用を開始する手順は次のとおりです。
ARFaceManager
を設定します。[Hierarchy] タブで + を使用します。>XR >新しい顔オブジェクトを作成するための AR Default Face。このオブジェクトは一時的なものであり、顔のプレハブを作成すると削除できます。
Inspector で AR Default Face にアクセスします。
新しく作成した AR Default Face を [Hierarchy] タブから Project Assets ウィンドウにドラッグして、プレハブを作成します。
ARFaceManager
の Face Prefab フィールドで、新しく作成したプレハブを顔のプレハブとして設定します。[Hierarchy] タブで、不要になった顔オブジェクトを削除します。
顔メッシュの個々の頂点にアクセスする
face.vertices
を使用して、面メッシュの頂点の位置にアクセスします。face.normals
を使用して、対応する頂点法線にアクセスします。
顔メッシュの個々の頂点を可視化する
Blender を使用すると、面メッシュの頂点に対応するインデックス番号を簡単に表示できます。
- Blender を開き、GitHub から
canonical_face_mesh.fbx
をインポートします。 - Edit > Preferences > Interface に移動します。
Display メニューで [Developer Extras] を選択します。
3D ビューポートでその面をクリックして選択し、Tab キーを押して編集モードに切り替えます。
Overlays ビューポートの横にあるプルダウン メニューを開き、[Indices] を選択します。
インデックス番号を確認する頂点をハイライト表示します。すべての頂点をハイライト表示するには、Select > All を使用します。