사진 한 장으로 3D 얼굴 만들기 — 468개의 점이 머리카락 달린 머리가 되기까지 (Photo to 3D Face)

사진은 각 픽셀에 얼마나 많은 빛이 도달했는지를 기록한 파일입니다. 무엇이 얼마나 멀리 있었는지는 기록하지 않습니다. 그래서 사진을 3D 얼굴로 바꾸는 일은 파일 안에 든 깊이를 읽어내는 작업이 될 수 없습니다. 깊이는 애초에 그 안에 없기 때문입니다. 대신 검출기가 할 수 있는 일이 있습니다. 수없이 많은 얼굴을 보고 배운 모델이 눈꼬리와 코끝이 어디에 있는지 알아보고, 얼굴이 보통 어떤 형태인지에 기대어 그 위치를 3차원으로 짚어내는 것입니다.

이 페이지의 도구가 하는 일이 바로 그것입니다. 얼굴 전체에서 468개의 지점을 찾고, 그 지점들에 표준 얼굴 곡면을 맞춘 뒤, 사진을 그대로 그 위에 입힙니다. 결과물은 마우스로 돌려 보며 입체감을 조절할 수 있고, .glb 파일로 내려받아 Blender, Unity, 또는 아무 glTF 뷰어에서나 열 수 있습니다. 사진은 사용자의 브라우저가 직접 읽어 처리합니다.

이 글은 그 과정을 원리 순서대로 따라갑니다. 사진 한 장에 왜 깊이가 없는지에서 출발해, 468개의 점이 어떻게 곡면이 되는지, 사진이 어떻게 텍스처가 되는지, 머리카락은 어디서 오는지, 그리고 웹캠으로 표정을 옮기는 방법까지. 원리를 이해하면 이 도구가 무엇을 할 수 없는지도 자연스럽게 보입니다.

사진으로 3D 얼굴 만들기

정면 사진 한 장을 텍스처가 입혀진 3D 얼굴 메시로 만듭니다. 돌려보고 내려받을 수 있으며 형식은 .glb 입니다. 사진은 브라우저 안에서만 읽고 어디로도 올리지 않습니다.

개인정보: 이미지를 열고 측정하고 변환하는 일이 전부 이 기기 안에서 이뤄집니다. 서버로 가는 것은 없습니다.
가장 잘 나오는 조건: 정면에서 찍은 선명하고 고른 조명의 사진, 얼굴이 화면을 크게 채우고, 두꺼운 안경이나 얼굴을 가리는 머리카락이 없는 것.
JPEG, PNG, WebP. 얼굴을 자동으로 찾아 468개 점을 측정합니다.
좌우 사진 (선택) — 고개를 30~40° 정도 돌린 좌우 3/4 사진을 추가합니다. 옆면의 깊이를 실제로 측정하고, 늘어져 뭉개진 추정 대신 진짜 텍스처를 옆면에 입힙니다.
좌우 사진: 없음. 정면 사진만으로도 만들어집니다.
사진을 고르면 여기에 얼굴이 만들어집니다.
끌어다 놓거나 웹캠으로 찍어도 됩니다.
준비됨. 사진을 고르세요.

목차

  1. 사용 순서
  2. 사진 한 장에 깊이가 없는 이유
  3. 468개의 점, 898개의 삼각형
  4. 사진이 그대로 텍스처가 되는 과정
  5. 잘 나오는 사진 고르기
  6. 머리카락은 어디서 오는가
  7. 웹캠으로 표정 옮기기
  8. 결과물에 담기는 것과 담기지 않는 것
  9. Blender, Unity, three.js에서 열기
  10. 처리는 전부 기기 안에서
  11. 문제 해결
  12. 자주 묻는 질문

