스켈레탈 계층구조와 무관하게 다이내믹하고 프로시저럴한 모션을 만들기 위해 컨트롤 릭에서 스플라인을 빌드 및 사용할 수 있습니다. 스플라인을 사용하면 촉수, 척추, 뱀 등 림(limb)에서 더 적은 필수 컨트롤로 더 복잡한 포즈를 생성할 수 있습니다.
이 문서에서는 릭에서 스플라인을 생성 및 사용하는 방법을 살펴봅니다.
전제조건
꼬리 등 스플라인에 적합한 조인트 구조가 있는 스켈레탈 메시에 대해 컨트롤 릭 에셋을 생성한 상태여야 합니다. 자세한 방법은 컨트롤 릭 퀵스타트 페이지를 참조하세요.
컨트롤 생성 및 배치 방법을 숙지하고 있어야 합니다.
스플라인 생성하기
컨트롤 릭에서 스플라인 생성은 스플라인 구성에 사용되는 임의의 이동 포인트를 지정함으로써 이뤄집니다. 일반 설정에서 이러한 포인트는 컨트롤(Controls) 의 트랜스폼 정보를 바탕으로 합니다.
먼저, 릭 그래프에서 우클릭하고 Spline From Points 를 선택하여 Spline From Points 노드를 생성합니다.
다음으로, 스플라인에서 포인트를 정의하는 데 사용되는 릭 엘리먼트를 생성합니다. 이 예시에서는 4개의 컨트롤을 생성하여 촉수 길이를 따라 균등하게 분포시켰습니다. 컨트롤 수는 체인에 있는 본 수와 일치하지 않아도 됩니다.
그런 다음, 루트 릭 엘리먼트를 릭 그래프로 레퍼런스하고 Spline From Points 노드의 추가(+) 버튼을 클릭하여 배열에 첫 스플라인 포인트를 추가합니다. 엘리먼트 레퍼런스에서 트랜스폼(Transform) 핀을 펼쳐서 이동(Translation) 핀을 포인트(Points) 핀의 입력에 연결합니다.
계속해서 스플라인 형성에 사용할 모든 릭 엘리먼트에 대한 스플라인 포인트를 추가합니다. Spline From Points 노드에 연결하는 순서가 스플라인의 방향과 일치해야 합니다.
컨트롤 릭의 스플라인은 성공적인 스플라인 생성을 위해 최소 4개 포인트를 필요로 합니다.
이제 스플라인을 시각적으로 표시하는 Draw Spline 노드를 사용하여 스플라인을 프리뷰할 수 있습니다. 그래프에서 우클릭하고 Draw Spline 을 선택하여 이 노드를 생성한 다음, Spline From Points 의 스플라인(Spline) 핀을 연결하고 Forwards Solve 의 실행(Execute) 이벤트를 연결합니다. 뷰포트에서 컨트롤을 조작하면 스플라인 행동을 프리뷰할 수 있습니다.
본에 스플라인 적용하기
스플라인이 생성되면 조인트 체인에 이를 적용할 수 있습니다.
우선 그래프에서 우클릭하고 Fit Chain on Spline Curve 를 선택하여 Fit Chain on Spline Curve 노드를 생성합니다.
다음으로, 스플라인에 포함할 본을 릭 계층구조(Rig Hierarchy) 패널에서 다중 선택하고 릭 그래프로 드래그한 후 항목 배열 생성(Create Item Array) 을 선택합니다. 이 작업에서는 선택 순서가 중요한데, 결과 본 배열이 스플라인 포인트의 순서와 일치하도록 해야 하기 때문입니다.
마지막으로, 릭 엘리먼트(Rig Element) 배열을 항목(Items) 핀에 연결하고 Spline From Points 노드에서 스플라인 핀을 연결한 후, 실행 이벤트가 컨트롤 릭 로직 체인에 연결됐는지 확인합니다.
이제 스플라인이 본 체인에 영향을 미칠 것입니다.
스플라인 프로퍼티
Spline From Points 노드에서 사용 가능한 프로퍼티는 다음과 같습니다.
이름 |
설명 |
---|---|
Points(포인트) |
스플라인 구성에 사용될 위치 정보입니다. 이는 배열일 수도 있고, 추가(+) 버튼을 클릭해 개별 이동 핀을 사용하여 빌드할 수도 있습니다. |
스플라인 모드(Spline Mode) |
사용할 스플라인 타입입니다. 다음 중에서 선택할 수 있습니다.
|
세그먼트당 샘플(Samples Per Segment) |
이 프로퍼티는 스플라인의 근사치 정확도를 제어합니다. 높게 설정하면 스플라인이 더 정확하고 매끄러워집니다. 낮게 설정하면 스플라인이 더 들쭉날쭉하고 부정확해 보입니다. 샘플 카운트가 높아지면 퍼포먼스 비용도 높아지므로 이 값을 너무 높게 설정하지 않는 것이 좋습니다. |
압축(Compression) |
스플라인 길이를 줄일 때 스플라인이 압축되는 정도입니다. |
스트레치(Stretch) |
스플라인 길이를 늘일 때 스플라인이 스트레칭되는 정도입니다. |
스플라인(출력)(Spline (Output)) |
이 노드의 결과 스플라인입니다. |
Fit Chain on Spline Curve 노드에서 사용 가능한 프로퍼티는 다음과 같습니다.
이름 |
설명 |
---|---|
항목(Items) |
제공된 스플라인 에 정렬할 릭 엘리먼트 배열입니다. |
스플라인(Spline) |
정렬할 대상 스플라인 커브입니다. |
정렬(Alignment) |
정렬된 엘리먼트를 전체 스플라인 길이에 맞춰 스트레칭할지 여부입니다.
|
최소(Minimum) |
커브에 사용할 최소 U 값입니다. U 는 모든 결합된 컨트롤 포인트 사이의 정규화된(0~1) 백분율입니다. |
최대(Maximum) |
커브에 사용할 최대 U 값입니다. U 는 모든 결합된 컨트롤 포인트 사이의 정규화된(0~1) 백분율입니다. |
샘플링 정밀도(Sampling Precision) |
이 프로퍼티는 스플라인의 근사치 정확도를 제어합니다. 높게 설정하면 스플라인이 더 정확하고 매끄러워집니다. 낮게 설정하면 스플라인이 더 들쭉날쭉하고 부정확해 보입니다. 이 프로퍼티는 Spline From Points 노드의 세그먼트당 샘플 프로퍼티를 덮어씁니다. 샘플 카운트가 높아지면 퍼포먼스 비용도 높아지므로 이 값을 너무 높게 설정하지 않는 것이 좋습니다. |
기본 축(Primary Axis) |
체인에서 정렬되는 주요 축입니다. 단순한 설정에서는 이 프로퍼티를 무시해도 되지만 일반적으로는 이 값을 항목 체인이 진행하는 방향으로 설정하는 것이 좋습니다.
|
보조 축(Secondary Axis) |
체인에서 정렬되는 보조 축 또는 '상향' 축입니다. 단순한 설정에서는 이 프로퍼티를 무시해도 되지만 일반적으로는 폴 벡터가 사용되는 경우 이 값을 폴 벡터 방향으로 설정하는 것이 좋습니다.
|
폴 벡터 위치(Pole Vector Position) |
선택 사항인 폴 벡터 컨트롤의 위치입니다. 보조 축 이 설정된 경우에만 효과가 있습니다. |
회전(Rotations) |
스플라인 전반에 추가적으로 적용할 회전 배열입니다. |
회전 이즈 타입(Rotation Ease Type) |
각 회전 엘리먼트 사이에 사용할 이즈 타입입니다. |
가중치(Weight) |
커브에 엘리먼트 적용 시 사용되는 인수입니다. |
자손으로 전파(Propagate to Children) |
릭 엘리먼트의 변경 사항을 모든 자손에 재귀적으로 적용할지 여부입니다. |
스플라인 노드
컨트롤 릭 그래프에서 사용할 수 있는 스플라인 노드는 다음과 같습니다.
이름 |
이미지 |
설명 |
---|---|---|
Closest Parameter From Spline |
|
주어진 스플라인과 위치에서 가장 가까운 U 값을 가져옵니다. |
Draw Spline |
|
뷰포트에서 프리뷰 목적으로 스플라인 커브를 표시합니다. 색(Color), 두께(Thickness), 샘플 디테일(Detail) 제어를 위한 프로퍼티를 포함합니다. |
Fit Chain on Spline Curve |
|
주어진 스플라인을 항목 배열을 따라 맞춥니다. 이 노드는 일반적으로 스플라인을 포함하는 역방향 솔브 수행 시 사용됩니다. |
Fit Spline Curve on Chain |
|
릭 엘리먼트 체인을 스플라인에 적용합니다. |
Get Length Of Spline |
|
스플라인 길이를 구합니다. |
Parameter At Length Percentage |
|
길이 백분율을 고려하여 스플라인의 U 값을 반환합니다. |
Position From Spline |
|
스플라인을 따라 U 값을 고려한 위치를 반환합니다. |
Set Spline Points |
|
현재 존재하는 스플라인 포인트를 새 값으로 설정하고 이에 따른 새 스플라인을 출력합니다. |
Spline From Points |
|
이동 포인트 배열에서 스플라인을 빌드합니다. |
스플라인에서 탄젠트(Tangent From Spline) |
|
U 값에 의해 정의된 스플라인을 따라 포인트의 탄젠트 각도를 반환합니다. |
Transform From Spline |
|
주어진 스플라인 및 U 값에서 주어진 상향(Up) 및 롤(Roll) 을 바탕으로 트랜스폼을 반환합니다. |