컨트롤 릭(Control Rig) 은 블루프린트에서 컨트롤 릭 컴포넌트(Control Rig Component) 를 사용하여 호출할 수 있습니다. 이 컴포넌트를 사용하면 블루프린트의 게임플레이 로직으로 컨트롤 릭을 구동하고, 컨트롤 릭을 각각 비율이 다른 캐릭터에 맞게 다시 초기화하고, 스켈레탈 메시가 아닌 오브젝트를 컨트롤 릭 계층구조에 어태치할 수 있습니다.
이 문서에서는 컨트롤 릭 컴포넌트의 개요와 이 컴포넌트를 블루프린트에 추가하는 방법, 이 컴포넌트가 지원하는 기능에 대해 설명합니다.
전제조건
캐릭터에 대한 컨트롤 릭 에셋을 생성했으며 컨트롤을 생성하는 방법을 알고 있어야 합니다. 자세한 방법은 컨트롤 릭 퀵스타트 페이지를 참조하세요.
스켈레탈 메시 컴포넌트를 포함하는 액터 블루프린트(Actor Blueprint) 를 생성했으며 블루프린트 비주얼 스크립팅 방법을 이해하고 있어야 합니다.
컴포넌트 설정
컨트롤 릭 컴포넌트 는 블루프린트 컴포넌트 패널에서 추가(Add)(+) 버튼을 클릭하고 애니메이션(Animation) 카테고리에서 컨트롤 릭 을 선택하여 생성할 수 있습니다.
그런 다음 컨트롤 릭 컴포넌트 를 선택하고 디테일(Details) 패널에서 디폴트 컨트롤 릭 클래스(Control Rig Class) 를 할당합니다. 컨트롤 릭 클래스 옆의 드롭다운 메뉴를 클릭하여 클래스를 할당합니다.
컨트롤 릭 클래스를 할당하면 컨트롤 릭의 본이 뷰포트에 표시될 것입니다. 컨트롤 릭 컴포넌트 디테일 패널에서 본 그리기(Draw Bones) 를 비활성화하여 이 본을 숨길 수 있습니다.
매핑 설정
마지막으로, 컨트롤 릭을 스켈레탈 메시에 매핑 해야 합니다. 이는 컨트롤 릭 컴포넌트의 초기화 이전 이벤트(Pre Initialize Event) 에서 수행해야 합니다. 이를 수행하는 이유는 스켈레탈 메시 컴포넌트 와 컨트롤 릭 컴포넌트 를 연결하기 위해서입니다.
컨트롤 릭 컴포넌트를 선택한 상태로 디테일 패널에서 초기화 이전에(On Pre Initialize) 옆의 추가(Add)(+) 버튼을 클릭합니다. 그러면 이벤트 그래프에 해당되는 이벤트가 생성됩니다.
다음으로 컴포넌트(Component) 핀에서 드래그하고 컨텍스트 메뉴에서 매핑된 스켈레탈 메시 추가(Add Mapped Skeletal Mesh) 를 선택합니다. 스켈레탈 메시 컴포넌트에 레퍼런스를 추가하고 이를 스켈레탈 메시 컴포넌트(Skeletal Mesh Component) 핀에 연결합니다.
개요
컴포넌트 설정 을 완료했으면, 블루프린트에서 컨트롤 릭 컴포넌트를 사용할 수 있습니다. 이를 통해 릭 엘리먼트 구하기 또는 설정, 디테일 편집, 새 매핑 연결 생성 등의 기본 함수를 사용할 수 있습니다.
디테일
컨트롤 릭 컴포넌트와 관련된 디테일의 목록은 다음과 같습니다.
이름 |
설명 |
---|---|
컨트롤 릭 클래스 |
인스턴스화할 컨트롤 릭 클래스입니다. 컨트롤 릭 에셋을 여기서 지정해야 합니다. |
매핑된 엘리먼트(Mapped Elements) |
이 배열은 컨트롤 릭에 디폴트 매핑을 수동으로 정의하는 데 사용됩니다. |
틱 전 트랜스폼 초기화(Reset Transform Before Tick) |
활성화하면 컨트롤 릭 트랜스폼이 매 틱 전에 업데이트됩니다. |
구성 전 이니셜 초기화(Reset Initials Before Setup) |
활성화하면 본, Null, 컨트롤에 대한 초기 트랜스폼이 설정 이벤트(Setup Event) 이전으로 리셋됩니다. |
틱에서 릭 업데이트(Update Rig on Tick) |
활성화하면 컴포넌트 틱 시에 릭이 업데이트됩니다. |
에디터에서 업데이트(Update in Editor) |
재생 또는 시뮬레이션하지 않고도 뷰포트에서 컨트롤 릭 행동이 보입니다. |
지연 평가 활성화(Enable Lazy Evaluation) |
활성화하면 매핑된 입력 변경 시에만 컨트롤 릭이 평가를 실시합니다. |
위치 한계치(Position Threshold) |
레이지 이밸류에이션 이 활성화된 경우 사용할 위치 또는 이동 한계치입니다. |
회전 한계치(Rotation Threshold) |
레이지 이밸류에이션 이 활성화된 경우 사용할 회전 한계치(각도)입니다. |
스케일 한계치(Scale Threshold) |
레이지 이밸류에이션 이 활성화된 경우 사용할 스케일 한계치입니다. |
본 그리기(Draw Bones) |
컨트롤 릭 클래스 에서 임포트한 본 그리기를 활성화합니다.
|
이벤트
컨트롤 릭은 컨트롤 릭 컴포넌트로부터 다음 이벤트를 호출할 수 있습니다. 이러한 이벤트들은 컨트롤 릭 컴포넌트를 선택하고 디테일 패널에서 이벤트(Events) 카테고리로 이동하거나 이벤트 그래프를 우클릭하고 컨트롤 릭에 대한 이벤트 추가(Add Event for Control Rig) > 컨트롤 릭(Control Rig) 을 선택하여 이벤트 그래프에 추가할 수 있습니다.
이름 |
이미지 |
설명 |
---|---|---|
초기화 이전에(On Pre Initialize) |
|
이 이벤트는 컴포넌트의 컨트롤 릭이 초기화되기 전에 호출됩니다. 컨트롤 릭 컴포넌트가 초기화되기 전에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Begin Play와 유사하게 한 번만 실행됩니다. |
초기화 이후에(On Post Initialize) |
|
이 이벤트는 컴포넌트의 컨트롤 릭이 초기화된 후에 호출됩니다. 컨트롤 릭 컴포넌트가 초기화된 후에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Begin Play와 유사하게 한 번만 실행됩니다. |
구성 이전에(On Pre Setup) |
|
이 이벤트는 컴포넌트 컨트롤 릭의 설정 이벤트 이전에 호출됩니다. 컨트롤 릭의 설정 이벤트 이전에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Begin Play와 유사하게 한 번만 실행됩니다. |
구성 이후에(On Post Setup) |
|
이 이벤트는 컴포넌트 컨트롤 릭의 설정 이벤트 이후에 호출됩니다. 컨트롤 릭의 설정 이벤트 이후에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Begin Play와 유사하게 한 번만 실행됩니다. |
정방향 솔브 이전에(On Pre Forwards Solve) |
|
이 이벤트는 컴포넌트 컨트롤 릭의 정방향 솔브 이전에 호출됩니다. 컨트롤 릭의 정방향 솔브 이전에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Tick과 유사하게 지속적으로 실행됩니다. |
정방향 솔브 이후에(On Post Forwards Solve) |
|
이 이벤트는 컴포넌트 컨트롤 릭의 정방향 솔브 이후에 호출됩니다. 컨트롤 릭의 정방향 솔브 이후에 컨트롤 릭의 트랜스폼 또는 추가 변수를 설정하는 데 사용할 수 있습니다. 일반적인 컨트롤 릭 설정에서 이 이벤트는 Event Tick과 유사하게 지속적으로 실행됩니다. |
매핑
설정 단계 도중에 전체 스켈레탈 메시 컴포넌트를 컨트롤 릭 컴포넌트에 매핑해야 합니다. 그런데 컨트롤 릭 내의 특정 엘리먼트를 다른 컴포넌트에 매핑할 수도 있습니다. 매핑은 양방향으로 이뤄집니다. 즉, 컨트롤 릭 엘리먼트는 컴포넌트에 영향을 미칠 수도 있고, 컴포넌트로부터 영향을 받을 수도 있습니다. 이런 점에서 매핑은 어태치와 약간 비슷합니다.
기본적으로 매핑은 대개 컨트롤 릭 클래스 의 본 이름을 스켈레탈 메시 컴포넌트 에 매칭하여 이루어집니다. 따라서, 두 컴포넌트가 모두 사용 중인 경우 블루프린트 내에 두 가지의 다른 스켈레톤이 작동하고 있다고 생각할 수 있습니다. 매핑은 이 두 스켈레톤과 기타 컴포넌트가 서로 영향을 미치게 합니다.
엘리먼트 매핑을 수행하는 방식은 다음과 같습니다.
수동 디테일 매핑
디테일 패널의 애니메이션 섹션에서 컨트롤 릭 컴포넌트는 매핑된 엘리먼트(Mapped Elements) 배열을 갖습니다. 추가(+) 버튼을 클릭하여 수동으로 매핑할 정보를 추가하고 엘리먼트를 컨트롤 릭에 연결할 수 있습니다.
예를 들어 카메라 컴포넌트를 블루프린트에서 매핑하여 컨트롤이 그 위치에 영향을 미치게 하려면 다음 프로퍼티를 입력합니다.
컴포넌트 이름(Component Name) 을 카메라(Camera) 로 설정하여 카메라 컴포넌트와 매칭되게 합니다.
컨트롤 릭 엘리먼트에 매핑할 것이므로 엘리먼트 타입(Element Type) 을 컨트롤(Control) 로 설정합니다.
엘리먼트 이름(Element Name) 을 매핑할 카메라 릭 엘리먼트의 이름인 Camera_ctrl 로 설정합니다.
방향(Direction) 을 출력(Output) 으로 설정하여 매핑의 방향을 정의합니다. 이 경우 출력은 컨트롤 엘리먼트가 카메라 트랜스폼을 지시하게 합니다. 입력 을 지정하면 카메라 컴포넌트가 컨트롤 엘리먼트를 지시합니다.
매핑 세팅을 생성할 때 사용할 수 있는 프로퍼티는 다음과 같습니다.
이름 |
설명 |
---|---|
컴포넌트 레퍼런스(Component Reference) |
이름으로 정의되는 블루프린트 컴포넌트입니다. 컨트롤 릭 컴포넌트가 액터 기반 블루프린트인 경우, 지정된 이름이 없을 때 기본값으로 자신(Self) 을 레퍼런스된 액터로 삼습니다. |
트랜스폼 인덱스(Transform Index) |
다수의 트랜스폼을 갖는 컴포넌트에 대한 인덱스 값(선택 사항)입니다. |
트랜스폼 이름(Transform Name) |
스켈레탈 메시의 소켓 등 다수의 개별화된 트랜스폼 이름을 갖는 컴포넌트에 대한 이름 값(선택 사항)입니다. |
엘리먼트 타입(Element Type) |
컴포넌트를 입력 또는 출력으로 갖는 컨트롤 릭의 릭 엘리먼트 타입입니다. 본, 컨트롤, Null, 커브, 리지드 바디, 레퍼런스 중에서 선택할 수 있습니다. |
엘리먼트 이름(Element Name) |
컴포넌트를 입력 또는 출력으로 갖는 컨트롤 릭의 릭 엘리먼트 이름입니다. |
방향 |
매핑된 블루프린트 컴포넌트와 컨트롤 릭 엘리먼트 사이의 컨트롤 방향을 결정합니다.
|
오프셋(Offset) |
매핑에 적용할 트랜스폼 오프셋입니다. |
가중치(Weight) |
매핑의 인수입니다. |
스페이스(Space) |
매핑이 정의되어야 하는 트랜스폼 스페이스입니다. |
다이내믹 그래프 매핑
이벤트 그래프에서 동적으로 매핑을 추가하거나 변경할 수도 있습니다. 이는 여러 함수 및 구조체를 사용하여 수행되어 다양한 수준의 매핑을 달성합니다.
매핑된 스켈레탈 메시 추가하기
이 노드는 스켈레탈 메시 컴포넌트를 받아서 스켈레탈 메시의 본을 컨트롤 릭 컴포넌트에 사용된 컨트롤 릭의 프리뷰 메시에 매핑합니다. 이것이 컨트롤 릭-스켈레탈 메시 매핑 링크입니다. 일반적으로 이 노드는 블루프린트에서 컨트롤 릭의 초기화를 수행할 때 사용됩니다.
매핑된 스켈레탈 메시 본 배열 추가하기
이 노드는 스켈레탈 메시 컴포넌트와 컨트롤 릭 컴포넌트 간의 본 또는 커브 배열을 매핑합니다. 또한, 컨트롤 릭 스켈레톤과 스켈레탈 메시 스켈레톤이 서로 다른 본 또는 커브 이름을 갖는 경우 소스(Source) 및 타깃(Target) 이름을 지정할 수 있습니다. 이는 이름 '찾기 및 대체'와 워크플로가 유사하지만, 개별 본 또는 커브에 대해서만 작동합니다.
어느 한쪽 배열의 본 또는 커브만 매핑됩니다. 전체 스켈레톤도 매핑하려면 이 노드 뒤에 매핑된 스켈레탈 메시 추가 를 사용합니다.
매핑된 엘리먼트 추가하기
이 노드는 블루프린트 컴포넌트 배열을 컨트롤 릭 컴포넌트에 매핑합니다. 이러한 컴포넌트는**Make ComponentReference 및 Make ControlRigComponentMappedElement** 구조체에 의해 정의됩니다. 이러한 구조체의 프로퍼티 및 포맷은 디테일 패널에서 매핑 할 때와 동일합니다.
매핑된 컴포넌트 추가하기
이 노드는 블루프린트 컴포넌트 배열을 컨트롤 릭 컴포넌트에 매핑합니다. 이러한 컴포넌트는 컴포넌트 및 Make ControlRigComponentMappedComponent 구조체를 직접 레퍼런스하여 정의됩니다. 이 구조체의 프로퍼티는 ControlRigComponentMappedElement 만들기 의 간소화된 베리언트이며, 가장 일반적인 매핑 프로퍼티만 제공합니다.