사용 순서

  1. 사진을 선택하거나 미리보기 영역으로 끌어다 놓습니다. 얼굴은 자동으로 찾아냅니다.
  2. 처음 한 번은 잠깐 기다립니다. 검출 모델이 약 4 MB인데, 최초 1회만 내려받고 이후에는 브라우저가 캐시해 둡니다.
  3. 미리보기 안쪽을 드래그하면 얼굴이 돌아가고, 옆에서 본 형태를 확인할 수 있습니다.
  4. 얼굴이 너무 평평하거나 지나치게 조각 같으면 “깊이”를, 표면이 울퉁불퉁하면 “매끄럽게”을 조절합니다.
  5. 머리 전체가 필요하면 “머리카락 포함”를 켜 두고, 맨 얼굴 마스크만 필요하면 끕니다.
  6. 얼굴 높이를 미터 단위로 지정해 두면 다른 프로그램에서 열었을 때 상식적인 크기로 나타납니다.
  7. 원한다면 “추적 시작”을 눌러 웹캠으로 얼굴을 실시간으로 움직여 봅니다.
  8. 다운로드를 누릅니다. 저장 전에 파일 검증이 한 번 돌고, 결과 보고가 로그에 표시됩니다.
왼쪽은 도구에 넣은 정면 사진, 오른쪽은 그 사진으로 만들어진 3D 머리. 머리카락까지 포함해 만들어진 상태.
실제로 이 도구에 사진을 넣어 만든 결과입니다. 사진은 서버로 올라가지 않고 브라우저 안에서만 처리됩니다.

사진 한 장에 깊이가 없는 이유

정면에서 찍은 두 사람의 사진은 거의 똑같아 보이면서도 옆모습은 전혀 다를 수 있습니다. 한 사람의 코가 1센티미터 더 나와 있어도, 정면에서는 그 차이가 픽셀을 거의 움직이지 않습니다. 그 정보는 이미지 안에 존재하지 않고, 어떤 처리를 거쳐도 되살아나지 않습니다.

검출기가 내놓는 것은 대신 그럴듯한 깊이입니다. 이런 형태의 얼굴이 보통 갖는 깊이 말입니다. 순서는 맞습니다. 코가 볼보다 앞에 있고, 볼이 귀보다 앞에 있습니다. 양도 대체로 비슷합니다. 하지만 그것은 내 얼굴을 잰 값이 아니고, 스캔은 더더욱 아닙니다.

“깊이” 슬라이더가 있는 이유가 여기에 있습니다. 추정값이 정확한 값인 척하는 대신, 도구는 그 값을 사용자가 직접 늘이고 줄이게 합니다. 내리면 얼굴이 부조처럼 납작해지고, 올리면 이목구비가 더 튀어나옵니다. 그동안 얼굴 윤곽은 전혀 변하지 않습니다. 깊이 축만 늘어나고 줄어들 뿐, 가로와 세로는 사진에서 온 값 그대로 두기 때문입니다.

468개의 점, 898개의 삼각형

검출기는 언제나 468개의 점을 정해진 순서로, 정해진 의미로 보고합니다. 1번 점은 어린아이 사진에서도 어른 사진에서도 코끝입니다. 이 고정된 순서가 나머지 전부를 가능하게 합니다. 어떤 얼굴에서든 같은 468개의 점이 나오므로, 898개의 삼각형 목록을 한 번만 만들어 두면 모든 얼굴에 재사용할 수 있습니다. 삼각형 자체는 변하지 않고, 꼭짓점이 어디에 놓이는지만 달라집니다.

점은 얼굴의 인상이 실리는 곳에 촘촘하고, 그렇지 않은 곳에 성깁니다. 입술, 눈꺼풀, 콧구멍에는 많은 점이 배정되고 볼과 이마에는 적습니다. 볼은 넓고 매끈한 면이라 몇 개의 점으로도 충분히 그려지기 때문입니다. 결과물에서 눈과 입은 설득력 있게 나오는데 이마는 어딘가 밋밋해 보이는 이유가 여기에 있습니다. 측정이 가장 성긴 곳이 이마입니다.

이 삼각형들이 만드는 곡면은 닫힌 입체가 아니라 열린 판입니다. 헤어라인과 귀, 턱 밑을 따라 경계선이 한 바퀴 돌고, 그 뒤에는 아무것도 없습니다. 엄밀히 말하면 가면입니다. 얼굴 앞면 모양으로 휘어 있는 한 장의 곡면입니다.

