瞭解如何使用擴增臉孔,在自家應用程式中,將素材資源顯示在人臉上。
必要條件
請務必先瞭解基本 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 Prefab。ARFaceMeshVisualizer
會產生與偵測到的臉孔相對應的 Mesh
,並設為附加 MeshFilter
和 MeshCollider
中的網格。使用 MeshRenderer
設定用於轉譯錶面的 Material
。
AR Default Face Prefab 在偵測到的臉孔網格上算繪預設內容。
請按照下列步驟開始使用 AR 預設錶面:
- 設定
ARFaceManager
。 在「Hierarchy」分頁中,使用「+」>「XR」>「AR Default Face」來建立新的臉部物件。這個物件只是暫時性物件,在建立 Face Prefab 後即可刪除。
在檢查器中存取 AR Default Face。
將新建立的 AR 預設臉孔從「Hierarchy」分頁拖曳至 Project Assets 視窗,即可建立 Prefab。
在
ARFaceManager
的 Face Prefab 欄位中,將新建立的 Prefab 設為 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。