컨트롤, 본, Null

컨트롤 릭 구성에 사용할 수 있는 주요 릭 엘리먼트를 학습합니다.

컨트롤 릭에서 강력한 릭을 생성할 때 사용하는 주요 릭 엘리먼트는 컨트롤 , , Null 입니다. 각 엘리먼트는 다양하게 응용할 수 있고, 함께 사용하여 완성된 릭을 생성할 수 있습니다.

이 문서는 컨트롤, 본, Null에 대한 개요와 이를 활용하는 간단한 워크플로 예시를 제공합니다.

전제 조건

  • 스켈레탈 메시에 대한 컨트롤 릭을 생성하고 열었어야 합니다.

엘리먼트 개요

컨트롤, 본, Null은 릭 계층구조(Rig Hierarchy) 패널을 우클릭하고 신규(New) 메뉴의 옵션 중 하나를 선택하여 생성합니다.

new bone new control new null

이 엘리먼트를 생성하면 디폴트 위치인 뷰포트의 (0,0,0) 지점에 배치됩니다. 릭 계층구조 패널에서 엘리먼트를 선택했다면 해당 엘리먼트의 위치에 생성하고 그 엘리먼트를 부모로 설정합니다. 이 선택 컨텍스트를 활용하면 여러 엘리먼트를 쉽게 정렬할 수 있습니다.

컨트롤 생성

조직

릭 계층구조 에서 엘리먼트를 우클릭하고 이름변경(Rename) 을 선택하거나 F2 를 눌러서 엘리먼트의 이름을 변경할 수 있습니다.

rename control

릭 계층구조 에서 엘리먼트를 드래그하면 다시 정렬할 수 있습니다.

  • 엘리먼트를 다른 엘리먼트 위로 드래그하면 해당 엘리먼트가 부모로 설정됩니다.

  • 엘리먼트를 빈 영역으로 드래그하면 부모 설정이 해제됩니다.

  • Shift+P 를 눌러도 선택한 엘리먼트의 부모 설정이 해제됩니다.

컨트롤 드래그 드롭 부모 재지정

컨트롤

컨트롤 은 컨트롤 릭 인터랙션에 사용되는 주요 엘리먼트입니다. 시퀀서 에서 애니메이팅되는 본 체인을 유도하는 데 사용되며, 추가 커스텀 어트리뷰트를 제공합니다. 컨트롤이 다른 모양 및 색, 프로퍼티 타입과 트랜스폼 제한을 갖도록 커스터마이징할 수도 있습니다.

생성 컨텍스트

본에 상대적인 컨트롤을 생성하면 컨트롤은 자동으로 본과 동일한 이름을 상속받고 접미사 _ctrl 이 붙습니다.

create control

다수의 컨트롤 생성

일반적인 생성 메서드 외에도, 다수의 본을 선택했을 때 Python 스크립트를 사용하여 컨트롤을 생성할 수 있습니다. 릭 계층구조에서 다수의 본을 선택한 다음 우클릭하고 신규 > 선택한 대상에 컨트롤 추가(Add Controls For Selected) 를 선택합니다. 이렇게 하면 선택한 모든 본에 대한 컨트롤이 생성됩니다. 컨트롤은 본의 이름 뒤에 _ctrl 이 붙은 이름을 사용하며, 본과 동일한 계층구조를 지닙니다.

add controls for selected

Alt 를 누른 채로 신규 > 선택한 대상에 컨트롤 추가 를 클릭하여 이 생성 메서드를 커스터마이징할 수도 있습니다. 그러면 다음 세팅을 커스터마이징할 수 있는 대화창이 열립니다.

add controls for selected options

이름

설명

출력 포맷(Output Format)

생성된 컨트롤을 정리하는 방법입니다. 다음 옵션 중에서 선택할 수 있습니다.

  • 계층구조(Hierarchy): 선택된 본과 동일한 계층구조를 복사하며, 최상단 컨트롤은 본 계층구조로부터의 부모 지정이 해제됩니다.

  • 목록(List): 생성된 컨트롤의 부모 설정을 모두 해제하여 릭 계층구조의 루트에 단순한 목록으로 표시합니다.

  • 자손(Child): 생성된 모든 컨트롤을 관련된 본 아래의 자손으로 지정합니다.