사진이 그대로 텍스처가 되는 과정

보통 텍스처 작업이라면 모델을 평면으로 펼쳐 놓고 그 위에 그림을 그리는 언랩 과정을 거칩니다. 여기서는 그 과정이 통째로 필요 없습니다. 측정 자체가 각 점이 사진의 어디에 있었는지를 이미 알려주기 때문입니다. 가로 40%, 세로 60% 지점에서 측정된 점에는 가로 40%, 세로 60% 위치의 픽셀이 입혀집니다. 사진이 아무 수정 없이 그대로 텍스처가 되고, 모든 이목구비가 측정된 자리에 정확히 놓입니다. 어긋남도, 이음매도, 언랩 단계도 없습니다.

측면이 늘어져 보이는 것도 같은 원리의 결과입니다. 턱선 가장자리의 점에는 그 점이 놓여 있던 픽셀이 입혀지는데, 실루엣 근처에서는 픽셀 하나가 카메라 반대쪽으로 굽어 도는 넓은 면을 혼자 덮어야 합니다. 그래서 정면은 선명하고, 옆으로 돌릴수록 번져 보입니다. 사진 한 장으로는 어쩔 수 없는 부분입니다. 그 면은 애초에 촬영된 적이 없기 때문입니다.

잘 나오는 사진 고르기

  • 정면을 본 사진. 고개가 30도 넘게 돌아가 있으면 얼굴 절반은 측정이 아니라 추측으로 채워집니다.
  • 고른 조명. 짙은 그림자는 피부색인 것처럼 텍스처에 구워지고, 모델에 다른 조명을 비춰도 그대로 남습니다.
  • 화면을 채운 얼굴. 넓은 사진 한구석의 작은 얼굴은 검출기가 쓸 픽셀이 적어 결과가 흐릿해집니다.
  • 무표정, 다문 입. 벌어진 입은 그 사이를 가로질러 늘어난 면으로 측정되어 이상하게 평평한 부분이 생깁니다.
  • 이마가 보이는 머리. 이마를 덮은 앞머리는 이마 위에 머리카락째 입혀집니다. 도구는 머리카락과 피부를 구분하지 못합니다.
  • 두꺼운 안경은 벗고. 안경테는 얼굴 곡면 위에 그대로 얹히고, 렌즈 반사는 밝은 얼룩으로 구워집니다.

머리카락은 어디서 오는가

468개의 점은 헤어라인에서 멈춥니다. 그래서 그 점만으로 만든 얼굴은 대머리로 나옵니다. 알아볼 수는 있지만 머리라기보다는 가면입니다. 머리카락은 다른 데서 와야 하는데, 사진을 보고 어느 픽셀이 머리카락인지 표시하는 두 번째 모델이 그 일을 맡습니다. 1 MB가 안 되는 작은 모델이고, 첫 번째 모델과 나란히 같은 기기에서 돌아갑니다.

이 모델이 내놓는 것은 형태가 아니라 윤곽입니다. 그 윤곽을 얼굴 점들의 테두리와 이어 붙이면 머리 전체의 실루엣이 되고, 실루엣에는 곡면을 씌울 수 있습니다. 격자를 깔고, 격자의 모든 점에 깊이를 주는 것입니다. 얼굴 안쪽은 측정된 깊이를 그대로 쓰므로 품질이 이전과 같습니다. 머리카락 위에는 측정된 것이 하나도 없으므로, 실루엣 가장자리에서 얼마나 떨어져 있는지에 따라 곡면을 둥글게 부풀립니다. 가장자리에 가까우면 낮아지고, 가운데로 갈수록 솟아오릅니다. 머리라는 물체가 대체로 그런 모양이고, 사진 한 장이 뒷받침할 수 있는 것은 거기까지입니다.

