레퍼런스 · ARKit · 페이스 트래킹
ARKit 블렌드셰이프 52개, 실제 헤드에서.
ARKit은 얼굴을 블렌드셰이프 52개로 나타냅니다. jawOpen이나 eyeBlinkLeft 같은 움직임마다 0에서 1 사이의 가중치를 줍니다. iPhone의 페이스 트래킹이 이 가중치를 보내면 Live Link Face, VTuber 앱, 게임 엔진이 같은 52개 블렌드셰이프를 가진 헤드라면 어디서든 재생합니다. 여기에 모든 이름과 각각이 움직이는 부위, 그리고 52개를 모두 가진 헤드가 있습니다.
얼굴 부위별 52개 전체
이름은 Apple이 쓰는 그대로입니다. Left와 Right는 보는 사람이 아니라 얼굴 자신의 왼쪽과 오른쪽입니다.
눈블렌드셰이프 14개
eyeBlinkLeft눈꺼풀을 감습니다.
eyeBlinkRighteyeLookDownLeft아래를 보는 시선을 눈꺼풀이 따라갑니다.
eyeLookDownRighteyeLookInLeft코 쪽을 보는 시선을 눈꺼풀이 따라갑니다.
eyeLookInRighteyeLookOutLeft코 반대쪽을 보는 시선을 눈꺼풀이 따라갑니다.
eyeLookOutRighteyeLookUpLeft위를 보는 시선을 눈꺼풀이 따라갑니다.
eyeLookUpRighteyeSquintLeft눈을 가늘게 뜹니다. 아래 눈꺼풀과 볼이 올라갑니다.
eyeSquintRighteyeWideLeft눈을 크게 뜹니다. 위 눈꺼풀이 올라갑니다.
eyeWideRight
턱블렌드셰이프 4개
jawForward턱을 앞으로 내밉니다.jawLeft턱을 얼굴의 왼쪽으로 움직입니다.jawRight턱을 얼굴의 오른쪽으로 움직입니다.jawOpen턱을 벌립니다.
입블렌드셰이프 23개
mouthClose턱이 벌어진 채로 입술을 다뭅니다.jawOpen과 함께 씁니다.mouthFunnel"우" 발음처럼 벌린 입술을 깔때기 모양으로 둥글게 모읍니다.mouthPucker입맞춤할 때처럼 다문 입술을 앞으로 내밉니다.mouthLeft두 입술을 얼굴의 왼쪽으로 움직입니다.mouthRight두 입술을 얼굴의 오른쪽으로 움직입니다.mouthSmileLeft입꼬리를 올립니다.
mouthSmileRightmouthFrownLeft입꼬리를 내립니다.
mouthFrownRightmouthDimpleLeft입꼬리를 보조개 쪽으로, 뒤로 당깁니다.
mouthDimpleRightmouthStretchLeft입꼬리를 옆과 아래로 늘입니다.
mouthStretchRightmouthRollLower아랫입술을 치아 쪽으로 말아 넣습니다.mouthRollUpper윗입술을 치아 쪽으로 말아 넣습니다.mouthShrugLower아랫입술을 위와 바깥으로 밀어 올립니다.mouthShrugUpper윗입술을 위와 바깥으로 밀어 올립니다.mouthPressLeft해당 쪽 아랫입술을 윗입술에 대고 누릅니다.
mouthPressRightmouthLowerDownLeft해당 쪽 아랫입술을 아래로 당깁니다.
mouthLowerDownRightmouthUpperUpLeft해당 쪽 윗입술을 올립니다.
mouthUpperUpRight
눈썹블렌드셰이프 5개
browDownLeft눈썹 바깥쪽을 내립니다.
browDownRightbrowInnerUp양 눈썹의 안쪽 끝을 올립니다.browOuterUpLeft눈썹 바깥쪽을 올립니다.
browOuterUpRight
볼블렌드셰이프 3개
cheekPuff양 볼을 부풀립니다.cheekSquintLeft아래 눈꺼풀 주변의 볼을 올립니다.
cheekSquintRight
코블렌드셰이프 2개
noseSneerLeft비웃을 때처럼 코 옆을 들어 올립니다.
noseSneerRight
혀블렌드셰이프 1개
tongueOut혀를 입 밖으로 내밉니다.
이름 출처: Apple ARKit 문서.
실제 헤드에서 블렌드셰이프 움직이기
FaceNinja가 각각 사진 한 장으로 만든 샘플 헤드입니다. 하나를 불러와 슬라이더를 드래그해 보십시오. 슬라이더 하나가 그 얼굴의 ARKit 블렌드셰이프 하나이고, 표정은 여러 개를 섞은 것입니다.
샘플 헤드

