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

2. Anim Graph: Face Control Rig에 값 전달하기
동일한 Animation Blueprint의 Anim Graph에서:
- 눈 깜빡임 커브에 쓸 수 있는 다른 모든 표정 로직(예:
Blend Runtime MetaHuman Lip Sync및 사용자 정의 표정 애니메이션 레이어 이후) 다음에 Control Rig 노드를 배치합니다. - 노드의 세부 정보 패널에서 Control Rig Class를 MetaHuman 얼굴 Control Rig로 설정합니다. 경로는 일반적으로 다음과 같습니다:
/All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig- 프로젝트에 따라 MetaHuman을 가져온 방식에 따라 경로가 다를 수 있습니다.
- 세부 정보 패널에서 입력 섹션을 확장하고 다음 항목에 대해 Use Pin을 활성화합니다:
CTRL_L_eye_blinkCTRL_R_eye_blink
LeftBlinkValue변수를CTRL_L_eye_blink에 연결합니다.RightBlinkValue변수를CTRL_R_eye_blink에 연결합니다.

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

2. 이벤트 그래프: 대상 위치 제공
Target World Location 핀은 월드 공간 FVector를 예상합니다. 일반적인 경우는 MetaHuman이 플레이어 카메라를 바라보게 하는 것입니다. Event Blueprint Update Animation에서:
- Player Camera Manager(Player Index 0)를 가져옵니다.
- Is Valid 확인
- 유효한 경우 Get Camera Location 호출
TargetWorldLocationBlueprint 변수에 저장

임의의 액터(NPC, 아이템, 관심 지점)를 추적하려면 매 프레임 해당 액터의 위치를 가져와 동일한 변수에 저장합니다. 고정된 응시점의 경우 Target World Location을 한 번 설정하거나 노드 세부 정보 패널에서 상수로 설정합니다.
Curves 모드 접근 방식이 MetaHuman 변형에서 작동하지 않는 경우 이 설정을 사용하십시오(위 경고 참조). Bones 모드에서 노드는 눈동자 본을 직접 회전시키며 Control Rig 평가가 완료된 후에 실행되어야 합니다. 즉, 일반 Face AnimBP가 아닌 Face Post Process Animation Blueprint에 속합니다.
세 단계: Post Process Anim BP를 찾고, RigLogic 뒤에 노드를 추가한 다음, 해당 블루프린트의 이벤트 그래프에서 대상 위치를 제공합니다.
1. Face Post Process Anim BP 찾기
- MetaHuman의 얼굴 스켈레탈 메시 에셋(예: MetaHuman 폴더 아래의
Face)을 엽니다. - 에셋의 세부 정보 패널에서 Post Process Anim Blueprint 필드를 찾습니다.
- 해당 에셋을 엽니다. 일반적으로
Face_PostProcess_AnimBP와 같은 이름입니다.
2. Anim Graph: RigLogic 뒤에 노드 추가
Face Post Process Anim BP의 Anim Graph에서:
- 기존
AnimNode_RigLogic노드(얼굴 Control Rig 커브를 본 변환으로 변환)를 찾습니다. AnimNode_RigLogic다음 및Output Pose앞에Runtime MetaHuman Eyes Aim노드를 추가합니다.- 노드의 세부 정보 패널에서 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 얼굴 스켈레톤과 일치합니다. 캐릭터가 다른 눈동자 본 이름을 가진 사용자 정의 스켈레톤을 사용하는 경우 노드 세부 정보 패널의 Bones 카테고리에서 재정의하십시오.
3. 이벤트 그래프: 대상 위치 제공
노드가 Post Process Anim BP에 있으므로 대상 위치 로직도 Face_AnimBP가 아닌 이 블루프린트의 이벤트 그래프에 있어야 합니다. 설정은 Curves 모드(카메라 위치, 액터 위치 가져오기 또는 상수 사용)와 동일하며, Face_PostProcess_AnimBP 내에서 수행됩니다.