조심해야 했던 부분이 둘 있습니다. 머리카락 윤곽과 얼굴 테두리는 딱 맞물리지 않고 만나기 때문에 그 사이에 가느다란 빈틈이 남는데, 그대로 두면 그 틈이 훤히 뚫린 구멍으로 보입니다. 그래서 실루엣이 완전히 감싸고 있는 영역은 격자를 깔기 전에 전부 메웁니다. 또 측정된 깊이에서 부풀린 깊이로 갑자기 넘어가면 얼굴 둘레에 빛을 받아 도드라지는 능선이 생기므로, 두 깊이를 얼굴 폭의 10분의 1쯤 되는 띠에 걸쳐 서서히 섞습니다.

“머리 둥글기”는 머리카락이 얼마나 솟아오를지를 정합니다. 정답은 없습니다. 머리 뒤쪽은 촬영된 적이 없으니, 이것은 측정값을 복원하는 일이 아니라 결과물이 어떻게 보여야 하는지에 대한 판단입니다. “머리카락 포함”를 끄면 맨 얼굴 마스크로 돌아가는데, 그 위에 스컬핑을 올릴 바탕만 필요하다면 그쪽이 낫습니다.

결과물은 머리카락이 있는 머리이지, 완전한 머리는 아닙니다. 뒤통수는 여전히 없습니다. 사진에 찍힌 적이 없기 때문입니다. 카메라가 본 전부에 깊이를 입힌 것, 그것이 결과물입니다.

웹캠으로 표정 옮기기

얼굴이 만들어지고 나면 웹캠 앞의 내 얼굴로 그 얼굴을 움직일 수 있습니다. 가장 단순한 방법은 실시간 측정점을 메시에 그대로 흘려 넣는 것인데, 이 방법은 곧바로 실패합니다. 모델이 사진 속 인물이기를 그만두고 카메라 앞에 앉은 사람으로 변해 버립니다. 필요한 것은 정체성을 뺀 움직임만입니다.

그래서 도구는 트래킹을 시작할 때 무표정 기준 프레임을 하나 잡아 두고, 그 뒤로는 현재 표정과 기준의 차이만 적용합니다. 눈썹을 올리면 올린 만큼만 모델의 눈썹이 올라가고, 나머지는 만들어질 때의 형태를 그대로 유지합니다. 측정 단위는 픽셀이 아니라 눈 사이 폭이어서, 카메라 쪽으로 몸을 기울여도 얼굴이 부풀지 않습니다.

머리의 움직임은 따로 떼어내야 하고, 이것을 빼먹으면 바로 여기서 문제가 생깁니다. 고개를 돌리면 얼굴의 모든 점이 움직이는데, 그것을 표정으로 취급하면 모델이 돌아가는 대신 옆으로 찌그러집니다. 그래서 도구는 표정이 어떻게 변해도 거의 움직이지 않는 네 개의 점, 즉 양쪽 눈 바깥쪽 끝과 이마 꼭대기와 턱 끝으로 작은 좌표계를 만들고, 모든 것을 그 좌표계 안에서 측정합니다. 고개를 돌리고, 기울이고, 앞뒤로 움직여도 좌표계 안의 측정값은 전혀 변하지 않습니다. 진짜 표정만이 그 값을 움직입니다. 이렇게 분리해 낸 머리 회전은 모델에 회전으로 적용됩니다. 실제로 회전이기 때문입니다.

결과를 다듬는 조절값이 둘 있습니다. “표정 강도”는 움직임의 크기를 조절합니다. 파르르 떨리는 신호를 눌러 줄 수도 있고, 미묘한 표정을 실물보다 크게 밀어 올릴 수도 있습니다. “고개 회전 따라가기”을 끄면 얼굴이 정면을 유지한 채 표정만 움직이는데, 입 모양이 어떻게 움직이는지 살필 때는 대개 이쪽이 편합니다.

얼굴이 특정 표정에 눌어붙어 있다면, 기준 프레임을 잡는 순간에 무언가 표정을 짓고 있었다는 뜻입니다. “무표정 다시 잡기”을 누르고 얼굴에서 힘을 빼면 됩니다. 트래킹은 도구의 나머지 부분과 같은 검출기로, 같은 기기에서 돌아가며, 카메라 영상은 프레임마다 측정에만 쓰이고 곧바로 버려집니다. 녹화되지 않습니다.

