AR 基金會的擴增臉部開發人員指南

瞭解如何使用擴增人臉,在您應用程式中的人臉上方顯示素材資源。

必要條件

因此,請務必先瞭解基本 AR 概念設定 ARCore 工作階段的方法,再進行後續操作。

偵測臉部

臉孔由 ARFaceManager 建立、更新及移除的 ARFace 物件表示。每個影格,ARFaceManager 都會叫用包含三個清單facesChanged 事件:已新增的臉孔、已更新的臉孔,以及自上一個影格以來移除的臉孔。當 ARFaceManager 偵測到場景中的臉孔時,會以附加 ARFace 元件的預設資料格式例項化,以便追蹤臉孔。預設結構體可以保留 null

如要設定 ARFaceManager,請建立新遊戲物件,然後在該物件中加入 ARFaceManager

Face Prefab 是在臉部中心姿勢中例項化的預設資料塊。Maximum Face Count 代表可追蹤的臉孔數量上限。

存取偵測到的臉孔

透過附加至臉部預設資料的 ARFace 元件存取偵測到的臉部。ARFace 提供頂點、索引、頂點法線和紋理座標。

偵測到的臉孔部分

Augmented Faces API 提供中心姿勢、三個區域姿勢和 3D 臉部網格。

將姿勢置中

中心姿勢標示使用者頭部的中心,是 ARFaceManager 例項化預設資料塊的原點。位於顱骨內,鼻子後方。

中心姿勢的軸如下:

  • 正 X 軸 (X+) 指向左耳
  • 正 Y 軸 (Y+) 指向臉部上方
  • 正 Z 軸 (Z+) 指向頭部中心

區域姿勢

位於左額頭、右額頭和鼻尖的區域姿勢,標示使用者臉部的重要部位。區域姿勢會遵循與中心姿勢相同的軸方向。

如要使用區域姿勢,請將 ARFaceManager 的子系統降級為 ARCoreFaceSubsystem,然後使用 subsystem.GetRegionPoses() 取得各區域的姿勢資訊。如需這方面的範例,請參閱 GitHub 上的 Unity 使用範例

3D 臉部網格

臉部網格由 468 個點組成,用於構成人臉。這個變數也會根據中心姿勢定義。

如要將臉部網格顯示出來,請將 ARFaceMeshVisualizer 附加至 Face PrefabARFaceMeshVisualizer 會產生與偵測到的臉孔相對應的 Mesh,並將其設為附加 MeshFilterMeshCollider 中的網格。使用 MeshRenderer 設定用於算繪臉部的 Material

AR Default Face Prefab 會在偵測到的臉部網格上算繪預設材質。

如要開始使用 AR 預設臉孔,請按照下列步驟操作:

  1. 設定 ARFaceManager
  2. Hierarchy 分頁中,使用 + > XR > AR Default Face 建立新的臉孔物件。這個物件是暫時性的,建立 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

    Blender 臉部網格索引

  6. 醒目顯示要判斷索引號碼的頂點。如要醒目顯示所有頂點,請使用 Select > All