눈 애니메이션 헬퍼
립 싱크 외에도 Runtime MetaHuman Lip Sync 플러그인에는 MetaHuman 눈을 애니메이션하기 위한 두 가지 선택적 보조 유틸리티가 포함되어 있습니다:
- 자동 눈 깜빡임: 메타휴먼에서 자연스럽고 무작위적인 눈 깜빡임을 생성하는 헬퍼
- 눈 조준: 메타휴먼의 눈이 월드 공간 위치를 바라보게 하는 애니메이션 블루프린트 노드
이 기능들은 립싱크와 완전히 독립적이며, 단독으로 사용하거나 함께 사용하거나 립싱크 노드와 결합하여 사용할 수 있습니다. 이는 수동으로 제작하지 않고도 생생한 눈 동작을 추가할 수 있는 가볍고 바로 적용 가능한 헬퍼로 설계되었습니다.
기능 미리보기
비디오 둘러보기
두 헬퍼에 대한 전체 워크스루와 레거시 리그 우회 방법을 포함합니다.
얼굴 애니메이션 파이프라인에 이미 깜빡임과 동적 시선 처리가 포함되어 있다면 이 페이지는 건너뛰어도 됩니다. 이러한 헬퍼는 직접 제작하지 않고 생생한 눈 동작을 원하는 경우를 위해 존재합니다. 예를 들어, 애니메이션 시퀀스에 깜빡임이 포함되지 않거나, 움직이는 대상을 눈이 동적으로 따라가야 하는 경우(정적 애니메이션 시퀀스로는 불가능한 작업)에 유용합니다. 또한 기존 얼굴 애니메이션 위에 레이어로 추가하여 입만 움직이는 시퀀스에 깜빡임 같은 누락된 요소를 보완할 수도 있습니다.
자동 눈 깜빡임
자동 눈 깜빡임 헬퍼는 MetaHuman 페이스 컨트롤 릭의 CTRL_L_eye_blink 및 CTRL_R_eye_blink 커브를 구동하여 무작위적이고 자연스러운 눈 깜빡임을 생성합니다.
작동 방식
매 프레임마다 Face Animation Blueprint의 Event Graph에서 Update MetaHuman Auto Blink를 호출하고 해당 프레임의 델타 시간을 전달합니다. 이 함수는:
- 캐릭터별 상태(다음 깜빡임 시간, 현재 열림/닫힘 단계 등)를 호출하는
AnimInstance를 키로 추적합니다 - 0..1 범위의 두 개의 float 값을 반환하며, 하나는 왼쪽 눈용, 하나는 오른쪽 눈용으로, 각 눈이 현재 얼마나 닫혀 있는지를 나타냅니다
- 그런 다음 이 값들을 Blueprint 변수에 저장하고 Anim Graph의 Control Rig 노드에 공급합니다
설정
두 단계: 이벤트 그래프에 깜빡임 호출을 추가한 다음, 애님 그래프의 컨트롤 릭 노드에 값을 전달하세요.
1. 이벤트 그래프: 매 프레임마다 블링크 값을 구동합니다.
Face Animation Blueprint(예: Face_AnimBP 또는 복제/복사한 버전, 설정 가이드 참조)에서 Event Graph를 열고 Event Blueprint Update Animation에 다음을 추가하세요:
Update MetaHuman Auto Blink호출- Delta Time X (이벤트에서)를 Delta Seconds에 연결
- (선택 사항) Config 구조체를 구성합니다. 기본값은 이미 자연스러워 보입니다
- Left Blink Value 및 Right Blink Value를 Blueprint 변수로 승격합니다 (예:
LeftBlinkValue,RightBlinkValue)

2. 애님 그래프: 값을 페이스 컨트롤 릭에 전달합니다.
애님 그래프에서 동일한 애니메이션 블루프린트의:
- 블링크 커브를 구동할 컨트롤 릭 노드를 배치하세요. 정확한 위치는 오토 블링크를 다른 얼굴 애니메이션(립 싱크, 커스텀 시퀀스 등)과 결합하는지 여부에 따라 달라집니다:
- 다른 안면 애니메이션 없음:
Output Pose앞의 메인 체인에 Control Rig 노드를 직접 배치하세요. - 립싱크 및/또는 다른 안면 애니메이션과 결합: 이 Control Rig 노드를 체인에 직접 배치하는 대신
Layered blend per bone노드에 연결하세요. 아래 팁을 참조하십시오.
- 다른 안면 애니메이션 없음:
- 노드의 Details 패널에서 Control Rig Class(UE 5.8 이상에서는 Control Rig Asset Reference)를 MetaHuman 얼굴 Control Rig로 설정합니다. 경로는 일반적으로 다음과 같습니다:
/All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig- 프로젝트에 따라 MetaHuman을 가져온 방식에 따라 경로가 다를 수 있습니다.
- Details 패널에서 Input 섹션을 확장하고 다음에 대해 Use Pin을 활성화합니다:
CTRL_L_eye_blinkCTRL_R_eye_blink
LeftBlinkValue변수를CTRL_L_eye_blink에 연결하세요RightBlinkValue변수를CTRL_R_eye_blink에 연결하세요