좌우 사진으로 옆면을 실측하기

정면 사진 한 장의 약점은 옆면입니다. 옆으로 돌아간 면의 깊이는 추정값이고, 텍스처는 실루엣 근처에서 늘어집니다. 그래서 왼쪽·오른쪽 사진을 선택으로 추가할 수 있게 했습니다. 고개를 30~40°쯤 돌린 3/4 각도 사진이면 됩니다. 완전한 옆모습(90°)은 검출기가 얼굴을 놓치므로 쓸 수 없습니다.

측면 사진이 들어오면 두 가지가 달라집니다. 첫째, 각 사진의 468개 점을 머리 좌표계로 옮겨 평균하므로 옆면의 깊이가 추정이 아니라 측정에 가까워집니다 — 3/4 각도에서는 코의 돌출이 화면상 옆 방향 오프셋으로 직접 찍히기 때문입니다. 둘째, 삼각형 하나하나가 자신을 가장 정면으로 본 사진에서 텍스처를 읽습니다. 옆을 향한 삼각형은 측면 사진에서, 정면 삼각형은 정면 사진에서 가져오고, 사진 사이의 밝기 차이는 피부 영역 평균으로 맞춥니다.

측면 사진이 정면과 너무 어긋나면(다른 각도의 왜곡, 다른 사람, 검출 실패) 그 사진은 텍스처에서 자동으로 제외되고 로그에 이유가 남습니다. 웹캠으로 찍는 경우, 버튼을 누르면 어느 쪽을 보여줄지 안내가 나옵니다.

같은 3D 머리를 네 방향에서 돌려 본 화면. 옆면에서 코의 요철이 보이고 뒤통수는 닫힌 볼륨으로 채워져 있다.
같은 머리를 네 방향에서 본 모습. 옆면의 코 요철은 측정값이지만, 뒤통수는 사진에 없는 부분이라 대칭으로 추정해 채운 형태입니다.

뒤통수까지 닫힌 머리

사진에 없는 뒤통수는 원리적으로 복원할 수 없습니다. 그래도 모델을 돌렸을 때 뒤가 뻥 뚫려 있는 것과, 그럴듯하게 닫혀 있는 것은 쓰임새가 다릅니다. “뒤통수 닫기”를 켜면(기본값) 앞면 껍데기를 실루엣 가장자리에서 용접하고 뒤로 반사해 닫힌 볼륨을 만듭니다.

이때 얼굴의 요철을 그대로 반사하면 뒤통수에 코 모양이 찍히므로, 얼굴 부분의 굴곡은 거의 눌러서 반사하고 머리카락의 굴곡만 살립니다. 뒷면 텍스처는 사진에서 추출한 머리카락 색 그라데이션입니다 — 뒤통수에 얼굴이 비치는 일은 없습니다. 어디까지나 대칭으로 만든 추정 형태라는 점은 분명히 해 둡니다.

만든 얼굴을 바디에 올리기

얼굴만 있는 모델은 쓸 곳이 제한적입니다. 4단계에서 GLB·VRM·FBX 바디 모델을 불러와 만든 얼굴을 그 위에 얹을 수 있습니다. 리깅된 모델이면 이름으로 머리 본을 찾아(head, Head, mixamorig:Head, J_Bip_C_Head 순) 얼굴을 그 본의 자식으로 붙입니다 — 나중에 그 바디가 애니메이션되면 얼굴도 머리를 따라 움직인다는 뜻입니다. 뼈대가 없는 모델이면 모델 꼭대기에 놓입니다.

크기는 몸 높이에서 자동 추정하고(사람 몸은 얼굴 높이의 7.5배 안팎), 슬라이더로 크기·상하·앞뒤·회전을 다듬을 수 있습니다. 내보내면 바디와 얼굴이 합쳐진 하나의 GLB가 나옵니다. 두 가지 한계를 밝혀 둡니다: 원본 바디에 이미 달린 머리는 지우지 않으므로 얼굴이 그 위에 겹쳐 올라가고, VRM 바디를 쓰면 VRM 아바타 확장은 유지되지 않고 일반 GLB가 됩니다.

