내일배움캠프 76일차 - 언리얼 TA: 컨트롤 릭

컨트롤 릭

가끔 게임 속 모험을 하다 보면 잠깐 멈추고 그 세상을 들여다 볼 때가 있다. 그리고 내 캐릭터가 어떤 자세로 서 있는지 쳐다보게 될 때 일부 게임은 위 사진처럼 계단에 걸쳐 있을 때 발이 공중에 떠있지 않고 자연스럽게 계단 위에 올려져 있을 때가 있다. 이런 기술은 IK(Inverse Kinematics)를 적용한 것으로, 발이 위치할 IK좌표를 지정하면 발이 그곳에 위치하기 위해 다리를 어떻게 움직여야 하는지, 몸체는 얼만큼 내려가고 올라가야 할 지를 연산한다.

언리얼에서도 제공하는 기술이지만, UE4에서는 이를 애니메이션 블루프린트에서 직접 본을 움직여 처리를 해줬어야 했다. 하지만 UE5에 들어오면서 이를 따로 처리해주는 에셋이 생겨났는데 이를 컨트롤 릭(Control Rig)이라고 한다.

컨트롤 릭은 위 처럼 발의 위치를 보정해줄 뿐만 아니라 언리얼 내에서 애니메이션을 생성하고 싶을 때 각 관절들이 위치할 좌표들을 임의로 정의해 해당 관절이 위치하기 위해 다른 관절들이 어떻게 움직여야 할 지를 알려주는 지침을 해준다.

간단한 컨트롤릭 제작법

아래의 과정은 발이 지면 위에 자연스럽게 올라가기 위해 필요한 계산을 지침하는 과정이다.

모두 CR_Mannequin_BasicFootIK 에셋을 그대로 복사해 참고하였다. 아래의 본을 움직이는 기준은 모두 IK_Foot본이 있다는 전제 하에 만들어진 것이다.

지정한 Foot IK본에 대한 Trace함수

각 Foot가 이동해야할 Z거리를 계산하는 과정 (시퀀스 A)

계산된 위치로 IK본(변수)이 보간이동하고 현재 이동한 Z거리를 저장하는 과정 (시퀀스 B)

저장된 현재 Z거리를 실제 IK본에 반영하는 과정 (시퀀스 C)

실제 IK본을 따라 실제 Foot본을 움직이는 과정 (시퀀스 D)

※ Full Body IK 노드를 사용할 때에는 [루트 행동:Pin to Input]을 주로 사용한다.

이렇게 만들어진 컨트롤릭 에셋애니메이션 블루프린트에 적용할 수 있다.

Control Rig 블루프린트 노드의 디테일창에서 어느 컨트롤릭 클래스를 사용할지 정할 수 있다.

Control Rig 노드에 핀을 노출하고 싶은 변수는 "인스턴스 편집가능"을 체크해주면 된다.

컨트롤릭을 적용한 결과

발의 위치를 계산하는 컨트롤릭 외에도, 자신이 임의로 정한 위치에 본을 움직일 수도 있다.

'Control' 을 이용한 본 이동방법

본을 내 뜻대로 조종하기 위해서는 'Control' 포인트를 릭 계층구조에 추가해 해당 위치에 본을 움직이도록 유도한다.

컨트롤 포인트: 'hand_l_ctrl', 'hand_r_ctrl'


Control 포인트릭 계층구조에서 부착할 본을 우클릭해서 생성할 수 있으며, 생성한 Control을 위 컨트롤릭 노드에 활용해서 'Control의 트랜스폼에 따라 움직이는 본'을 구현할 수 있다.

Hand본에 부착된 'Control'을 따라 움직이는 손

위의 모든 과정들은 Forwards Solve(컨트롤→본)을 통해 구동되었으며, 어떤 용도에서는 Backwards Solve(본→컨트롤)을 통해 구동하도록 짤 수 있다고 한다.

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