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

瞭解如何使用擴增臉孔,在自己的應用程式中將資產呈現在人臉上。

必要條件

請務必瞭解基本 AR 概念 以及如何在繼續操作前設定 ARCore 工作階段

偵測臉部

臉孔由 ARFaceManager 建立、更新及移除的 ARFace 物件表示。ARFaceManager 會叫用每個影格一次 facesChanged 事件,其中包含三份清單:新增的臉孔、更新後的臉孔,以及自上一個影格後遭移除的臉孔。當 ARFaceManager 偵測到場景中的臉孔時,就會啟動 Prefab 例項,並附加 ARFace 元件來追蹤該臉孔。Prefab 可以保留於 null

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

Face Prefab 是 Prefab 以臉部中心姿勢例項化的方式。Maximum Face Count 代表可追蹤的臉孔數量上限。

存取偵測到的臉孔

你可以透過與 Face Prefab 連結的 ARFace 元件存取偵測到的臉孔。ARFace 提供頂點、索引、頂點法線和紋理座標。

系統偵測到的臉孔組成部分

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

將姿勢置中

中心姿勢 (標示使用者頭部的中心) 是由 ARFaceManager 例項化的 Prefab 起點,它位於頭枕內側。

中心姿勢的軸如下:

  • 正的 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 Prefab 後刪除。

  3. 在檢查器中存取 AR Default Face

  4. 將新建立的 AR 預設臉孔從「Hierarchy」分頁拖曳至 Project Assets 視窗,即可建立 Prefab

  5. ARFaceManagerFace Prefab 欄位中,將新建立的 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

    食物粉狀網狀索引

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