접미사(Suffix)

본과 동일한 컨트롤의 이름 뒤에 적용할 텍스트입니다.

접두사(Prefix)

본과 동일한 컨트롤의 이름 앞에 적용할 텍스트입니다.

컨트롤 및 값 타입

컨트롤에서는 대체 프로퍼티 또는 제한된 프로퍼티를 제공하는 다양한 컨트롤 타입을 지정할 수 있습니다. 이는 어트리뷰트 기반 컨트롤, 프록시 컨트롤, 피드백 컨트롤을 생성할 때 유용합니다.

선택한 컨트롤의 디테일 패널에서 애니메이션 타입(Animation Type) 드롭다운 메뉴를 클릭하여 컨트롤 타입을 지정할 수 있습니다. 선택 가능한 컨트롤 타입은 다음과 같습니다.

control type

컨트롤 타입

설명

애니메이션 컨트롤(Animation Control)

일반 표시되는 애니메이팅 가능 컨트롤을 제공하는 디폴트 컨트롤 타입입니다.

ControlType2.png

애니메이션 채널(Animation Channel)

애니메이션 채널 또는 커스텀 어트리뷰트를 제공하는 데 사용되는 컨트롤 타입입니다. 그룹 채널(Group Channels) 이 활성화된 경우 이 어트리뷰트는 부모 컨트롤에서 액세스되며 그곳에서 다른 어트리뷰트와 함께 애니메이팅될 수 있습니다.

ControlType3.png

프록시 컨트롤(Proxy Control)

프록시 컨트롤은 구동하고 / 구동되는 관계로 다른 컨트롤과 연결될 수 있는 타입의 컨트롤입니다. 연결하기 위해서는 구동하고자 하는 컨트롤을 구동 제어(Driven Controls) 배열에 추가합니다. 프록시 컨트롤은 직접 애니메이팅될 수 없지만 Get DrivenSet Driven 노드를 사용하여 통합된 방식으로 다른 컨트롤을 구동하는 데 사용할 수 있습니다.

ControlType4.png

시각적 단서(Visual Cue)

애니메이션 타입 외에도 컨트롤의 출력 데이터를 설정하는 값 타입(Value Type) 을 조정할 수 있습니다. 값 타입(Value Type) 드롭다운 메뉴에서는 다음을 설정할 수 있습니다.

이름

설명

부울(Bool)

컨트롤을 부울 타입 으로 만들면 애니메이션의 True/False 상태를 설정할 수 있습니다. 부울 타입 컨트롤은 뷰포트 에 표시되지 않습니다.

control type bool

플로트(Float)

컨트롤을 플로트 타입 으로 만들면 컨트롤을 단일 위치 축에 따라 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type)애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축(Primary Axis) 프로퍼티에서 축을 선택하여 축을 지정할 수 있습니다. 이 타입을 사용할 때 컨트롤을 움직일 수 있는 디폴트 제한 범위0~100 입니다. 플로트는 슬라이더 컨트롤을 생성할 때 유용합니다.

control type float

인티저(Integer)

컨트롤을 인티저 타입 으로 만들면 컨트롤을 단일 위치 축에 따라 1씩 증가하도록 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type)애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축(Primary Axis) 프로퍼티에서 축을 선택하여 축을 지정할 수 있습니다. 이 타입을 사용할 때 컨트롤을 움직일 수 있는 디폴트 제한 범위0~100 입니다. 또한 열거형 컨트롤(Control Enum) 프로퍼티에서 열거형(Enumeration) 을 참조하여 이 컨트롤 타입을 열거형으로 변환할 수 있습니다.

control type integer enum

벡터 2D(Vector 2D)

컨트롤을 벡터 2D 타입 으로 만들면 컨트롤을 두 개의 위치 축에 따라 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type)애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축 에서 지정된 축은 사용되지 않으며 나머지 축이 2D 평면을 제공합니다. 이 타입을 사용할 때 두 축에서 컨트롤을 움직일 수 있는 디폴트 제한 범위0~100 입니다.

control type vector 2d

위치(Position)

컨트롤을 위치 타입 으로 만들면 컨트롤의 위치만 애니메이팅할 수 있습니다.

control type position

스케일(Scale)

