본문 바로가기

Unreal Engine 4/블루프린트

<Unreal BP> 루트모션(Root Motion)

루트 모션이란?

스켈레톤의 루트 본의 애니메이션을 기준으로 하는 캐릭터의 동작 입니다.

 

'캐릭터의 역동적인 좌표이동을 에니메이터가 직접 제어 하기 위해 고안되었고. 기본 원리는 캐릭터의 최상위 루트 노드의 위치변화 량을 캐릭터의 월드 좌표에서 반영한다'

 

불규칙한 애니메이션인 경우 예를 들어 좀비 처럼 절뚝 절뚝 패턴으로 이동한다면 일정한 애니메이션에 맞게 이동하기가 애매하기 때문에 이런 경우 루트 모션을 적용한다면 입력 받은 값에 상관 없이 자연스러운 연출이 가능합니다.

 

루트 모션을 제대로 사용하기 위해 중요한 점 한 가지는, 캐릭터의 루트 본이 (회전 없이 0,0,0 의) 원점에 있어야 하는데, 그래야 시스템이 애니메이션 적용 동작(캐릭터)에서 물리적 운동(캡슐)을 분리해 낼 수 있기 때문입니다.

 

 

루트 모션 켜기

루트 모션은 애니메이션 시퀀스 에 대한 애니메이션 에디터  애님 애셋 디테일 패널에서 켤 수 있습니다.

루트 모션이 켜졌는지를 정의하는 부분은 애니메이션 시퀀스 안에서 이루어지지지만, 그 시퀀스의 처리 방식은 여전히 애니메이션 블루프린트 안에서 해야 합니다. 애니메이션 블루프린트 안에서 루트 모션을 처리하는 방법은 여러가지 있습니다. 애님 블루프린트 에디터  디테일 패널에서 Root Motion Mode (루트 모션 모드) 드롭다운 메뉴를 통해 정의할 수 있습니다.

 

 

실제의 루트 모션

아래는 루트 모션 처리를 하지 않았을 때의 문제점과, 애니메이션에 루트 모션이 있을 때의 장점에 대한 분석입니다.

루트 모션 없이

루트 모션이 없으면 (아래와 같은) 공격 애니메이션은 캐릭터를 캡슐에서 멀리 끌어가 버립니다. 그랬다가 캡슐 위치로 끌려오는 휙 끌려오는 것도 보입니다. 이런 일이 발생하는 이유는, 애니메이션 재생이 완료되면 캐릭터 컨트롤러는 캐릭터를 원래 위치로 끌어오기 때문입니다.

캡슐 분리가 나쁜 이유

이 경우에서 해결해야할 문제는 끌려오는 문제뿐만이 아닙니다. 캐릭터가 콜리전 모양을 벗어나고 있기 때문에, 월드 오브젝트를 뚫고 지나가면서 전체적인 연속성을 깨뜨릴 것입니다. 이 예제에서는 캐릭터의 공격 동작이 벽을 뚫고 지나갔다가 되돌아 오는 것을 볼 수 있습니다.

루트 모션이 문제 해결

애니메이션이 루트 모션을 활용하도록 설정하고 나면, 애니메이터가 임시로 구성한 동작이 캡슐의 포스를 돌려주게 됩니다. 이를 통해 애니메이션이 끝나는 지점에서부터 재생을 계속할 수 있습니다. 두 번째로 공격 명령을 내릴 때, 새 위치에서 시작되는 것을 볼 수 있습니다. 물론 카메라를 벗어나지 않도록 먼저 방향을 틀도록 했습니다.

루트 모션과 피직스

캡슐이 따라온다는 것은, 피직스 콜리전을 계속 사용할 수 있으므로 캐릭터가 벽을 뚫고 지나가는 문제를 해결할 수 있을 뿐만 아니라, 캐릭터를 캡슐 위치로 끌어맞춰야 하는 문제도 경감시킬 수 있다는 뜻입니다. 아래 그림에서 애니메이션은 루트 모션을 사용하고 있어서 캡슐이 따라오고, 그로 인해 캐릭터가 벽을 뚫고 지나가지 않고 제대로 충돌하고 있습니다.

캐릭터의 굽히는 애니메이션이 어느정도 벽을 관통하고 있으니 완벽한 것은 아니지 않나 싶어 보일겁니다. 그래도 그런 문제는 벽이나 캐릭터의 콜리전 볼륨 작업을 해 주면 되는 문제이니 쉽게 해결할 수 있습니다. 중요한 점은 캡슐이 모션에 따라붙으므로 캐릭터가 벽을 통과해 지나가거나 끌어붙일 필요가 없다는 점입니다.

루트 모션 도중 캐릭터의 피직스 상태가 고려됩니다. 예를 들어 캐릭터의 피직스가 Walking 또는 Falling 인 경우, 루트 모션의 Z 축은 무시되고 중력이 적용됩니다. 캐릭터는 떨어지거나 경사면을 미끄러지거나 계단을 오르게 됩니다. 캐릭터 피직스가 Flying 인 경우, 루트 모션이 통으로 적용되고, 중력은 무시됩니다.

 

 

본문 출처 : https://docs.unrealengine.com/4.26/ko/AnimatingObjects/SkeletalMeshAnimation/RootMotion/

 

루트 모션

언리얼 엔진 4 에서 루트 기반 애니메이션을 처리하는 방식을 살펴봅니다.

docs.unrealengine.com

 

 



본문 출처: https://lucy092.tistory.com/23

 

언리얼 엔진 Root motion

루트 모션이란? 스켈레톤의 루트 본의 애니메이션을 기준으로 하는 캐릭터의 동작 입니다. '캐릭터의 역동적인 좌표이동을 에니메이터가 직접 제어 하기 위해 고안되었고. 기본 원리는 캐릭터

lucy092.tistory.com