복잡한 블렌딩, 레이어 또는 압축된 애니메이션 시스템을 빌드할 때는 캐릭터의 사지, 특히 손과 발에 '스위밍(swimming)'이라고도 하는 원치 않는 여분의 무브먼트가 발생하는 경우가 있습니다. IK 노드와 함께 사용되는 가상 본 을 사용하면 이처럼 원치 않는 행동을 교정할 수 있습니다.
이 문서에서는 스켈레톤에서 가상 본을 생성하여 애니메이션 블루프린트에서 사용하는 방법을 살펴봅니다.
전제 조건
-
프로젝트에 스켈레탈 메시 액터가 있어야 합니다.
-
애니메이션 블루프린트 작업에 대한 기초 지식을 갖추고 있어야 합니다.
가상 본 개요
가상 본은 다른 본의 트랜스폼을 다른 본 스페이스에서 따르는 본입니다. 대부분의 경우 가상 본은 루트 본 을 부모로 지정하지만 손이나 발 같은 끝 본 을 따릅니다. 즉, 가상 본은 타깃으로 이어지는 모든 조인트의 순운동학(Forward Kinematic, FK) 계층구조에서 추가적인 영향을 받지 않고 타깃 본을 직접 따를 수 있습니다. 이 기능을 사용하면 역운동학(Inverse Kinematic, IK) 시스템을 손쉽게 구성하여 캐릭터의 사지가 가상 본을 따르게 함으로써 복잡한 애니메이션 시스템으로 인한 '스위밍' 문제 또는 사지가 허우적거리는 기타 문제를 해결할 수 있습니다.
이 예시에서 IK를 사용하는 가상 본은 애디티브 헤드-룩 애니메이션을 재생하면서 소총과 손 위치를 유지하는 데 사용됩니다. 가상 본을 사용하지 않은 경우, 손과 무기가 '스위밍'하며 의도하지 않은 무브먼트를 유발합니다.
![]() |
![]() |
|---|---|
| 가상 본 사용 | 가상 본 사용 안 함 |
기존 IK와의 차이점
가상 본의 주요 특징 중 하나는 타깃 본을 따른다는 것입니다. 따라서 타깃 본이 움직일 수 있는 애니메이션을 재생하면서 가상 본의 위치를 변경할 수 있습니다. 이러한 구성은 IK가 애니메이션을 방해할 수 있는 기존의 IK 전용 시스템보다 뛰어납니다. 예를 들어 손이 무기에 IK 방식으로 어태치된 시스템을 구성하는 경우, 재장전 같은 상황에서 IK를 비활성화하는 추가 단계를 거쳐야 합니다.
이 예시에서 IK를 사용하는 가상 본은 애디티브 애니메이션이 재생 중이더라도 다른 오브젝트에 대해 상대적인 베이스 손 무브먼트를 허용합니다. 기존 IK 구성이 '스위밍' 문제를 해결할 수는 있지만, 그 결과로 인해 머리가 항상 제자리에 고정되므로 이 경우 IK를 끄기 위한 추가 로직을 생성해야 합니다.
![]() |
![]() |
|---|---|
| 베이스 손 무브먼트를 허용하는 가상 본 | 손을 제자리에 고정하는 IK 전용 구성 |
가상 본 생성하기
가상 본은 '애니메이션 에디터(Animation Editor)'의 스켈레톤 트리(Skeleton Tree)에서 생성할 수 있습니다. 부모 가 될 본을 우클릭한 다음 가상 본 추가(Add Virtual Bone) 를 클릭합니다. 이 목록에서 본을 선택하여 타깃 을 지정합니다. 이 예시에서는 가상 본이 생성되고 루트 본 을 부모로 지정한 다음 hand_l 본을 타기팅합니다.
가상 본이 생성되면 부모 본 의 자손으로 표시되지만 트랜스폼은 타깃 본 에 매칭됩니다. 기본적으로 가상 본은 명명 규칙에 따라 자동으로 VB <Parent>_<Target> 으로 명명됩니다.
또한 애니메이션 시퀀스 를 미리 보고 애니메이션 기간 동안 타깃 본을 따라 가상 본을 관찰할 수 있습니다.
애니메이션 블루프린트 구성
가상 본을 생성한 후에는 애니메이션 블루프린트를 위한 로직을 구성할 수 있습니다. 가상 본의 임의적인 속성 때문에 이를 사용하는 방법은 다양합니다. 이 섹션에서는 가상 본을 위한 기본 무기 오버라이드 생성 및 애디티브 애니메이션 구성 방법을 살펴봅니다.
슬롯 구성
먼저, 애니메이션 블루프린트 애님 그래프(Anim Graph) 에서 두 개의 슬롯 노드를 생성합니다. 슬롯은 애니메이션 블루프린트의 프록시 영역으로, 여기에 일회성 애니메이션을 삽입할 수 있습니다. 이는 베이스 애니메이션 레이어와 애디티브 애니메이션 레이어를 구별하는 데 사용됩니다.
'애님 그래프'를 우클릭하고 몽타주(Montage) > Slot 'DefaultSlot' 을 선택하여 슬롯을 생성합니다.
두 번째 슬롯을 선택하고 디테일(Details) 패널에서 슬롯 이름(Slot Name) 프로퍼티를 'DefaultSlot' 이외의 다른 값으로 설정하여 애니메이션이 올바르게 분기되게 합니다.
슬롯을 Apply Additive 노드에 연결합니다. 디폴트 슬롯 은 베이스(Base) 핀에 연결하고, 애디티브 슬롯 은 애디티브(Additive) 핀에 연결합니다.
가상 본 제외
다음으로, 블렌드 마스크를 생성하여 가상 본을 애디티브 슬롯에서 평가되지 않도록 제외해야 합니다.
'애니메이션 에디터'의 스켈레톤 트리에서 옵션(Options) 드롭다운 메뉴를 클릭하고 블렌드 마스크 추가(Add Blend Mask) 를 선택합니다. 명명하고 Enter 를 누릅니다.
다음으로, 가상 본으로 이동하여 블렌드 값을 0.0 으로 설정합니다.
'애님 그래프'로 돌아가서 Layered Blend per Bone 노드를 생성하고 다음 프로퍼티를 설정합니다.
- 블렌드 모드(Blend Mode) 를 블렌드 마스크(Blend Mask) 로 설정합니다.
- 블렌드 마스크 를 블렌드 마스크를 제외할 가상 본으로 설정합니다.
애디티브 슬롯 과 Apply To Additive 노드 사이에 있도록 이 노드를 연결하여 슬롯을 블렌드 포즈(Blend Poses) 핀에만 연결합니다. 이제 애니메이션이 이 애디티브 슬롯에서 재생될 때 블렌드 마스크가 애디티브 애니메이션이 가상 본에 영향을 미치지 않게 합니다.
IK 구성
마지막으로 사지가 가상 본을 따르게 하는 IK 구성을 생성하면서 애디티브 레이어는 추가 가상 본 무브먼트를 제외하게 해야 합니다.
Two Bone IK 노드를 생성하고 '디테일' 패널에서 다음 프로퍼티를 설정합니다.
- IK 본을 이 사지의 끝 타깃 본으로 설정합니다.
- 이펙터 위치 스페이스(Effector Location Space) 를 본 스페이스(Bone Space) 로 설정합니다.
- 이펙터 스페이스에서 회전 가져오기(Take Rotation from Effector Space) 를 활성화하여 IK 본에 회전을 추가합니다.
- 이펙터 타깃(Effector Target) 을 이 사지에 대한 가상 본으로 설정합니다.
- 조인트 타깃 위치 스페이스(Joint Target Location Space) 를 부모 본 스페이스(Parent Bone Space) 로 설정합니다.
- 조인트 타깃(Joint Target) 을 IK 본(IKBone) 과 같은 값으로 설정합니다.
조인트 타깃 위치는 IK 폴 벡터를 정의하는 데 사용되며, 이는 팔꿈치 아래 위치로 설정되어야 합니다. 캐릭터의 조인트에 따라 이 값을 달라질 수 있습니다. 디폴트 언리얼 엔진 마네킹의 경우, 이 값을 다음으로 설정합니다.
- X: -25.0
- Y: -50.0
- Z: 0.0
가상 본과 매칭시키려는 각 사지마다 Two Bone IK 노드를 추가로 생성합니다.
결과 보기
완료되면 '애님 그래프'는 다음과 같이 보이게 되며, 여기에는 아래 항목이 포함됩니다.
- 베이스 및 애디티브 애니메이션 레이어를 위한 슬롯 노드
- 슬롯은 Apply Additive 노드에 연결되며, Layered Blend per Bone 노드는 블렌드 마스크를 사용하여 가상 본을 애디티브 레이어에서 제외하는 데 사용됩니다.
- IK 노드가 최종 가상 본 위치에 어태치하기 위해 사지에 사용되며, 이는 베이스 애니메이션 레이어를 사용합니다.
이제 이 프레임워크에서 애니메이션을 재생할 때 캐릭터의 사지가 가상 본 위치를 따르고, 애디티브 애니메이션이 재생되어도 영향을 받지 않는 것을 확인할 수 있습니다.




