瞭解如何使用擴增人臉,在您應用程式中的人臉上方顯示素材資源。
必要條件
因此,請務必先瞭解基本 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 Prefab。ARFaceMeshVisualizer
會產生與偵測到的臉孔相對應的 Mesh
,並將其設為附加 MeshFilter
和 MeshCollider
中的網格。使用 MeshRenderer
設定用於算繪臉部的 Material
。
AR Default Face Prefab 會在偵測到的臉部網格上算繪預設材質。
如要開始使用 AR 預設臉孔,請按照下列步驟操作:
- 設定
ARFaceManager
。 在 Hierarchy 分頁中,使用 + > XR > AR Default Face 建立新的臉孔物件。這個物件是暫時性的,建立 Face 預設資料後即可刪除。
在檢查工具中存取 AR Default Face。
將新建立的 AR 預設臉孔從 Hierarchy 分頁拖曳至 Project Assets 視窗,即可建立預設結構體。
將新建立的預設資料塊設為
ARFaceManager
的 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。