瞭解如何使用擴增臉孔,在自己的應用程式中將資產呈現在人臉上。
必要條件
請務必瞭解基本 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 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。