[UE4] 절차적 애니메이션으로 – 잽(Jab) 날리기

이 전의 글인 ‘절차적 애니메이션의 정체‘의 후속 글로서, 이해를 돕기 위해 꼭 이 전 글을 읽기 바란다.

권투의 잽(Jab)같은 펀치 애니메이션을 만들어 보았다. 

기본 자세가 하나 필요할 것 같아서, 20 프레임 길이로 된 기본 자세 idle 애니메이션을 블렌더로 먼저 제작하였다.  펀치나 다른 종류의 키프레임 애니메이션은 제작하지 않았고, 오직 idle애니메이션 만을 사용하였다.

Idle Animation

자, 이제 잽을 날리기 전의 준비 자세는 되었다.  이제 왼팔을 대상으로 Two Bone IK를 적용하여 왼팔을 콘트롤 해보자. 스켈리톤의 본 구조를 보면, upperarm_l — lowerarm_l — hand_l의 3-joint로 이루어져 있는 팔이므로, IKBone으로 hand_l을 설정하고, 나머지는 Component space내의 좌표로 설정하였다. 

Arm Skeleton
Two Bone IK Settings

Effector의 위치가 중요한데, 여기서는 팔을 쭉 뻣은 위치에 Effector를 위치시켜서 default값을 설정하였다.  이렇게 한 이유는, alpha값을 이용하여 FK-IK의 전환을 콘트롤 하기 위함으로, alpha가 1인 경우 IK가 적용되어 팔을 쭉 뻣은 상태가 되고, alpha가 0이 되면 IK가 적용이 안되어 원래의 자세인 idle 자세로 돌아오기 때문에 이 동작으로 잽을 만들 수 있기 때문이다.

Default Effector Location
손목 꺾임

팔은 뻣었지만, 손목의 로테이션이 기본 idle자세의 로테이션으로 유지되어 손목이 꺾여서 보이게 된다.  이를 해결하기 위해 hand_l을 로테이션 시킬 필요가 있는데, 여기에 사용되는 노드는 Transform (Modify) Bone이다. 

Transform (Modify) Bone Settings

여기서 적당히 hand_l의 로테이션을 주면, 괜찮은 잽 자세를 만들 수 있다.  여기서도 Alpha값을 이용하여 Transform (Modify) Bone을 적용할지 말지를 콘트롤 할 수 있다.

이제 alpha값을 콘트롤 하여 잽을 날릴 준비가 되었다.  alpha값을 preview에서 조절하여 테스트해 보자.

Jab Animation in Preview

이제 남은 것은, Event Graph에서 키보드 입력을 받아 잽을 날려 보는 것이다.  핵심은 alpha값을 interpolation하여 펀치 자세가 자연스럽게 보이게 하는 것이다.

Event Graph

이제 실제 플레이 상에서 키보드 입력을 하여 잽을 날려보자.

Jab Animation in Play

키프레임 애니메이션을 만들지 않고도 잽을 날리는 애니메이션을 만들 수 있게 되었다.  게다가 잽의 속도도 다이나믹하게 변경할 수 있고, 추가로 구현을 더 해야 되겠지만 effector의 위치까지 변경한다면 다양한 방향으로 잽도 날릴 수 있을 것이다.  많은 가능성을 가지고 있어, 다양한 활용이 기대된다.

#Throwing a jab in procedural animation


Leave a Reply

Your email address will not be published. Required fields are marked *