다른 얼굴 애니메이션과 결합하지 않는 경우, 깜빡임 값이 덮어쓰이지 않도록 체인에서 립싱크 블렌드 노드(및 기타 얼굴 애니메이션 노드) 뒤에 컨트롤 릭 노드를 배치하세요. 립싱크나 다른 얼굴 애니메이션과 결합하는 경우, 기존 애니메이션과 결합하기 가이드를 따라 이 컨트롤 릭 노드를 Layered blend per bone 노드의 Base Pose 입력에 대신 연결하세요. 레이어드 블렌드 노드는 둘 다 유지하며, 하나가 단순히 다른 하나를 덮어쓰지 않게 합니다.
구성
Update MetaHuman Auto Blink 노드는 선택적 Config 구조체를 허용합니다. 기본값은 대부분의 캐릭터에 자연스러운 모습을 제공하므로, 동작을 조정하려면 아래를 펼쳐보세요.
설정 속성
타이밍
| 속성 | 기본값 | 설명 |
|---|---|---|
| 깜빡임 사이 최소 시간 | 2.0초 | 눈이 완전히 뜬 상태에서 깜빡임 사이의 최소 간격입니다. |
| 깜빡임 사이 최대 시간 | 4.0초 | 깜빡임 사이의 최대 간격입니다. 실제 간격은 최소값과 최대값 사이에서 무작위로 결정됩니다. |
| 감은 상태 유지 최소 시간 | 0.04초 | 눈이 완전히 감긴 상태를 유지하는 최소 시간입니다. |
| 감은 상태 유지 최대 시간 | 0.08초 | 눈이 완전히 감긴 상태를 유지하는 최대 시간입니다. |
보간
| 속성 | 기본값 | 설명 |
|---|---|---|
| 닫기 보간 속도 | 35.0 | 눈을 감을 때의 속도입니다. 인간은 눈을 뜰 때보다 감을 때가 더 빠르므로, 이 값은 의도적으로 뜨는 속도보다 높게 설정되어 있습니다. |
| 열기 보간 속도 | 18.0 | 눈을 뜰 때의 속도입니다. |
| 닫힘 임계값 | 0.97 | 깜빡임이 "완전히 감긴" 상태로 간주되고 유지 단계가 시작되는 값입니다. |
| 열림 임계값 | 0.02 | 깜빡임이 "완전히 열린" 상태로 간주되고 다음 깜빡임이 예약되는 값입니다. |
기타
| 속성 | 기본값 | 설명 |
|---|---|---|
| 독립 눈 깜빡임 | false | true인 경우, 왼쪽과 오른쪽 눈이 서로 다른 타이밍으로 독립적으로 깜빡입니다. false(기본값)인 경우, 양쪽 눈이 완벽하게 동기화되어 깜빡입니다. |
bEnabled (함수 핀) | true | false인 경우, 눈이 천천히 뜨고 깜빡임이 일시 중지됩니다. 컷신, 수면, 사망 등의 상황에 유용합니다. |
Runtime Control
**Reset Auto Blink State**를 호출하여 특정 AnimInstance의 내부 상태를 명시적으로 초기화할 수도 있습니다 (예: 캐릭터를 리스폰하거나 시네마틱 상태를 전환할 때).
눈 조준
눈 조준 헬퍼는 애니메이션 블루프린트 노드(Runtime MetaHuman Eyes Aim)로, 캐릭터의 눈이 월드 공간의 위치(예: 플레이어 카메라, 다른 액터, 또는 움직이는 대상)를 추적하게 만듭니다. 이 노드는 요/피치 클램핑, 스무딩, 대상이 머리 뒤로 지나갈 때의 안티-플립 보호, 그리고 사실감을 높이기 위한 선택적 마이크로-새케이드를 지원합니다.
모드 선택하기
이 노드는 노드의 Details 패널에 있는 Mode 드롭다운을 통해 선택되는 두 가지 모드를 지원합니다:
| Mode | 구동 대상 | 배치 위치 |
|---|---|---|
| 커브(기본값) | 얼굴 컨트롤 릭의 눈 응시 커브(CTRL_expressions_eyeLook*) | 페이스 애니메이션 블루프린트(예: Face_AnimBP)에서 컨트롤 릭 노드 앞에 |
| 본 | FACIAL_L_Eye / FACIAL_R_Eye 본을 컨트롤 릭을 거치지 않고 직접 사용 | 페이스 포스트 프로세스 애니메이션 블루프린트(예: Face_PostProcess_AnimBP)에서 AnimNode_RigLogic 노드 뒤에 |
커브 모드가 권장 기본값입니다. 이 모드는 값이 일반적인 컨트롤 릭 평가를 통해 결합되어 본 변환을 두고 충돌하지 않으므로, 다른 커브 기반 얼굴 시스템(립 싱크, 표정, ARKit 블렌드셰이프 등)과 깔끔하게 호환됩니다.
일부 MetaHuman 변형(특히 Quixel Bridge를 통해 다운로드한 일부를 포함한 구형 릭)에서는 눈 응시 커브가 실제로 눈을 구동하지 않습니다. 눈에 보이는 증상은 Curves 모드 노드가 활성화된 상태에서 대상 위치와 관계없이 눈이 아래를 향해 동공이 거의 가려지는 것입니다.
이 내용이 보이면 본 모드로 전환하세요. 본 모드는 눈 뼈를 직접 회전시키므로, 컨트롤 릭이 어떻게 연결되어 있든 모든 MetaHuman 변형에서 작동합니다. 아래 설정의 본 탭을 참조하세요.
설정
- 커브 모드(기본값)
- 뼈 모드(폴백)
기본 설정입니다. 이 노드는 표준 Face Animation Blueprint에 있으며 얼굴 Control Rig의 시선 추적 커브를 구동합니다.
두 단계: 애님 그래프에 노드를 추가한 다음, 이벤트 그래프에서 대상 위치를 입력합니다.
1. 애님 그래프: 노드 추가
Face Animation Blueprint의 Anim Graph에서:
Runtime MetaHuman Eyes Aim노드를 추가하세요- 디테일 패널에서 Mode를 Curves로 설정한 상태로 두세요
- 눈-응시 커브에 기록할 수 있는 다른 모든 얼굴 로직(립싱크, 커스텀 애니메이션 등) 뒤에 배치하세요. Auto Blink Control Rig 노드와 동일한 원칙입니다
- 기존 포즈를 Source Pose에 연결하세요
- 출력을 체인의 다음 노드(또는
Output Pose)에 연결하세요 Vector블루프린트 변수(예:TargetWorldLocation)를 생성하고 이를 노드의 Target World Location 핀에 연결하세요. 다음 단계에서 이벤트 그래프에서 이 변수를 업데이트하게 됩니다.

