CCDIK

IK 체인 구성 및 제어를 위해 CCDIK 스켈레탈 컨트롤 노드에 액세스하여 사용하는 방법입니다.

Choose your operating system:

Windows

macOS

Linux

CCDIK(Cyclic Coordinate Descent Inverse Kinematics, 순환 좌표 하강 역운동학) 애니메이션 블루프린트 노드는 경량 IK 솔버로 본 체인을 이펙터 위치(Effector Location) 로 구동할 때 사용됩니다. CCDIK 노드는 FABRIK 노드와 유사하지만 CCDIK는 본의 회전을 제한하려는 경우 유용하게 쓰일 수 있는 각 컨스트레인트를 정의하는 기능을 제공합니다.

ccdik 애니메이션 블루프린트 노드

여기서 CCDIK 노드는 애님 그래프 에서 선택되고 **이펙터 위치 는 뷰포트 창의 디버그 이동 툴로 조작됩니다.

ccdik 애니메이션 블루프린트 노드

이펙터 위치 가 변경되면 빨간색 디버그 라인으로 하이라이트된 선택한 본 체인이 팁 본이펙터 위치 와 일치하도록 이동합니다. 이펙터 위치 에 대한 다이내믹 벡터 변수를 사용하고 회전 컨스트레인트를 적용하면 이 노드를 사용해서 스켈레탈 메시를 다이내믹하게 조정하여 게임 월드에서 캐릭터와 오브젝트의 인터랙션을 연결할 수 있습니다.

알파(Alpha) 값 또는 핀을 사용하여 생성된 출력 포즈에 적용된 솔브 모션의 정도를 제어할 수 있습니다. 값이 1이면 생성된 출력 포즈를 사용하며 값이 0이면 소스 포즈를 출력합니다.

설정

이 예시 워크플로에서 CCDIK 노드는 게임 월드에서 버튼을 누르도록 캐릭터의 손가락을 다이내믹하게 조정하는 데 사용됩니다.

CCDIK 노드는 컴포넌트 스페이스(Component Space) 안에서 작동하므로, 캐릭터의 애니메이션 블루프린트 안에서 노드를 구현하려면 스페이스 변환이 발생해야 합니다.

애니메이션 블루프린트에 CCDIK 노드를 추가한 다음 애님 그래프 에서 노드를 선택하여 디테일 패널을 엽니다.

디테일 패널 에서 체인 끝의 본이 될 팁 본로컬 루트 본에 대한 조정을 연결할 루트 본 을 선택할 수 있습니다. 이 예시에서 팁 본(Tip Bone) 은 캐릭터의 왼쪽 검지(index_03_l)로 설정하고 루트 본(Root Bone) 은 캐릭터의 왼쪽 어깨(clavical_l)로 설정합니다.

위 비디오에서 CCDIK 노드 프로퍼티의 솔버(Solver) 섹션을 사용하고 캐릭터의 루트 본(Root Bone) 을 왼쪽 어깨로 설정합니다. 그런 다음 팁 본(Tip Bone) 을 캐릭터의 검지 마지막 마디로 설정합니다. 이펙터 위치(Effector Location) 를 조정하면 IK 솔버가 인계하고, 정의한 조인트별 회전 제한(Rotation Limit Per Joints) 값에 따라 체인의 각 본이 따릅니다. 이러한 각도 제한은 본이 이상하게 회전하는 것을 방지하며 원하는 결과를 내기 위해서는 본 단위로 값을 조정해야 할 수 있습니다.

ccdik 노드 디테일 패널 선택 팁 및 솔버 섹션의 루트 본

이펙터 위치 공간(Effector Location Space)월드 스페이스(World Space) 로 설정하여 이펙터 위치(Effector Location) 벡터 변수를 레벨에서 계산합니다.

ccdik 노드 디테일 패널 이펙터 위치 공간 프로퍼티

