UnityARFoundation Face


Unity FaceFilter 만들어보기




1. 가장 먼저 해줄것은 FaceManager와 Face Script를 적용해줍니다.

Face Manager Script의 경우, AR Session Origin에 넣어주어야합니다. 사실 AR을 통제하는 Manager Script는 AR Session Origin Scipt가 동일한 게임오브젝트에 적용되어 있지 않다면, 스스로 오브젝트 내에 AR Session Origin Script를 생성합니다. ARF1 스크린샷을 보시면 실수로 AR Session에 AR Face Manager Script를 넣자 AR Session Origin을 생성한 모습입니다.

2. Face필터로 사용할 오브젝트에 Face Script를 추가하고, 프리팹으로 만들어줍니다.

Face Manager Script를 보면, Face Prefab이 필요한걸 알수있습니다. AR Face Manager가 얼굴을 추적하고, 추적한뒤 사용할 FacePrefab을 만들어 FaceManager Script에 지정해 주어야합니다. Face Prefab을 만드는 방법은 Face Prefab을 만들어줄 오브젝트에 Face Script를 적용해준뒤, [Project]창에 끌어 당겨 주면 됩니다. 프리팹은 AR Face Manager Script 내에 지정해주시면됩니다. 기존화면에 있던 원본 프리팹은 삭제 해주어도 됩니다.

3. Face Filter에 간단한 악세사리 및 파티클 효과 추가하기

FaceFilter에 악세사리를 추가하거나, Face를 따라다니는 간단한 오브젝트 및 파티클을 추가하고 싶다면 만들어준 Face Prefab을 이용하면 간단하게 만들어 줄수 있습니다. [Project]창에서 기존에 만들어준 Face Prefab을 더블클릭 해줍니다. 만들어준 Face Prefab 내부에 넣어주기만 하면됩니다. 0,0,0 좌표를 기준으로 얼굴입니다. 이를기준으로 추가적이 오브젝트나 파티클효과를 추가해주면 됩니다. 단, 주의할 부분은 FaceFilter자체를 여러개 넣어준뒤 UI를 통해 수시로 변경해주고 싶으시다면, 바로 Prefab에 추가하지 말고, Mesh를 변경하는 방법을 사용해주면됩니다. Empty GameObject를 이용하여, 여러 오브젝트를 넣어둔 Face Prefab의 경우 Child Object의 MeshRenderer를 enabled를 이용하거나, SetActive를 이용한 경우, 얼굴 추적에 실패했다가 다시 추적에 성공했을때만 변경이 되는 일이 벌어질수 있습니다. 차라리 한 오브젝트를 나둔뒤, ARkitManager를 통해 간단한 Script로 MeshRenderer에서 Mesh 및 color를 변경해주는 방법이 간단하고, 직관적입니다.