컨트롤을 스케일 타입 으로 만들면 컨트롤의 스케일만 애니메이팅할 수 있습니다.

control type scale

로테이터(Rotator)

컨트롤을 로테이터 타입 으로 만들면 컨트롤의 회전만 애니메이팅할 수 있습니다.

control type rotator

오일러 트랜스폼(Euler Transform)

컨트롤을 트랜스폼 타입 으로 만들면 컨트롤을 모든 이동, 회전, 스케일 축에서 자유롭게 조작할 수 있습니다. 디폴트 타입입니다.

control type euler transform

오일러 트랜스폼 , 로테이터 , 스케일 , 위치 등 공간 컨트롤의 경우 트랜스폼 프로퍼티를 보면 디테일 패널에서 사용 가능한 트랜스폼 관련 추가 기능이 있습니다.

control transform buttons

  1. 회전 드롭 다운 메뉴에서는 오일러(Euler) , 쿼터니언(Quaternion) , 축 및 각도(Axis and Angle) 등 여러 회전 보간 모드를 선택할 수 있습니다.

  2. 로컬/월드 스페이스(Local/World Space) 버튼은 로컬 스페이스와 월드 스페이스 간에 표시된 축 정보를 전환합니다. Shift를 누르고 클릭하면 세 축이 모두 바뀝니다.

  3. 스케일(Scale) 을 고정하면 스케일을 변경할 때 각 방향으로 균등하게 조절됩니다.

트랜스폼 제한

공간 컨트롤에는 제한이 있어서 특정 범위 내에서만 애니메이팅 가능합니다. 이는 슬라이더 또는 2D 기반 컨트롤을 생성하거나 움직임 범위를 제한할 때 유용합니다.

제한은 컨트롤에 최소 또는 최대 프로퍼티 범위를 정의함으로써 설정됩니다. 이 프로퍼티는 선택한 컨트롤의 디테일 패널에서 트랜스폼 카테고리의 최소 또는 최대 를 클릭하여 찾을 수 있습니다.

control limits min max

축 채널을 활성화하여 해당 값에 대한 제한을 활성화하고 그 옆에 있는 영역에서 숫자를 정의합니다. 이 예시에서는 최소 제한을 -50 , 최대 제한을 50 으로 설정했습니다. 이제 컨트롤을 조작할 때 움직임이 해당 제한 내로 한정됩니다.

control limits min max

그리기 제한(Draw Limits) 을 활성화하여 뷰포트 내 모든 컨트롤의 제한을 시각화합니다.

draw limits

스켈레톤에 포함된 일반 본과 별개로, 컨트롤 릭에서 새 본을 생성할 수도 있습니다. 이러한 본은 보통 IK 체인에서 끝 이펙터를 만드는 등의 특정 리깅 행동을 위한 추가 본을 제공하는 보조 방식으로 사용되거나, 통합된 방식으로 '실제' 본을 제어하기 위해 '더미' 본을 만드는 데 사용됩니다.

컨트롤 릭 에디터에서 생성된 본은 일반 스켈레탈 메시 본과 구분되도록 계층구조 아이콘이 비어 있는 채로 표시됩니다.

새 본을 생성한 뒤 이벤트 설정(Setup Event) 모드로 들어가서 뷰포트에서 본을 움직일 수 있으며, 이렇게 하면 뷰포트에서 엘리먼트의 초기 포즈(Initial Pose) 를 편집할 수 있습니다. 툴바에서 솔브 방향 드롭다운 메뉴를 클릭하고 이벤트 설정 을 선택합니다.

setup event

이벤트 설정 이 활성화되면 뷰포트에서 본을 움직일 수 있습니다.

setup event bone manipulation

디폴트 상태에서는 선택된 본만 뷰포트에 표시됩니다. 이 뷰 모드를 변경하려면 뷰포트 툴바에서 캐릭터 > 본 을 클릭한 다음 원하는 본 그리기 세팅을 선택합니다.

bone display

워크플로 예시

이 예시에서는 컨트롤 릭에서 생성된 본을 손가락 IK 체인의 끝 이펙터로 사용합니다.

bone control example

Null

