unreal 5기

250807 언리얼엔진 본캠프 4일차 TIL 캐릭터 애니메이션을 적용해보자 with Game Animation Sample (1)

parkjinnam 2025. 8. 7. 21:34

오늘은 캐릭터에 애니메이션을 적용시켜 보려고 한다 예전에 연습용으로 준비해 둔 레벨과 맵에 언리얼 기본 3인칭 게임에 제공되는 마네퀸 스켈레톤을 이용하여 캐릭터를 만들어 둔 것이 있다.

이뿌덩

캐릭터 애니메이션은 Maximo와 언리얼엔진에서 제공되는 Game Animation Sample(이하 GAS)를 통해서 구할거고 특히 GAS에 적용된 블루프린트를 참고하여 캐릭터가 움직이는 전체적인 애니메이션을 만들어 보고자 한다. 일단 Animation Blue Print를 생성해 주어 idle상태에서의 애니메이션은 적용된 모습인 것을 볼 수 있다. 걷거나 뛰는 애니메이션을 한번 적용시키기 위해 GAS에서는 어떻게 적용되어 있는지 확인해 보자. 그야말로 맨땅에 헤딩을 한번 해보자

어...음...

이건 GAS에서의 ABP이다 직접 움직여보면 알겠지만 디테일한 움직임을 표현하기 위해서는 이렇게 내부에서 엄청난 개발진들의 노고가 들어가 있음을 알 수 있다. 다행히도 각 파트별 어떤 역할을 하는지 설명이 되어있기에 하나하나 뜯어보도록 해보자

연결된 노드 Pose History를 설명해주고 있다.

 

Pose History는 애미메이션 데이터를 궤적과 매칭하는데 필요한 궤적 참조 또는 선택적으로 궤적을 자체 생성해 주며 모션 매칭 쿼리에도 사용되는 이전 포즈 데이터 캐시를 포함한다고 한다 배움의 깊이가 얕아 자세히는 모르겠으나 이해하기로는 애니메이션과 애니메이션 사이를 자연스럽게 이어 주기 위한 데이터를 수집한다 생각하면 될 거 같다.

간단한 Leg IK 프로세스에 관한 설명이다

다리 IK 노드는 발을 IK 발 뼈 위치에 고정하는데, 이 위치는 포즈 워핑 노드를 통해 종종 워핑됩니다.

로컬-컴포넌트 노드와 컴포넌트-로컬 노드는 다리 IK 로직을 적용하기 위해 포즈가 있는 공간을 전환합니다.

고마워요 구글번역! 아직은 어떤 역할인지 잘 모르겠다 뒤의 노드들도 하나하나 연결해 보도록 하겠다.

 

발의 속도와 높이가 낮을 때 발을 고정하며 각 발에 대한 물리 추적을 수행하여 발을 지면에 정렬 후 골반을 위아래로 움직여 발이 지면에 닿도록하는 역할의 노드이다.

굉장히 길다!

오프셋 루트 본 노드는 캐릭터 루트 본에 동적으로 오프셋을 적용하여 캡슐의 움직임과 애니메이션 데이터가 일치하지 않을 때 메시가 더욱 안정적으로 고정되게 한다고 한다. 밑은 각 함수를 참조하라는 의미와 아직 실험적이기 때문에 알려진 문제가 무엇인지 설명하고 있다. 일단 그런갑 보다 하고 넘어가 보겠다.

짧다!

순회 애니메이션 몽타주가 그래프에 삽입되는 위치라고 한다.

 

이를 위해서는 BS_Neutral_AO_Stand가 필요하다 이를 GAS에서 한번 찾아보자

에셋에 포함된 블랜더 스페이스 파일

 

일단 이것이 뭔지 알기 위해서는 Blend Space가 무엇인지부터 확인해야 할 것이다. Blend Space란 원하는 수의 애니메이션을 구성하여 여러 입력값에 따라 서로 블랜딩 할 수 있는 그래프라고 한다. 그니까 위의 블랜드 스페이스 에셋은 캐릭터가 가만히 서있을 때 카메라가 보는 방향을 캐릭터가 그대로 보게끔 고개를 돌리는 애니메이션이 각도별로 있는데 이를 조작하기 쉽게 뭉쳐놓았다고 이해하면 될 거 같다.

카메라가 보는 왼쪽(캐릭터 기준)을 캐릭터가 고개만 돌려 바라보는 모습

 

그러면 앞서 새로 만들었던 캐릭터의 모션에도 적용할 수 있지 않을까? GAS에서 제공되는 기본자세는 충분히 멋있지만 여성스러운 자세에도 적용해보고 싶어졌다.

이 자세에서도 고개를 돌리게끔 하고 싶다

꽤나 멀리 돌아갈 거 같은데 한번 해보자 일단 블랜드 스페이스를 생성해 주자 이는 콘텐츠 브라우저에서 여타 다른 것들을 생성한 것처럼 생성해 주면 된다. 이름은 BS_Neutarl_AO_Stand_G로 하도록 하자

자 이제 모방의 시간이다

그래프를 보면 상하 값은 Pitch, 좌우 값은 Yaw를 참조하고 있고 왼쪽의 Asset Details를 보면 Preview Base Pose에 기본으로 서있는 애니메이션이 적용되어 있으며, 각 x와 y값에 따라서 애니메이션이 있는 것을 볼 수 있다. Preview Base Pose에 Idle Stand상태의 애니메이션 즉 아까 만들고 싶다 했던 자세의 애니메이션을 넣고 고개만 각 각도로 움직이는 애니메이션을 만들어줘야 한다는 것이다! 일단 x=0, y=0일 때의 애니메이션 파일을 찾아 열어보자

어떠한 값을 주지 않았기에 정면을 보고 있다

일단 움직이지 않고 있다. 그리고 어떠한 pitch, yaw값이 주어지지 않았기에 정면을 보고 있는 것을 볼 수 있다. 다른 파일도 한번 찾아보자 이번엔 x=0 y=-90인 파일을 열어보자

역시 움직이지 않는다

 

역시 움직이지 않는 애니메이션 시퀀스이며 y값 즉 pitch 값이 -90이기에 아래를 보고 있는 모습이다. 이러면 이야기가 쉽다 Rig 파일을 찾아서 각 각도별로 고개를 바꾸고 이를 애니메이션 시퀀스로 각각 저장해 주면 될 거 같다 한번 작업해 주자 일단 기본 스탠딩 포즈부터 시작해야 할 거 같다.

 

레벨 시퀀서를 생성해 준 뒤 스켈레탈 매쉬를 추가하고 Idle 상태의 애니메이션을 추가한 뒤 컨트롤 릭을 삭제한 후 애니메이션 자세에 맞게 새로 컨트롤 릭을 생성해 주면 다음과 같은 자세가 나온다 시작과 끝을 0으로 맞춰준뒤 애니메이션 시퀀스를 베이크 하면

M_Neutral_AO_Stand_G_X0_Y0를 생성할 수 있다 이걸 이제 각 각도별로 만들어주면 된다.

자 해보자!

 

내일 이어서 해보자