화살표 키로 헤드를 돌립니다. +와 -로 확대·축소합니다. 0은 시점을 초기화합니다. Esc는 뷰어를 닫습니다.
ARKit 값
값은 표정을 따라갑니다. 슬라이더로 셰이프 하나를 설정합니다.
표정 6가지와 그 표정을 만드는 블렌드셰이프
표정은 블렌드셰이프의 조합입니다. 아래 스틸은 모두 샘플 S-16에서 그 아래 적힌 블렌드셰이프를 올린 것이며, 무표정에는 아무것도 올리지 않았습니다.
중립—
미소mouthSmileLeft mouthSmileRight
놀람jawOpen browInnerUp
찡그림browDownLeft mouthFrownLeft
mouthPucker
eyeBlinkLeft
tongueOut에 혀가 필요한 이유
tongueOut은 혀가 있고 입이 충분히 벌어지는 헤드에서만 보입니다. FaceNinja 헤드는 둘 다 갖추고 있어서 GLB와 FBX에 tongueOut을 포함한 52개 블렌드셰이프가 모두 들어 있습니다.
퍼펙트싱크: VTuber 방송의 52개 블렌드셰이프
VTuber 방송에서는 ARKit 블렌드셰이프 52개를 모두 가진 아바타를 퍼펙트싱크(Perfect Sync, パーフェクトシンク)라고 부릅니다. 몇 가지 프리셋 대신 iPhone의 트래킹이 블렌드셰이프 하나하나를 직접 움직입니다. VRM 기반 앱에는 VRM 파일이 필요한데, FaceNinja는 VRM 파일을 만들지 않습니다. 무료 크리에이터 키트는 다른 길을 택합니다. 내 헤드가 Unreal Engine 안의 MetaHuman이 되고, Live Link Face나 웹캠으로 움직입니다.
엔진별 52개 블렌드셰이프의 위치
| 엔진 | 블렌드셰이프 위치 | 참고 |
|---|---|---|
| Unreal Engine | 스켈레탈 메시의 모프 타깃. Live Link Face가 이름으로 구동합니다. | 모프 타깃을 켜고 가져온 다음, 헤드 머티리얼에서 Used with Morph Targets를 체크하십시오(문서 EN). |
| Unity | Skinned Mesh Renderer의 블렌드셰이프(FBX에서 가져옴). | 모델 임포트 설정에서 Import BlendShapes는 기본으로 켜져 있습니다. |
| Godot 4 | MeshInstance3D의 블렌드셰이프(GLB에서 가져옴). | find_blend_shape_by_name()이 set_blend_shape_value()에 쓸 인덱스를 알려 줍니다. |
| three.js | mesh.morphTargetDictionary가 각 이름을 mesh.morphTargetInfluences의 인덱스에 대응시킵니다. | GLTFLoader로 GLB를 불러옵니다. |
ARKit 블렌드셰이프에 관한 질문
- 01ARKit 블렌드셰이프란 무엇입니까?
- Apple이 iPhone과 iPad의 페이스 트래킹을 위해 정의한, 이름이 붙은 얼굴 움직임 52가지입니다. 각각 0에서 1 사이의 가중치이며, 어떤 표정이든 이들의 조합입니다.
- 02ARKit 블렌드셰이프는 몇 개입니까?
- 52개입니다. 눈 14개, 턱 4개, 입 23개, 눈썹 5개, 볼 3개, 코 2개, 혀 1개입니다.
- 03iPhone이 필요합니까?
- 52개를 모두 실시간으로 캡처하려면 Face ID가 있는 iPhone처럼 Apple의 페이스 트래킹을 지원하는 기기가 필요합니다. Live Link Face도 이 기능을 씁니다. 재생만 한다면 블렌드셰이프를 읽는 엔진이면 무엇이든 되고, iPhone은 필요 없습니다.
- 04FaceNinja 헤드에
tongueOut이 포함됩니까? - 네. GLB와 FBX에
tongueOut을 포함한 52개 블렌드셰이프가 모두 들어 있으며, 얼굴마다 맞게 만듭니다. - 05퍼펙트싱크란 무엇입니까?
- ARKit 블렌드셰이프 52개를 모두 가진 아바타를 가리키는 VTuber 용어입니다. 페이스 트래킹이 블렌드셰이프 하나하나를 직접 움직입니다.
- 0652개를 모두 가진 헤드를 시험해 볼 수 있습니까?
- 네. 무료로 가입하고 샘플 헤드 20개를 다운로드하십시오. 모든 GLB와 FBX에 52개가 다 들어 있습니다.