결과물에 담기는 것과 담기지 않는 것

맨 얼굴 기준으로는 정점 468개, 삼각형 898개짜리 메시 하나에 텍스처 한 장, 즉 사진 그 자체가 붙고, 지정한 얼굴 높이에 맞춘 실측 치수가 들어갑니다. 성인 얼굴은 턱에서 헤어라인까지 대략 0.22 m이고, 이 값이 기본값입니다. 파일은 binary glTF로, 요즘 3D 소프트웨어 대부분이 플러그인 없이 읽는 포맷입니다.

머리카락을 포함하면 메시는 머리 실루엣 위에 깐 격자가 되어 898개가 아니라 보통 1만~2만 개의 삼각형으로 늘어나고, 얼굴만이 아니라 머리카락과 이마와 귀까지 담깁니다. 어느 쪽이든 뒤통수와 목은 없고 뼈대도 없어서, 내려받은 파일 그대로는 포즈를 잡거나 애니메이션을 넣을 수 없습니다. 러프니스 맵이나 노멀 맵 같은 별도의 맵도 없습니다. 조명 디테일은 사진에 원래 있던 것이 전부이고, 어느 버전이든 포토그래메트리 스캔의 모공 수준 디테일에는 미치지 못합니다.

장면에 넣을 닮은 얼굴, 스컬핑의 밑판, 만들고 있는 모델과 비율을 맞춰 볼 기준으로는 이 정도면 충분합니다. 프로덕션용 캐릭터라면 이것을 참고 자료로 삼아 머리를 새로 만드는 쪽이 맞습니다.

Blender, Unity, three.js에서 열기

Blender에서는 File → Import → glTF 2.0으로 .glb를 고르면 됩니다. 텍스처는 파일 안에 내장되어 함께 들어오므로 따로 찾을 것이 없습니다. 얼굴은 +Z 방향을 보며 지정한 크기로 들어오는데, Blender 기본 장면이라면 기본 큐브 옆에 실제 얼굴만 한 크기로 놓입니다.

Unity는 자체적으로 glTF를 읽지 못하므로, glTFast나 UniGLTF를 설치한 프로젝트에 파일을 넣습니다. 웹페이지에서는 three.js의 GLTFLoader가 바로 읽습니다. 이 페이지가 미리보기를 보여줄 때 쓰는 것도 같은 로더입니다.

곡면이 열린 판이라 앞면과 뒷면이 있습니다. 렌더러 중에는 뒷면을 기본으로 숨기는 것들이 있어서, 모델을 돌렸을 때 얼굴이 사라진다면 그것을 보고 있는 것입니다. 재질은 양면에서 보이도록 설정되어 있지만, 임포터가 그 설정을 덮어쓸 수 있습니다.

처리는 전부 기기 안에서

사진의 디코딩과 측정, 변환은 모두 브라우저 안에서 일어납니다. 사진도 웹캠 영상도 서버로 올라가지 않고, 어디에도 사본이 남지 않습니다. 네트워크에서 가져오는 것은 검출 모델 자체, 약 4 MB의 가중치뿐인데, 한 번 내려받으면 캐시되고 이 전송에는 이미지에 관한 정보가 전혀 담기지 않습니다.

이 점은 다른 종류의 도구보다 여기서 더 중요합니다. 얼굴 사진은 스프레드시트와는 무게가 다른 개인정보이고, 서버에서 얼굴 사진을 받아 처리하는 서비스는 사용자에게 큰 신뢰를 요구하는 셈입니다. 작업이 기기 안에서 끝나면 그 신뢰 문제는 답을 얻는 것이 아니라 사라집니다. 지키고, 보관하고, 삭제할 것을 두고 고민할 일 자체가 생기지 않기 때문입니다.

문제 해결