2. 이벤트 그래프: 목표 위치를 입력합니다.
Target World Location 핀은 월드 공간 FVector를 기대합니다. 일반적인 경우는 MetaHuman이 플레이어 카메라를 바라보게 하는 것입니다. Event Blueprint Update Animation에서:
- 플레이어 카메라 매니저 가져오기 (플레이어 인덱스 0)
- 유효한지 확인
- 유효하다면 카메라 위치 가져오기 호출
TargetWorldLocation블루프린트 변수에 저장

대신 임의의 액터(NPC, 아이템, 관심 지점)를 추적하려면 매 프레임마다 해당 액터의 위치를 가져와 동일한 변수에 저장하세요. 고정된 시선 지점의 경우 Target World Location을 한 번 설정하거나 노드의 Details 패널에서 상수로 설정하세요.
이 설정은 Curves 모드 방식이 사용 중인 MetaHuman 변형에서 작동하지 않을 경우 사용하세요(위의 경고 참조). Bones 모드에서 노드는 눈 뼈를 직접 회전시키며 Control Rig 평가가 끝난 후에 실행되어야 합니다. 즉, 일반 Face AnimBP가 아닌 Face Post Process Animation Blueprint에 속해야 합니다.
세 단계: 포스트 프로세스 애님 BP를 찾고, 리그로직(RigLogic) 뒤에 노드를 추가한 다음, 해당 블루프린트의 이벤트 그래프에서 타겟 위치를 입력합니다.
1. Face Post Process Anim BP를 찾으세요.
- 메타휴먼의 얼굴 스켈레탈 메시 에셋을 엽니다 (예: 메타휴먼 폴더 아래의
Face) - 에셋의 디테일 패널에서 포스트 프로세스 애님 블루프린트 필드를 찾습니다
- 해당 에셋을 엽니다. 일반적으로
Face_PostProcess_AnimBP와 같은 이름으로 지정되어 있습니다.
2. 애님 그래프: 리그로직(RigLogic) 뒤에 노드를 추가하세요.
Face Post Process Anim BP의 Anim Graph에서:
- 기존
AnimNode_RigLogic노드를 찾습니다 (얼굴 Control Rig 커브를 본 트랜스폼으로 변환합니다) Runtime MetaHuman Eyes Aim노드를AnimNode_RigLogic다음 및Output Pose앞에 추가합니다- 노드의 Details 패널에서 Mode를 Bones로 설정합니다
AnimNode_RigLogic을 Eyes Aim 노드의 Source Pose에 연결합니다- Eyes Aim 노드의 출력을
Output Pose에 연결합니다 - 이 Post Process Anim BP에
VectorBlueprint 변수(예:TargetWorldLocation)를 생성하고 노드의 Target World Location 핀에 연결합니다

