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 臉部網格。

置中姿勢

中心姿勢 (標示使用者頭部的中心) 是 Prefab 例項的起點,由 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 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