얼굴을 찾지 못합니다. 얼굴이 화면에서 너무 작거나, 너무 어둡거나, 너무 많이 돌아가 있을 수 있습니다. 머리 주위로 바짝 잘라내고 다시 시도해 보세요. 얼굴이 이미지의 3분의 1 이상을 차지하면 무난합니다.

얼굴이 평평해 보입니다. “깊이”를 올리면 됩니다. 망원 렌즈로 찍었거나 멀리서 찍은 사진은 검출기가 기대는 원근 단서가 약해서 깊이 추정이 납작하게 나오는 경향이 있습니다.

표면이 울퉁불퉁합니다. “매끄럽게”을 한두 단계 올립니다. 한 단계마다 모든 점을 이웃 점들과 평균 내어 측정 잡음을 걷어냅니다. 너무 올리면 코와 입술이 볼 쪽으로 녹아들기 시작합니다.

가장자리가 번져 보입니다. 실루엣 부분이고, 원래 그렇습니다. 카메라에서 비껴 돌아간 면이라 아주 적은 픽셀로 덮여 있습니다. 고개가 조금 덜 돌아간 사진으로 바꾸면 나아지지만, 사진을 한 장 더 넣는 것은 도움이 되지 않습니다. 이 도구는 이미지 하나만 사용합니다.

검출 모델이 로드되지 않습니다. 최초 실행에는 WebAssembly와 동작하는 네트워크 연결이 필요합니다. CDN에서 오는 스크립트를 막는 브라우저 확장 프로그램이 있으면 로드가 막힙니다. 첫 다운로드 이후에는 전부 오프라인으로 돌아갑니다.

자주 묻는 질문

사진 한 장으로 3D 얼굴을 무료로 만들 수 있나요?

네. 이 도구는 브라우저에서 무료로 실행되며 계정도 설치도 필요 없습니다. 사진 처리는 사용자의 기기 안에서 이루어집니다.

결과물이 제 얼굴의 정확한 3D 스캔인가요?

아니요. 사진 한 장에는 깊이 정보가 없어서, 깊이는 얼굴이 보통 갖는 형태에서 추정한 값입니다. 가로·세로 크기와 비율은 사진에서 그대로 나와 정확하지만, 앞뒤 형태는 그럴듯한 추측이며 “깊이” 슬라이더로 조절할 수 있습니다.

뒤통수도 만들어지나요?

머리카락은 만들어지지만 뒤통수는 아닙니다. “머리카락 포함”를 켜면 사진 속 머리카락 윤곽을 따라 머리 형태까지 모델에 포함되어, 맨 얼굴 가면이 아니라 머리에 가까운 결과를 얻습니다. 다만 머리 뒤쪽은 촬영된 적이 없어 복원할 수 없으므로 모델은 앞면 곡면으로 남고, 완전한 머리는 3D 소프트웨어에서 닫아 주어야 합니다.

얼굴을 움직이거나 아바타로 쓸 수 있나요?

이 페이지 안에서는 가능합니다. “추적 시작”을 누르면 웹캠이 얼굴을 실시간으로 움직이고, 머리 회전과 표정이 분리되어 있어 모델이 찌그러지지 않고 돌아갑니다. 내려받은 파일은 별개의 문제입니다. 뼈대도 블렌드셰이프도 없는 정적 메시로 저장되므로, Blender에서 리깅하거나 기존 머리 모델에 붙이는 것이 보통 다음 단계입니다.

어떤 파일 형식으로 받나요?

텍스처가 내장된 binary glTF, 즉 .glb 파일입니다. Blender는 File → Import → glTF 2.0으로 불러오고, Unity는 glTFast나 UniGLTF가 필요합니다. 온라인 3D 뷰어 대부분은 설정 없이 바로 엽니다.

사진이 어딘가로 전송되나요?

아니요. 이미지는 브라우저 안에서 디코딩되고 측정될 뿐입니다. 유일한 네트워크 요청은 검출 모델을 처음 한 번 내려받는 것이고, 그 요청에 사진에 관한 정보는 담기지 않습니다.

위로 스크롤