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