컨트롤 릭(Control Rig)은 컨트롤 릭 릭 그래프(Rig Graph)에서 생성되는 솔브 방향 이라는 다양한 방식으로 평가됩니다. 이러한 툴을 사용하면 릭 로직을 여러 솔브 방향(솔버) 로 분할함으로써 릭의 수신 데이터를 확장할 수 있으며, 이를 통해 릭 공유, 애니메이션을 컨트롤에 다시 굽기, 동작 디버깅 등의 워크플로를 활성화할 수 있습니다.
이 페이지에서는 컨트롤 릭에서 사용할 수 있는 다양한 솔브 방향과 사용 방법, 이를 통해 이용 가능한 워크플로를 개괄적으로 살펴봅니다.
전제조건
컨트롤 릭 에디터 에 대해 파악하고 있어야 합니다.
시퀀서를 이해하고, 시퀀서에 컨트롤 릭 캐릭터 추가 방법에 대해 알아야 합니다.
정방향 솔브
정방향 솔브(Forwards Solve)는 컨트롤, 변수, 기타 릭 엘리먼트로 스켈레톤을 구동하는 데 사용되는 솔브 방향입니다. 정방향 솔브는 시퀀서와 애니메이션 블루프린트 내에서 컨트롤 릭을 애니메이팅할 때 사용되는 컨트롤 릭의 주 솔브 방향입니다.
기본적으로 모든 컨트롤 릭 에셋은 릭 그래프에 Forwards Solve 노드가 포함되어 있습니다. 이 노드에서 생성할 로직은 컨트롤, 변수, 기타 릭 엘리먼트를 통해 스켈레톤의 본에 주는 영향에 기반하게 됩니다. 이렇게 컨트롤 작동 방식은 컨트롤이 본에 영향을 주는 ‘정방향' 방식을 취합니다.
정방향 솔브 프리뷰하기
정방향 솔브는 뷰포트 내의 기본 프리뷰 모드입니다. 이는 솔브 방향 툴바 버튼이 정방향 솔브 로 설정되었는지를 살펴보면 확인할 수 있습니다. AnimBP와 비슷하게 정방향 솔브는 레벨 내에서 에디터 스테이트에 상관없이 계속해서 실행됩니다.
어느 솔브 방향이 활성화되어 있는지에 따라 릭 그래프에서 하이라이트되는 실행 라인이 달라집니다. 예를 들어, 정방향 솔브가 활성화된 경우 역방향 솔브의 실행 라인이 더 투명하게 표시됩니다.
역방향 솔브
역방향 솔브(Backwards Solve)는 스켈레톤으로부터 컨트롤을 구동하는 데 사용되는 솔브 방향입니다. 정방향 솔브의 반대 이며 애니메이션 시퀀스의 애니메이션을 시퀀서의 컨트롤 릭에 굽는 데 사용됩니다.
릭 그래프에 역방향 솔브 로직을 생성하려면, Backwards Solve 노드를 생성해야 합니다. 컨트롤 릭 그래프(Control Rig Graph) 를 우클릭한 다음 이벤트(Events) > 역방향 솔브(Backwards Solve) 를 선택합니다.
이 노드에서 생성할 로직은 스켈레톤의 본에서 컨트롤에 주는 영향에 기반하게 됩니다. 이렇게 컨트롤 작동 방식은 본이 컨트롤에 영향을 주는 ‘역방향' 방식을 취합니다.
역방향 솔브 프리뷰하기
뷰포트에서 역방향 솔브 동작을 프리뷰하려면 툴바에서 솔브 방향 드롭다운 메뉴 를 연 다음, 역방향 솔브 를 클릭합니다. 그러면 뷰포트가 릭 그래프에서 정방향 솔브가 아닌 역방향 솔브 로직을 실행합니다.
이러한 역방향 컨트롤 릭 동작을 더 쉽게 프리뷰하려면, 컨트롤 릭의 프리뷰 씬 세팅(Preview Scene Settings) 패널로 이동한 다음 캐릭터에서 플레이할 애니메이션을 지정하면 됩니다. 프리뷰 컨트롤러(Preview Controller) 를 지정된 애니메이션 사용(Use Specified Animation) 으로 설정한 다음, 애니메이션 프로퍼티에서 애니메이션을 선택합니다. 이제 컨트롤과 재생 중인 애니메이션이 일치하는 것을 확인할 수 있습니다.
역방향 솔브를 프리뷰할 때, 뷰포트는 노란색 외곽선으로 표시됩니다. 컨트롤 릭 에디터 개인설정(Control Rig Editor Preferences) 에서 이 색과 기타 색을 변경할 수 있습니다.
컨트롤 릭에 애니메이션 굽기
역방향 솔브는 애니메이션 시퀀스를 컨트롤 릭에 굽는 데 주로 사용됩니다. 언리얼 엔진에서 애니메이션을 추가로 변경할 수 있도록 하기 위해서입니다.
이렇게 하려면, 시퀀서에 애니메이팅된 캐릭터가 있다고 가정하고, 캐릭터 트랙을 우클릭하고 컨트롤 릭에 굽기(Bake To Control Rig) 를 선택한 다음, 구울 대상인 컨트롤 릭 에셋 을 선택합니다.
컨트롤 릭 에셋이 릭 그래프에서 Backwards Solve 노드를 사용하지 않는 경우, 해당 컨트롤 릭은 컨트롤 릭에 굽기 메뉴에서 선택할 수 없습니다.
굽기 작업과 관련된 옵션을 지정할 수 있는 대화창이 표시됩니다.
이름 |
설명 |
---|---|
트랜스폼 익스포트(Export Transforms) |
트랜스폼 데이터를 컨트롤에 굽습니다. |
커브 익스포트(Export Curves) |
애님 커브(AnimCurve) 데이터를 컨트롤에 굽습니다. 여기에는 역방향 솔브 로직 평가 시 애님 커브가 포함됩니다. |
월드 스페이스의 레코드(Record in World Space) |
절대 월드 스페이스 좌표에서 굽습니다. |
모든 스켈레탈 메시 컴포넌트 평가(Evaluate All Skeletal Mesh Components) |
구울 때 모든 스켈레탈 메시 컴포넌트를 평가합니다. 일반적으로 블루프린트를 다른 스켈레탈 메시 컴포넌트와 함께 사용할 때 이를 활성화하는 것이 좋습니다. |
웜업 프레임(Warm Up Frames) |
굽기 프로세스가 일어나기 전에 평가할 프레임의 수입니다. 평가하기 전에 준비 시간이 추가로 필요한 포스트 프로세스 애니메이션 블루프린트 이펙트가 있는 경우에 유용합니다. |
시작 전 딜레이(Delay Before Start) |
굽기 프로세스가 일어나기 전에 딜레이할 디스플레이 속도 프레임의 수입니다. 평가하기 전에 반복 실행이 필요한 포스트 프로세스 애니메이션 블루프린트 이펙트가 있는 경우에 유용합니다. |
키 감소(Reduce Keys) |
활성화하면 굽기 프로세스가 일어난 후 간소화 프로세스가 실행되어 허용치를 바탕으로 중복 키프레임을 제거합니다. |
허용치(Tolerance) |
허용치 값이 높을수록 필터링된 커브가 원본과 더 많은 차이를 보이며, 키 감소 가 활성화된 경우 더 많은 키프레임이 제거됩니다. |
생성(Create) 을 클릭하여 애니메이션 시퀀스를 컨트롤 릭에 굽습니다. 다 구워지면, 이제 타임라인을 따라 키프레임이 있는 컨트롤 릭 트랙을 볼 수 있습니다. 이러한 키프레임은 구워온 원래의 전체 애니메이션과 일치할 것입니다.
컨트롤 릭 섹션(Control Rig Section) 을 우클릭한 다음, 이 시퀀스에 애님 시퀀스 임포트(Import Anim Sequence Into This Sequence) 에서 애니메이션을 선택하여 애니메이션 시퀀스를 바로 컨트롤 릭 키프레임으로 임포트할 수도 있습니다. 애니메이션은 시퀀서 플레이헤드를 기준으로 임포트됩니다.
컨스트럭션 이벤트
블루프린트와 비슷하게 컨스트럭션 이벤트(Construction Event) 를 생성할 수도 있습니다. 그러면 변수 초기화, 컨트롤에서 초기 위치 설정 등의 준비 로직을 실행하는 데 사용할 수 있습니다. 이는 컨트롤 릭의 초기화 이후 단계에서 한 번 실행됩니다.
릭 그래프에 컨스트럭션 이벤트 로직을 생성하려면, Construction Event 노드를 생성해야만 합니다. 컨트롤 릭 그래프(Control Rig Graph) 를 우클릭한 다음, 이벤트 > 컨스트럭션 이벤트(Events > Construction Event) 를 선택합니다.
이 노드에서 생성할 로직은 릭 엘리먼트의 초기 상태에 주는 영향에 기반하게 됩니다. 여기에는 본에 대한 각 컨트롤의 초기 오프셋 정의 같은 내용이 포함될 수 있으며, 이를 통해 릭 공유가 가능합니다. 또한, 변수의 초기 값을 정의하거나 본의 초기 위치를 변경할 수도 있습니다.
릭 엘리먼트 스폰
컨스트럭션 이벤트의 다른 주요 목적은 이 초기화 단계에서 릭 엘리먼트를 스폰하는 것입니다. 이렇게 하면 새로운 컨트롤, 본 및 Null을 스폰하여 프로시저럴 컨트롤 릭을 생성하고 릭 그래프 로직을 사용하여 초기화할 수 있습니다.
스폰 노드를 생성하려면 릭 그래프를 우클릭하고 다이내믹 계층구조(Dynamic Hierarchy) 카테고리의 스폰(Spawn) 노드 중 하나를 클릭합니다. 다음 노드를 추가할 수 있습니다.
이름 |
설명 |
---|---|
Spawn Bone |
계층구조에 새 본을 생성합니다. |
Spawn Null |
계층구조에 새 Null을 생성합니다. |
Spawn Animation Channel |
계층구조에 새 애니메이션 채널(Animation Channel) 을 생성합니다. 애니메이션 채널은 애니메이션 채널이나 커스텀 어트리뷰트를 제공하는 데 사용되는 컨트롤 타입 중 하나입니다. |
Spawn Control |
계층구조에 새 컨트롤을 생성합니다. |
애니메이션 채널 이나 컨트롤 스폰 시, 프로퍼티 타입을 지정해야 합니다. 초기 값(Initial Value) 핀을 우클릭하고 와일드카드(Wildcard) 드롭다운 메뉴에서 타입을 선택하면 됩니다.
스폰 노드를 컨스트럭션 이벤트에 연결하면 새로운 엘리먼트가 계층구조 패널뿐만 정상적으로 생성된 것처럼 뷰포트에도 표시됩니다. 모든 스폰된 엘리먼트 이름은 노란색으로 표시되어 스폰되지 않은 엘리먼트와 구분됩니다.
스폰 노드는 현재 컨스트럭션 이벤트와만 작동합니다.
스폰된 엘리먼트를 어느 것이든 우클릭하고 스포너 노드 선택(Select Spawner Node) 을 클릭하면 이 엘리먼트의 스폰에 사용된 노드를 프레임 안에 배치할 수도 있습니다. 이렇게 하면 복잡한 그래프에서 스폰 노드를 찾기가 더 쉬워집니다.
스폰되지 않은 엘리먼트와는 달리, 스폰된 엘리먼트의 초기 값과 세팅은 읽기 전용이고 디테일 패널이 아닌 노드에서 정의해야 합니다. 이를 처리하려면 초기 값과 세팅 핀을 확장한 다음 프로퍼티를 편집하면 됩니다. 또한, 여기에 프로퍼티와 변수를 연결하여 다른 로직 소스에서 구동할 수도 있습니다.
컨트롤 릭에서 생성할 수 있는 스폰된 엘리먼트 수에는 제한이 있으며, 큰 릭을 생성하거나 For Loop 로직을 사용하면 한도에 도달할 수 있습니다. 기본적으로 이 한도는 128 로 설정되며 한도를 변경하려면 클래스 세팅(Class Settings) 을 활성화하고 프로시저럴 엘리먼트 제한(Procedural Element Limit) 프로퍼티를 변경하면 됩니다.
컨스트럭션 이벤트 프리뷰
뷰포트에서 컨스트럭션 이벤트 동작을 프리뷰하려면 툴바에서 솔브 방향 드롭다운 메뉴를 선택한 다음, 컨스트럭션 이벤트 를 클릭합니다. 그러면 뷰포트가 릭 그래프에서 정방향 솔브가 아닌 컨스트럭션 이벤트 로직을 실행합니다. 이 모드로 들어가면 컨스트럭션 로직을 쉽게 디버깅할 수 있습니다.
컨스트럭션 이벤트가 활성화되면, 뷰포트에서 본과 Null의 초기 위치를 편집할 수도 있습니다.
컨스트럭션 이벤트를 프리뷰할 때, 뷰포트는 빨간색 외곽선으로 표시됩니다.
역방향 및 정방향
역방향 및 정방향(Backwards and Forwards) 프리뷰 모드는 역방향 솔브를 먼저 실행한 후, 정방향 솔브 릭 로직을 실행합니다. 이렇게 하면 뷰포트 내에서 컨트롤 릭에 애니메이션 굽기 프로세스를 모방하는 동작이 발생합니다. 일반적으로 굽기 프로세스를 디버깅하여 본과 컨트롤이 제대로 작동하는지 확인하고 싶을 때 이 모드를 활성화합니다.
뷰포트에서 정방향 및 역방향 동작을 프리뷰하려면 툴바에서 솔브 방향 드롭다운 메뉴를 선택한 다음, 역방향 및 정방향 을 클릭합니다. 그러면 뷰포트가 릭 그래프에서 역방향 솔브 로직과 정방향 솔브 로직을 순차적으로 실행합니다.
역방향 및 정방향을 프리뷰할 때, 뷰포트는 파란색 외곽선으로 표시됩니다.