관련 없는 로직(립싱크, 자동 깜빡임 등)은 일반 Face AnimBP에 남아 있을 수 있습니다. Eyes Aim에 대한 대상 위치 계산만 여기로 이동하면 됩니다. Face Control Rig는 매 프레임마다 커브를 기반으로 눈동자 본을 강제로 구동합니다. Eyes Aim 노드가 일반 Face AnimBP(Control Rig 앞)에서 실행되면 Control Rig가 이후에 본 회전을 덮어씁니다. Post Process Anim BP는 Control Rig가 최종 본 변환을 생성한 후에 실행되므로 "승리"해야 하는 최종 본 회전을 적용하기에 올바른 위치입니다.Bones 모드에 Post Process Anim BP가 필요한 이유는 무엇인가요?
구성
모든 설정은 Runtime MetaHuman Eyes Aim 노드의 세부 정보 패널에 표시됩니다.
조준 및 클램프
조준
| 속성 | 기본값 | 설명 |
|---|---|---|
| Mode | Curves | 눈이 구동되는 방식을 선택합니다. 모드 선택을 참조하십시오. |
| Target World Location | (0,0,0) | 눈이 바라보는 월드 공간 지점입니다. 기본적으로 핀으로 노출됩니다. |
bEnabled | true | false인 경우 눈이 천천히 정면을 바라보고 대상을 무시합니다. 기본적으로 핀으로 노출됩니다. |
클램프
| 속성 | 기본값 | 설명 |
|---|---|---|
| Max Yaw Degrees | 35° | 머리의 정면 방향으로부터의 최대 수평(요) 편향 각도입니다. 0에서 80 사이로 고정됩니다. |
| Max Pitch Degrees | 25° | 머리의 정면 방향으로부터의 최대 수직(피치) 편향 각도입니다. 0에서 80 사이로 고정됩니다. |
| Anti Flip Behind | true | 대상이 머리 뒤로 지나갈 때 눈이 뒤집히는 것을 방지합니다. |
스무딩 및 단속 운동(사케이드)
스무딩
| 속성 | 기본값 | 설명 |
|---|---|---|
| Interp Speed | 12.0 | 눈 움직임의 스무딩 속도입니다. 높을수록 더 빠르고 낮을수록 더 느릿느릿합니다. |
단속 운동(사케이드)
미세 단속 운동(마이크로-사케이드)은 실제 눈이 지속적으로 수행하는 작고 무작위적인 시선 이동입니다. 이를 추가하면 완벽하게 부드러운 추적으로 인한 "죽은 눈" 같은 인상을 피할 수 있습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
| Enable Saccades | true | 미세 단속 운동을 켜거나 끕니다. |
| Saccade Yaw Amplitude Deg | 1.5° | 단속 운동당 최대 수평 지터입니다. 작은 값(1–2°)이 자연스럽고, 큰 값은 불안정해 보입니다. |
| Saccade Pitch Amplitude Deg | 1.0° | 단속 운동당 최대 수직 지터입니다. 일반적으로 요 진폭보다 약간 작습니다. |
| Min Saccade Interval | 0.6 초 | 단속 운동 사이의 최소 시간입니다. |
| Max Saccade Interval | 2.5 초 | 단속 운동 사이의 최대 시간입니다. 값이 클수록 차분하게, 작을수록 불안정하게 느껴집니다. |
본 (Bones 모드 전용)
| 속성 | 기본값 | 설명 |
|---|---|---|
| Left Eye Bone | FACIAL_L_Eye | 왼쪽 눈동자 본 이름입니다. 표준 MetaHuman 얼굴 스켈레톤과 일치합니다. |
| Right Eye Bone | FACIAL_R_Eye | 오른쪽 눈동자 본 이름입니다. 표준 MetaHuman 얼굴 스켈레톤과 일치합니다. |
보정 (Curves 모드 전용)
이 값들은 머리 공간 각도가 MetaHuman 얼굴 CR의 눈-응시 커브 값에 매핑되는 방식을 정의합니다. 기본값은 표준 MetaHuman 얼굴 CR에 맞게 조정되었으며 변경할 필요가 거의 없습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
| Yaw Degrees Per Unit Curve | 30° | 요 응시 커브에 대해 커브 값 1.0에 매핑되는 각도입니다. |
| Pitch Degrees Per Unit Curve | 25° | 피치 응시 커브에 대해 커브 값 1.0에 매핑되는 각도입니다. |
립싱크 및 기타 애니메이션과 결합
두 헬퍼 모두 플러그인의 립싱크 노드 및 기존 사용자 정의 표정 애니메이션과 공존하도록 설계되었습니다. 일반적인 규칙: Eyes Aim 및 Control Rig(자동 깜빡임) 노드를 립싱크 및 사용자 정의 표정 애니메이션 뒤에 배치하여 해당 값이 다운스트림에서 덮어쓰여지지 않도록 합니다.
상세 실행 순서도 보기 (Curves vs. Bones 모드)
MetaHuman 리그가 권장되는 Curves 모드를 사용하는지 아니면 대체 Bones 모드를 사용하는지에 따라 실행 로직의 배치가 변경됩니다. 아래 차트를 펼쳐 두 파이프라인의 정확한 실행 순서를 확인하십시오:
Auto Blink 및 립 싱크는 두 모드 모두 일반 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]로 문의하세요.