컨트롤 릭에서 강력한 릭을 생성할 때 사용하는 주요 릭 엘리먼트는 컨트롤 , 본 , Null 입니다. 각 엘리먼트는 다양하게 응용할 수 있고, 함께 사용하여 완성된 릭을 생성할 수 있습니다.
이 문서는 컨트롤, 본, Null에 대한 개요와 이를 활용하는 간단한 워크플로 예시를 제공합니다.
전제 조건
스켈레탈 메시에 대한 컨트롤 릭을 생성하고 열었어야 합니다.
엘리먼트 개요
컨트롤, 본, Null은 릭 계층구조(Rig Hierarchy) 패널을 우클릭하고 신규(New) 메뉴의 옵션 중 하나를 선택하여 생성합니다.
이 엘리먼트를 생성하면 디폴트 위치인 뷰포트의 (0,0,0) 지점에 배치됩니다. 릭 계층구조 패널에서 엘리먼트를 선택했다면 해당 엘리먼트의 위치에 생성하고 그 엘리먼트를 부모로 설정합니다. 이 선택 컨텍스트를 활용하면 여러 엘리먼트를 쉽게 정렬할 수 있습니다.
조직
릭 계층구조 에서 엘리먼트를 우클릭하고 이름변경(Rename) 을 선택하거나 F2 를 눌러서 엘리먼트의 이름을 변경할 수 있습니다.
릭 계층구조 에서 엘리먼트를 드래그하면 다시 정렬할 수 있습니다.
엘리먼트를 다른 엘리먼트 위로 드래그하면 해당 엘리먼트가 부모로 설정됩니다.
엘리먼트를 빈 영역으로 드래그하면 부모 설정이 해제됩니다.
Shift+P 를 눌러도 선택한 엘리먼트의 부모 설정이 해제됩니다.
컨트롤
컨트롤 은 컨트롤 릭 인터랙션에 사용되는 주요 엘리먼트입니다. 시퀀서 에서 애니메이팅되는 본 체인을 유도하는 데 사용되며, 추가 커스텀 어트리뷰트를 제공합니다. 컨트롤이 다른 모양 및 색, 프로퍼티 타입과 트랜스폼 제한을 갖도록 커스터마이징할 수도 있습니다.
생성 컨텍스트
본에 상대적인 컨트롤을 생성하면 컨트롤은 자동으로 본과 동일한 이름을 상속받고 접미사 _ctrl
이 붙습니다.
다수의 컨트롤 생성
일반적인 생성 메서드 외에도, 다수의 본을 선택했을 때 Python 스크립트를 사용하여 컨트롤을 생성할 수 있습니다. 릭 계층구조에서 다수의 본을 선택한 다음 우클릭하고 신규 > 선택한 대상에 컨트롤 추가(Add Controls For Selected) 를 선택합니다. 이렇게 하면 선택한 모든 본에 대한 컨트롤이 생성됩니다. 컨트롤은 본의 이름 뒤에 _ctrl
이 붙은 이름을 사용하며, 본과 동일한 계층구조를 지닙니다.
Alt 를 누른 채로 신규 > 선택한 대상에 컨트롤 추가 를 클릭하여 이 생성 메서드를 커스터마이징할 수도 있습니다. 그러면 다음 세팅을 커스터마이징할 수 있는 대화창이 열립니다.
이름 |
설명 |
---|---|
출력 포맷(Output Format) |
생성된 컨트롤을 정리하는 방법입니다. 다음 옵션 중에서 선택할 수 있습니다.
|
접미사(Suffix) |
본과 동일한 컨트롤의 이름 뒤에 적용할 텍스트입니다. |
접두사(Prefix) |
본과 동일한 컨트롤의 이름 앞에 적용할 텍스트입니다. |
컨트롤 및 값 타입
컨트롤에서는 대체 프로퍼티 또는 제한된 프로퍼티를 제공하는 다양한 컨트롤 타입을 지정할 수 있습니다. 이는 어트리뷰트 기반 컨트롤, 프록시 컨트롤, 피드백 컨트롤을 생성할 때 유용합니다.
선택한 컨트롤의 디테일 패널에서 애니메이션 타입(Animation Type) 드롭다운 메뉴를 클릭하여 컨트롤 타입을 지정할 수 있습니다. 선택 가능한 컨트롤 타입은 다음과 같습니다.
컨트롤 타입 |
설명 |
---|---|
애니메이션 컨트롤(Animation Control) |
일반 표시되는 애니메이팅 가능 컨트롤을 제공하는 디폴트 컨트롤 타입입니다.
|
애니메이션 채널(Animation Channel) |
애니메이션 채널 또는 커스텀 어트리뷰트를 제공하는 데 사용되는 컨트롤 타입입니다. 그룹 채널(Group Channels) 이 활성화된 경우 이 어트리뷰트는 부모 컨트롤에서 액세스되며 그곳에서 다른 어트리뷰트와 함께 애니메이팅될 수 있습니다.
|
프록시 컨트롤(Proxy Control) |
프록시 컨트롤은 구동하고 / 구동되는 관계로 다른 컨트롤과 연결될 수 있는 타입의 컨트롤입니다. 연결하기 위해서는 구동하고자 하는 컨트롤을 구동 제어(Driven Controls) 배열에 추가합니다. 프록시 컨트롤은 직접 애니메이팅될 수 없지만 Get Driven 및 Set Driven 노드를 사용하여 통합된 방식으로 다른 컨트롤을 구동하는 데 사용할 수 있습니다.
|
시각적 단서(Visual Cue) |
애니메이션 타입 외에도 컨트롤의 출력 데이터를 설정하는 값 타입(Value Type) 을 조정할 수 있습니다. 값 타입(Value Type) 드롭다운 메뉴에서는 다음을 설정할 수 있습니다.
이름 |
설명 |
---|---|
부울(Bool) |
컨트롤을 부울 타입 으로 만들면 애니메이션의 True/False 상태를 설정할 수 있습니다. 부울 타입 컨트롤은 뷰포트 에 표시되지 않습니다.
|
플로트(Float) |
컨트롤을 플로트 타입 으로 만들면 컨트롤을 단일 위치 축에 따라 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type) 이 애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축(Primary Axis) 프로퍼티에서 축을 선택하여 축을 지정할 수 있습니다. 이 타입을 사용할 때 컨트롤을 움직일 수 있는 디폴트 제한 범위는 0~100 입니다. 플로트는 슬라이더 컨트롤을 생성할 때 유용합니다.
|
인티저(Integer) |
컨트롤을 인티저 타입 으로 만들면 컨트롤을 단일 위치 축에 따라 1씩 증가하도록 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type) 이 애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축(Primary Axis) 프로퍼티에서 축을 선택하여 축을 지정할 수 있습니다. 이 타입을 사용할 때 컨트롤을 움직일 수 있는 디폴트 제한 범위는 0~100 입니다. 또한 열거형 컨트롤(Control Enum) 프로퍼티에서 열거형(Enumeration) 을 참조하여 이 컨트롤 타입을 열거형으로 변환할 수 있습니다.
|
벡터 2D(Vector 2D) |
컨트롤을 벡터 2D 타입 으로 만들면 컨트롤을 두 개의 위치 축에 따라 애니메이팅할 수 있습니다. 애니메이션 타입(Animation Type) 이 애니메이션 컨트롤(Animation Control) 로 설정된 경우, 기본 축 에서 지정된 축은 사용되지 않으며 나머지 축이 2D 평면을 제공합니다. 이 타입을 사용할 때 두 축에서 컨트롤을 움직일 수 있는 디폴트 제한 범위는 0~100 입니다.
|
위치(Position) |
컨트롤을 위치 타입 으로 만들면 컨트롤의 위치만 애니메이팅할 수 있습니다.
|
스케일(Scale) |
컨트롤을 스케일 타입 으로 만들면 컨트롤의 스케일만 애니메이팅할 수 있습니다.
|
로테이터(Rotator) |
컨트롤을 로테이터 타입 으로 만들면 컨트롤의 회전만 애니메이팅할 수 있습니다.
|
오일러 트랜스폼(Euler Transform) |
컨트롤을 트랜스폼 타입 으로 만들면 컨트롤을 모든 이동, 회전, 스케일 축에서 자유롭게 조작할 수 있습니다. 디폴트 타입입니다.
|
오일러 트랜스폼 , 로테이터 , 스케일 , 위치 등 공간 컨트롤의 경우 트랜스폼 프로퍼티를 보면 디테일 패널에서 사용 가능한 트랜스폼 관련 추가 기능이 있습니다.
회전 드롭 다운 메뉴에서는 오일러(Euler) , 쿼터니언(Quaternion) , 축 및 각도(Axis and Angle) 등 여러 회전 보간 모드를 선택할 수 있습니다.
로컬/월드 스페이스(Local/World Space) 버튼은 로컬 스페이스와 월드 스페이스 간에 표시된 축 정보를 전환합니다. Shift를 누르고 클릭하면 세 축이 모두 바뀝니다.
스케일(Scale) 을 고정하면 스케일을 변경할 때 각 방향으로 균등하게 조절됩니다.
트랜스폼 제한
공간 컨트롤에는 제한이 있어서 특정 범위 내에서만 애니메이팅 가능합니다. 이는 슬라이더 또는 2D 기반 컨트롤을 생성하거나 움직임 범위를 제한할 때 유용합니다.
제한은 컨트롤에 최소 또는 최대 프로퍼티 범위를 정의함으로써 설정됩니다. 이 프로퍼티는 선택한 컨트롤의 디테일 패널에서 트랜스폼 카테고리의 최소 또는 최대 를 클릭하여 찾을 수 있습니다.
축 채널을 활성화하여 해당 값에 대한 제한을 활성화하고 그 옆에 있는 영역에서 숫자를 정의합니다. 이 예시에서는 최소 제한을 -50 , 최대 제한을 50 으로 설정했습니다. 이제 컨트롤을 조작할 때 움직임이 해당 제한 내로 한정됩니다.
그리기 제한(Draw Limits) 을 활성화하여 뷰포트 내 모든 컨트롤의 제한을 시각화합니다.
본
스켈레톤에 포함된 일반 본과 별개로, 컨트롤 릭에서 새 본을 생성할 수도 있습니다. 이러한 본은 보통 IK 체인에서 끝 이펙터를 만드는 등의 특정 리깅 행동을 위한 추가 본을 제공하는 보조 방식으로 사용되거나, 통합된 방식으로 '실제' 본을 제어하기 위해 '더미' 본을 만드는 데 사용됩니다.
컨트롤 릭 에디터에서 생성된 본은 일반 스켈레탈 메시 본과 구분되도록 계층구조 아이콘이 비어 있는 채로 표시됩니다.
새 본을 생성한 뒤 이벤트 설정(Setup Event) 모드로 들어가서 뷰포트에서 본을 움직일 수 있으며, 이렇게 하면 뷰포트에서 엘리먼트의 초기 포즈(Initial Pose) 를 편집할 수 있습니다. 툴바에서 솔브 방향 드롭다운 메뉴를 클릭하고 이벤트 설정 을 선택합니다.
이벤트 설정 이 활성화되면 뷰포트에서 본을 움직일 수 있습니다.
디폴트 상태에서는 선택된 본만 뷰포트에 표시됩니다. 이 뷰 모드를 변경하려면 뷰포트 툴바에서 캐릭터 > 본 을 클릭한 다음 원하는 본 그리기 세팅을 선택합니다.
워크플로 예시
이 예시에서는 컨트롤 릭에서 생성된 본을 손가락 IK 체인의 끝 이펙터로 사용합니다.
Null
Null 은 다른 릭 엘리먼트를 임의적인 방식으로 수집, 그룹화, 트랜스폼하는 데 사용되는 컨테이너 엘리먼트입니다. 일반적인 휴머노이드 컨트롤 릭 구성에서 이는 다리와 팔 등의 대칭 컨트롤을 그룹화하여 이러한 컨트롤을 미러링하는 수단으로 사용될 수 있습니다. 이런 면에서 Null은 Autodesk Maya의 그룹(Groups) 콘셉트와 유사하며, 리깅을 조직화하는 데 사용되도록 만들어졌습니다.
디폴트 상태에서 Null은 뷰포트에 표시되지 않습니다. Null을 보려면 뷰포트 툴바에서 Null 표시(Display Nulls) 를 활성화합니다.
본과 마찬가지로 Null도 솔브 방향 드롭다운 메뉴에서 이벤트 설정 을 활성화하여 편집할 수 있습니다. 이벤트 설정 을 활성화하면 뷰포트에서 Null을 움직일 수 있습니다.
또한 이벤트 설정 을 활성화하면 뷰포트 내 모든 Null의 비저빌리티가 활성화됩니다.
워크플로 예시
이 예시에서는 대칭적인 팔다리 라인을 따라 여러 컨트롤을 그룹화하는 데 Null을 사용합니다. 그룹화 덕분에 조직화, 미러링, 기타 리깅 작업이 더 용이합니다.
트랜스폼 타입
릭 엘리먼트의 위치, 회전, 스케일은 다수의 트랜스폼 소스에 의해 결정되며, 이는 초기(Initial), 현재(Current), 오프셋(Offset) 이라고 명명됩니다. 트랜스폼 타입은 각각 컨트롤 릭 실행의 여러 단계에 있는 릭 엘리먼트에서 트랜스포메이션을 수행합니다. 리그 엘리먼트 디테일을 선택하면 여러 트랜스폼 타입을 볼 수 있습니다.
다른 컨트롤 타입이 컨트롤에 지정됐을 때는, 초기 및 현재 값 만 지정할 수 있습니다.
Shift 를 누른 채로 여러 타입을 클릭하면 디테일 패널에 함께 표시됩니다.
초기
초기 는 릭 그래프의 컨트롤 릭 로직을 실행하기 이전인 엘리먼트의 시작 값입니다. 이 값은 연산 범위 내에서 릭 엘리먼트의 디폴트 값을 설정하며, 현재 의 디폴트 값에 영향을 미칩니다.
초기 값은 디테일 패널에서 수정할 수 있고, 트랜스폼이 있다면 이벤트 설정을 활성화하고 뷰포트에서 엘리먼트를 조작하여 수정할 수 있습니다.
현재
현재 는 정방향 솔브 모드에서 작동하는 엘리먼트의 값입니다. 컨트롤의 리얼타임 실제 트랜스폼으로 사용할 값이며, 뷰포트의 컨트롤을 조작하면 현재 포즈를 편집하게 됩니다. 컨트롤 릭 에디터 내의 현재 포즈는 임시용이므로 에셋을 다시 컴파일하거나 다시 열면 리셋될 수 있습니다.
컨트롤 릭을 시퀀서 내에서 애니메이팅할 때는 현재 값을 애니메이팅하는 것입니다.
오프셋 트랜스폼
오프셋 은 컨트롤 타입 이 오일러 트랜스폼 으로 설정된 컨트롤에서만 표시됩니다. 초기 및 현재 값 변경 없이 컨트롤을 공간적으로 오프셋하고 컨트롤의 '0 위치' 변경 능력을 제공하는 데 사용됩니다. Autodesk Maya 등 다른 리깅 툴에서 오프셋은 트랜스포메이션 동결(Freeze Transformations) 또는 트랜스폼 오프셋 부모 행렬(Transform Offset Parent Matrix) 과 유사합니다.
오프셋이 지정된 컨트롤에서 트랜스폼 값을 출력하면 결과 트랜스폼이 오프셋 및 현재 를 최종 계산된 트랜스폼으로 결합합니다. 스페이스 프로퍼티를 로컬 스페이스 로 세팅하여 현재 만 출력하게 만들면 이를 변경할 수 있습니다.