기본 본 참조(FACIAL_L_Eye 및 FACIAL_R_Eye)는 표준 MetaHuman 얼굴 스켈레톤과 일치합니다. 캐릭터가 다른 눈 본 이름을 사용하는 맞춤형 스켈레톤을 사용하는 경우, 노드의 Details 패널에서 Bones 카테고리 아래에 이를 재정의하세요.
3. 이벤트 그래프: 목표 위치를 입력합니다.
노드가 Post Process Anim BP에 있기 때문에 대상 위치 로직도 이 블루프린트의 Event Graph에 있어야 하며, Face_AnimBP에는 있으면 안 됩니다. 설정은 Curves 모드와 동일하며(카메라 위치, 액터의 위치 가져오기, 또는 상수 사용), Face_PostProcess_AnimBP 내부에서 수행하면 됩니다.

관련 없는 로직(립싱크, 자동 깜빡임 등)은 일반 Face AnimBP에 남아 있어도 됩니다. Eyes Aim의 타겟 위치 계산만 여기로 이동하면 됩니다. 페이스 컨트롤 릭은 커브를 기반으로 매 프레임마다 눈 뼈를 강제로 구동합니다. Eyes Aim 노드가 일반 페이스 AnimBP(컨트롤 릭 이전)에서 실행되었다면, 컨트롤 릭이 이후에 뼈 회전을 덮어썼을 것입니다. 포스트 프로세스 Anim BP는 컨트롤 릭이 최종 뼈 변환을 생성한 이후에 실행되므로, "승리"해야 하는 최종 뼈 회전을 적용하기에 올바른 위치입니다.본즈 모드에 포스트 프로세스 애님 BP가 필요한 이유는 무엇인가요?
구성
모든 설정은 Runtime MetaHuman Eyes Aim 노드의 세부 정보 패널에 노출됩니다.
조준 및 고정
목표
| 속성 | 기본값 | 설명 |
|---|---|---|
| Mode | 곡선 | 눈이 구동되는 방식을 선택합니다. 모드 선택을 참조하세요. |
| 대상 월드 위치 | (0,0,0) | 눈이 바라보는 월드 공간의 지점입니다. 기본적으로 핀으로 노출됩니다. |
bEnabled | true | false인 경우, 눈이 정면으로 완화되어 돌아가며 대상을 무시합니다. 기본적으로 핀으로 노출됩니다. |
클램프
| 속성 | 기본값 | 설명 |
|---|---|---|
| 최대 요 각도 | 35° | 머리의 정면 방향에서 최대 수평(요) 편향 각도입니다. 0~80으로 제한됩니다. |
| 최대 피치 각도 | 25° | 머리의 정면 방향에서 최대 수직(피치) 편향 각도입니다. 0~80으로 제한됩니다. |
| 뒤집힘 방지 | true | 대상이 머리 뒤로 지나갈 때 눈이 뒤집히는 것을 방지합니다. |
부드러움 및 단속적 안구 운동
부드럽게 하기
| 속성 | 기본값 | 설명 |
|---|---|---|
| 보간 속도 | 12.0 | 눈 움직임의 부드러움 속도입니다. 값이 높을수록 더 빠르고, 낮을수록 더 느긋합니다. |
단속적 안구 운동
미세 단속성 안구 운동(micro-saccades)은 실제 눈이 끊임없이 수행하는 아주 작고 무작위적인 시선 이동입니다. 이를 추가하면 완벽하게 매끄러운 추적에서 나타나는 "죽은 눈" 같은 인상을 피할 수 있습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
| 미세 단속 운동 활성화 | true | 미세 단속 운동(마이크로 새케이드)을 켜거나 끕니다. |
| 단속 운동 요 각도(도) | 1.5° | 단속 운동당 최대 수평 흔들림. 작은 값(1–2°)은 자연스럽게 느껴지고, 큰 값은 불안정해 보입니다. |
| 단속 운동 피치 각도(도) | 1.0° | 단속 운동당 최대 수직 흔들림. 일반적으로 요 각도보다 약간 작습니다. |
| 최소 단속 운동 간격 | 0.6초 | 단속 운동 사이의 최소 시간. |
| 최대 단속 운동 간격 | 2.5초 | 단속 운동 사이의 최대 시간. 값이 클수록 차분하게 느껴지고, 값이 작을수록 불안정하게 느껴집니다. |
뼈 (뼈 모드 전용)
| 속성 | 기본값 | 설명 |
|---|---|---|
| 왼쪽 눈 뼈 | FACIAL_L_Eye | 왼쪽 눈 뼈 이름. 표준 MetaHuman 얼굴 골격과 일치합니다. |
| 오른쪽 눈 뼈 | FACIAL_R_Eye | 오른쪽 눈 뼈 이름. 표준 MetaHuman 얼굴 골격과 일치합니다. |
보정 (커브 모드 전용)
이 값들은 헤드-스페이스 각도가 MetaHuman 얼굴 CR의 눈-응시 곡선 값에 매핑되는 방식을 정의합니다. 기본값은 표준 MetaHuman 얼굴 CR에 맞게 조정되어 있으며, 변경이 필요한 경우는 거의 없습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
| 단위 곡선당 요 각도 | 30° | 요(Yaw) 응시 곡선에서 곡선 값 1.0에 해당하는 각도입니다. |
| 단위 곡선당 피치 각도 | 25° | 피치(Pitch) 응시 곡선에서 곡선 값 1.0에 해당하는 각도입니다. |
립 싱크 및 기타 애니메이션과 결합하기
두 헬퍼 모두 플러그인의 립싱크 노드 및 이미 보유한 커스텀 페이셜 애니메이션과 공존하도록 설계되었습니다.
- Eyes Aim은 동일한 체인에서 립싱크 및 사용자 지정 얼굴 애니메이션 다음에 배치해야 합니다. 그래야 눈 시선 값이 다운스트림에서 덮어써지지 않습니다. 위의 모드 선택 및 설정을 참조하세요.
- Auto Blink는 단순한 선형 배치 대신
Layered blend per bone노드를 사용합니다. Control Rig 노드를 Base Pose 입력에 연결하는 방법은 위의 배치의 중요성 팁을 참조하세요.
상세 실행 순서도 보기 (커브 vs 본 모드)
MetaHuman 리그가 권장되는 Curves Mode를 사용하는지, 아니면 대체 Bones Mode를 사용하는지에 따라 실행 로직의 배치가 달라집니다. 아래 차트를 펼쳐 두 파이프라인 모두에 대한 정확한 실행 순서를 확인하세요:
자동 눈 깜빡임과 립싱크는 두 모드 모두 일반 Face AnimBP에 여전히 존재합니다.
신체 애니메이션과의 레이어링에 대한 자세한 내용은 기존 애니메이션과 결합하기를 참조하세요.
메모 및 제한 사항
이 헬퍼들은 MetaHuman 전용입니다. 이들은 표준 MetaHuman 얼굴 Control Rig 커브 이름(CTRL_L_eye_blink, CTRL_R_eye_blink, CTRL_expressions_eyeLook*)과 표준 눈 뼈(FACIAL_L_Eye, FACIAL_R_Eye)에 의존합니다. 이들은 커스텀 비-MetaHuman 캐릭터를 위한 것이 아닙니다.
도움이 필요하신가요?
맞춤 개발 요청은 [email protected]로 문의하세요.