증강된 얼굴을 사용하여 자체 앱에서 사람 얼굴 위에 확장 소재를 렌더링하는 방법을 알아보세요.
기본 요건
계속 진행하기 전에 기본 AR 개념 및 ARCore 세션 구성 방법을 이해해야 합니다.
얼굴 감지
얼굴은 ARFaceManager
에 의해 생성, 업데이트, 삭제되는 ARFace
객체로 표시됩니다. ARFaceManager
는 프레임당 한 번씩 추가된 얼굴, 업데이트된 얼굴, 마지막 프레임 이후 삭제된 얼굴이라는 세 개의 목록이 포함된 facesChanged
이벤트를 호출합니다. ARFaceManager
는 장면에서 얼굴을 감지하면 ARFace
구성요소를 사용하여 Prefab을 인스턴스화하여 얼굴을 추적합니다. Prefab는 null
로 두어도 됩니다.
ARFaceManager
를 설정하려면 새 게임 객체를 만들고 ARFaceManager
를 추가합니다.
Face Prefab는 얼굴의 중앙 포즈에서 인스턴스화된 Prefab입니다. Maximum Face Count는 추적할 수 있는 최대 얼굴 수를 나타냅니다.
감지된 얼굴에 액세스
얼굴 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을 사용하여 새 얼굴 객체를 만듭니다. 이 객체는 일시적이며 얼굴 프리팹을 만든 후 삭제할 수 있습니다.
검사기에서 AR Default Face에 액세스합니다.
새로 만든 AR 기본 얼굴을 Hierarchy 탭에서 Project Assets 창으로 드래그하여 Prefab을 만듭니다.
새로 만든 프리팹을
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를 사용합니다.