瞭解如何使用擴增人臉,在您應用程式中的人臉上方算繪素材資源。
必要條件
請務必先瞭解基本 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 Prefab 後即可刪除。
在檢查工具中存取 AR Default Face。
將新建立的 AR 預設臉孔從 Hierarchy 分頁拖曳至 Project Assets 視窗,即可建立預設結構體。
將新建立的預設 Prefab 設為
ARFaceManager
的 Face Prefab 欄位中的臉部預設 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。