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 Prefab 後即可刪除。

  3. 在檢查工具中存取 AR Default Face

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

  5. 將新建立的預設 Prefab 設為 ARFaceManagerFace Prefab 欄位中的臉部預設 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