Null 은 다른 릭 엘리먼트를 임의적인 방식으로 수집, 그룹화, 트랜스폼하는 데 사용되는 컨테이너 엘리먼트입니다. 일반적인 휴머노이드 컨트롤 릭 구성에서 이는 다리와 팔 등의 대칭 컨트롤을 그룹화하여 이러한 컨트롤을 미러링하는 수단으로 사용될 수 있습니다. 이런 면에서 Null은 Autodesk Maya의 그룹(Groups) 콘셉트와 유사하며, 리깅을 조직화하는 데 사용되도록 만들어졌습니다.

new null

디폴트 상태에서 Null은 뷰포트에 표시되지 않습니다. Null을 보려면 뷰포트 툴바에서 Null 표시(Display Nulls) 를 활성화합니다.

display nulls

본과 마찬가지로 Null도 솔브 방향 드롭다운 메뉴에서 이벤트 설정 을 활성화하여 편집할 수 있습니다. 이벤트 설정 을 활성화하면 뷰포트에서 Null을 움직일 수 있습니다.

setup event null move

또한 이벤트 설정 을 활성화하면 뷰포트 내 모든 Null의 비저빌리티가 활성화됩니다.

워크플로 예시

이 예시에서는 대칭적인 팔다리 라인을 따라 여러 컨트롤을 그룹화하는 데 Null을 사용합니다. 그룹화 덕분에 조직화, 미러링, 기타 리깅 작업이 더 용이합니다.

null group symmetrical controls

트랜스폼 타입

릭 엘리먼트의 위치, 회전, 스케일은 다수의 트랜스폼 소스에 의해 결정되며, 이는 초기(Initial), 현재(Current), 오프셋(Offset) 이라고 명명됩니다. 트랜스폼 타입은 각각 컨트롤 릭 실행의 여러 단계에 있는 릭 엘리먼트에서 트랜스포메이션을 수행합니다. 리그 엘리먼트 디테일을 선택하면 여러 트랜스폼 타입을 볼 수 있습니다.

initial current offset transform

다른 컨트롤 타입이 컨트롤에 지정됐을 때는, 초기현재 값 만 지정할 수 있습니다.

initial current value

Shift 를 누른 채로 여러 타입을 클릭하면 디테일 패널에 함께 표시됩니다.

multiple type display

초기

초기 는 릭 그래프의 컨트롤 릭 로직을 실행하기 이전인 엘리먼트의 시작 값입니다. 이 값은 연산 범위 내에서 릭 엘리먼트의 디폴트 값을 설정하며, 현재 의 디폴트 값에 영향을 미칩니다.

초기 값은 디테일 패널에서 수정할 수 있고, 트랜스폼이 있다면 이벤트 설정을 활성화하고 뷰포트에서 엘리먼트를 조작하여 수정할 수 있습니다.

initial transform

현재

현재정방향 솔브 모드에서 작동하는 엘리먼트의 값입니다. 컨트롤의 리얼타임 실제 트랜스폼으로 사용할 값이며, 뷰포트의 컨트롤을 조작하면 현재 포즈를 편집하게 됩니다. 컨트롤 릭 에디터 내의 현재 포즈는 임시용이므로 에셋을 다시 컴파일하거나 다시 열면 리셋될 수 있습니다.

current transform

컨트롤 릭을 시퀀서 내에서 애니메이팅할 때는 현재 값을 애니메이팅하는 것입니다.

오프셋 트랜스폼

오프셋컨트롤 타입오일러 트랜스폼 으로 설정된 컨트롤에서만 표시됩니다. 초기 및 현재 값 변경 없이 컨트롤을 공간적으로 오프셋하고 컨트롤의 '0 위치' 변경 능력을 제공하는 데 사용됩니다. Autodesk Maya 등 다른 리깅 툴에서 오프셋은 트랜스포메이션 동결(Freeze Transformations) 또는 트랜스폼 오프셋 부모 행렬(Transform Offset Parent Matrix) 과 유사합니다.

offset transform

오프셋이 지정된 컨트롤에서 트랜스폼 값을 출력하면 결과 트랜스폼이 오프셋현재 를 최종 계산된 트랜스폼으로 결합합니다. 스페이스 프로퍼티를 로컬 스페이스 로 세팅하여 현재 만 출력하게 만들면 이를 변경할 수 있습니다.

transform pin

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소