회전 제한 활성화(Enable Rotation Limit) 프로퍼티를 토글하여 회전 제한을 활성화하고 조인트별 회전 제한(Rotation Limit Per Joints) 프로퍼티 섹션에서 조정할 수 있습니다. 인덱스(Index) 는 로컬 루트 본(Root Bone)팁 본(Tip Bone) 사이의 스켈레톤의 각 조인트에 채워집니다. 이러한 회전을 조정하면 지오메트리가 겹치거나 캐릭터 조인트가 과도하게 확장되는 등의 원치 않는 작동을 방지할 수 있습니다.

ccdik 노드 디테일 패널 회전 제한 프로퍼티

CCDIK 노드는 이제 루트 본(Root Bone) 의 컨스트레인트 및 회전 컨스트레인트에서 이펙터 위치(Effector Location) 의 위치와 일치하도록 팁 본(Tip Bone) 을 조정하여 캐릭터가 모든 각도 또는 높이에서 버튼과 동적으로 상호작용할 수 있습니다.

ccdik 노드 버튼 데모

프로퍼티 레퍼런스

ccdik 노드 디테일 패널

여기에서 CCDIK 노드 프로퍼티의 레퍼런스를 확인할 수 있습니다.

프로퍼티

설명

이펙터 위치(Effector Location)

기본적으로 이 프로퍼티는 애님 그래프(AnimGraph) 노드에 핀으로 표시됩니다. 이 프로퍼티 값은 해결할 때 선택한 팁 본(Tip Bone) 을 조정하는 타깃 포인트입니다.

이펙터 위치 공간(Effector Location Space)

이펙터 위치(Effector Location) 에서 사용하는 레퍼런스 공간 프레임입니다.

이펙터 대상(Effector Target)

이펙터 위치 공간(Effector Location Space)본(Bone) 이면, 이 프로퍼티에서 타깃 본을 정의할 수 있습니다.

팁 본(Tip Bone)

이펙터 위치(Effector Location) 에 맞게 조정할 스켈레탈 메시에서 본을 선택합니다.

루트 본(Root Bone)

스켈레탈 메시에서 본을 선택해서 체인을 끝내고 체인 모션을 로컬 루트 포인트에 고정합니다.

정밀도(Precision)

여기에서 이펙터 위치(Effector Location) 와 일치하도록 팁 본(Tip Bone) 조정에 대한 허용치 수준을 설정할 수 있습니다. 기본값은 1이며 가장 일반적으로 프로젝트에 가장 적합합니다. 더 정밀하게 조정하기 위해 이 값을 높일 수도 있고, 이 값을 낮춰서 정밀도를 낮출 수도 있습니다.

최대 반복작업(Max Iterations)

여기에서 노드가 수행할 수 있는 해결 반복작업의 최대치를 설정할 수 있습니다. 값이 높을수록 퍼포먼스가 떨어지지만 더 정확한 값을 계산할 수 있고, 값이 낮을수록 프로젝트 퍼포먼스는 향상되지만 정밀도는 높지 않습니다. 디폴트값은 10이며, 많은 프로젝트에 적합합니다.

끝에서부터 시작(Start from Tail)

활성화되면 체인의 디버그 드로가 팁 본(Tip Bone) 에서 시작해서 루트 본(Root Bone) 에서 종료됩니다.

회전 제한 활성화(Enable Rotation Limit)

활성화되면 노드가 조인트별 회전 제한(Rotation Limit Per Joints) 프로퍼티의 인덱스(Index) 값을 기반으로 체인의 각 조인트 회전을 제한합니다.

조인트별 회전 제한(Rotation Limit Per Joints)

여기에서 체인의 팁 본(Tip Bone)루트 본(Root Bone) 사이의 각 조인트에 대한 회전 제한을 정의할 수 있습니다. 시작 인덱스(Index)팁 본(Tip Bone) 에 직접 연결된 조인트에 적용되며 루트 본(Root Bone) 에 인접한 조인트까지 순차적으로 체인을 작동합니다.

버튼 블루프린트 레퍼런스

여기에서 버튼 시연을 생성하는 데 사용된 버튼 블루프린트, 캐릭터 블루프린트 및 캐릭터의 애니메이션 블루프린트를 참조할 수 있습니다.

버튼 액터 블루프린트 | 캐릭터 블루프린트 | 캐릭터 애니메이션 블루프린트