UNREAL 2024. 5. 20. 10:18

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/control-rig-full-body-ik-in-unreal-engine?application_version=5.3

 

언리얼 엔진의 컨트롤 릭 풀 바디 Ik | 언리얼 엔진 5.4 문서 | Epic Developer Community

캐릭터의 풀 바디 IK 시스템을 빌드합니다.

dev.epicgames.com

 

풀 바디 IK
캐릭터의 풀 바디 IK 시스템을 빌드합니다.
 
컨트롤 릭의 풀 바디 인버스 키네마틱(FBIK) 기능을 사용하여 컨트롤 릭에서 고도의 컨트롤 및 유연성을 갖춘 릭을 구성할 수 있습니다. 전반적인 솔버 메서드는 위치 기반 IK(Position Based IK) 프레임워크에 빌드되어 더 빠른 릭 퍼포먼스, 본별 세팅, 선호 각도, 스쿼시 또는 스트레치 등을 지원합니다. FBIK는 지면 정렬, 팔을 뻗는 행동 등 컨트롤 릭 내의 프로시저럴 조정 툴로 작동하도록 설계됐습니다.
이 문서에서는 FBIK 노드 생성 방법 및 이 노드의 다양한 기능을 개괄적으로 살펴봅니다.
전제조건
FBIK는 [컨트롤 릭 그래프] (animating-characters-and-objects/ControlRig/Rigging/control-rig-editor#RigGraph) 내의 노드이므로 컨트롤 릭 에디터에 대해 알고 있어야 합니다.
FullBodyIK 플러그인을 활성화해야 합니다. 이를 수행하려면 언리얼 에디터 메뉴 바에서 편집(Edit) > 플러그인(Plugins) 으로 이동하여 FullBodyIK 를 찾습니다. 플러그인을 활성화하고 에디터를 재시작합니다.
 
캐릭터에 대한 컨트롤 릭 에셋을 생성했으며 컨트롤을 생성하는 방법을 알고 있어야 합니다. 자세한 방법은 컨트롤 릭 퀵스타트 페이지를 참조하세요.
생성 및 설정
FBIK 기능을 사용하려면 컨트롤 릭 내에서 FBIK 노드를 생성한 다음 본 및 이펙터를 적절한 핀에 할당하면 됩니다.
먼저 컨트롤 릭 그래프를 우클릭하고 컨텍스트 메뉴에서 계층구조(Hierarchy) > 풀 바디 IK(Full Body IK) 를 선택합니다. 이렇게 하면 풀 바디 IK 노드가 생성됩니다. 노드를 정방향 솔브 노드에 연결합니다.
 
릭 그래프 설정
다음으로, 풀 바디 IK 노드에 루트(Root) 본 프로퍼티를 설정합니다. 일반적인 풀 바디 설정에서 이는 보통 둔부 또는 골반 본입니다.
 
FBIK 시스템에 대해 선택한 컨트롤을 생성 및 추가합니다. 일반적으로 이 컨트롤은 영향을 미치고자 하는 사지에 해당되며, 체인의 주요 끝 본을 기반으로 합니다. 이 예시에서는 머리, 손, 발에 대해 컨트롤이 생성됩니다.
 
이펙터 설정
그래프에 추가된 각 컨트롤에 대한 이펙터 핀을 추가해야 합니다. 이를 위해서는 이펙터(Effectors) 프로퍼티 옆의 추가(Add)(+) 버튼을 클릭합니다. 이펙터는 각 컨트롤마다 생성되어야 합니다.
 
이펙터 엔트리 하나를 펼치면 프로퍼티가 표시됩니다. 각 이펙터 내에서 컨트롤에 대한 해당 본(Bone) 값을 설정한 다음 해당되는 Get Transform 노드에서 트랜스폼 핀을 연결합니다.
 
모든 이펙터와 컨트롤이 연결될 때까지 같은 방식으로 각 이펙터를 해당되는 Get Transform 노드에 연결합니다.
 
설정 결과
이제 캐릭터에 대한 기본 FBIK 설정이 완료되었습니다. 컨트롤 릭 뷰포트 내 컨트롤을 조작하여 결과를 볼 수 있습니다.
 
본 세팅
설정에 따라, 기본 FBIK 행동이 의도대로 이뤄지지 않을 수 있습니다. 이는 특정 본 세팅이 활성화되지 않았기 때문일 수 있습니다. 본 세팅(Bone Settings) 은 풀 바디 IK 노드 내의 프로퍼티이며, FBIK가 영향을 미치고 있는 각 본의 행동을 제어하는 데 사용됩니다.
본 세팅 옆의 추가(+) 버튼을 클릭한 다음 본 프로퍼티에서 영향을 미치고자 하는 본을 지정하여 풀 바디 IK 노드에 본 세팅을 추가합니다. 각 본 세팅은 단일 본에만 영향을 미치므로 릭에서 발생하는 구체적인 문제에 따라 다수의 본 세팅을 추가해야 할 수도 있습니다.
 
휴머노이드 예시에서 다음과 같은 문제가 나타납니다.
둔부가 너무 과도하게 회전 및 이동합니다.
 
다리가 충분히 굽혀지지 않고 경직된 모습을 보입니다.
 
발목이 너무 위로 회전하여 부자연스러운 포즈가 됩니다.
 
본 세팅 을 사용하여 이러한 문제를 해결하고 선호하는 IK 설정을 지원할 수 있습니다.
회전 및 위치 경직도
회전(Rotation) 및 위치 경직도(Position Stiffness) 프로퍼티는 IK 체인에서 얼마나 많은 본이 컨트롤 및 이펙터의 영향을 받는지를 제어하는 데 사용됩니다. 이러한 프로퍼티를 사용하여 골반 본이 컨트롤의 움직임에 의해 영향을 받는 정도를 변경합니다. 0 값은 완전히 자유로운 움직임이 되며, 1 값은 본의 움직임을 완전히 고정합니다.
 
휴머노이드 예시에서는 골반 본이 본 세팅으로 지정되었고 0.8 이 회전 및 위치 경직도 값으로 설정됐습니다. 이 경우에는 어느 정도의 움직임이 선호됩니다.
 
선호 각도
선호 각도는 특정 축을 따라 회전하는 조인트의 우선 순위 지정하여 이펙터에 닿도록 하는 데 사용됩니다. 휴머노이드 예시에서는 선호 각도를 사용해 다리 및 무릎의 경직도 문제를 해결합니다.
본 세팅의 하단 부근에 선호 각도(Preferred Angles) 프로퍼티가 있습니다. 선호 각도를 사용하려면 선호 각도 사용(Use Preferred Angles) 을 활성화해야 합니다.
 
선호 각도 프로퍼티는 캐릭터 타입 및 조인트 구조에 따라 지정합니다. 이 예시에서는 마네킹의 무릎이 Z축(Z axis) 을 따라 양의 방향으로 구부러져야 하므로 45 값을 Z 프로퍼티에 설정해야 합니다.
 
제한
제한(Limits) 은 IK 체인을 따르는 본 축의 회전 범위를 제한하거나 완전히 고정하는 데 사용됩니다. 이 세팅은 경직도와 선호 각도 프로퍼티 사이에 있습니다.
 
각 축에는 다음과 같은 제한 세팅이 있습니다.
자유(Free) 는 본의 자유로운 움직임을 허용합니다.
제한됨(Limited) 은 지정된 범위 내의 움직임만 허용합니다. 이 항목을 선택하면 최대/최소(Min/Max) 프로퍼티를 사용하여 움직임의 범위를 정의합니다.
고정됨(Locked) 은 해당 축을 따라 이루어지는 움직임을 비활성화합니다.
이 휴머노이드 예시에서는 이러한 제한을 사용하여 부자연스러운 발목 회전 문제를 바로잡을 수 있습니다. -70 값을 최소 Z 로, 70 값을 최대 Z 로 설정하고 Z 축을 제한됨 으로 설정합니다.
 
본 제외하기
릭의 요구 사항에 따라 FBIK 솔브에서 본을 제외해야 하는 경우도 있습니다. 이는 부자연스러운 포즈를 바로잡거나 FBIK 행동을 단순화할 때 유용합니다.
 
오로지 본 세팅을 사용하여 본을 완전히 경직되게 만들거나 고정하기보다는 본을 제외하는 것이 권장됩니다.
본을 제외하려면 제외된 본(Excluded Bones) 옆의 추가(+) 버튼을 클릭한 다음 드롭다운 메뉴에서 제외할 본을 선택합니다.
 
노드 레퍼런스
다음은 풀 바디 IK 노드의 모든 핀과 세팅 목록입니다.
이름 설명
루트 FBIK 체인의 루트 본입니다.
이펙터  
본 IK 체인의 엔드포인트 본이며 컨트롤에 대응합니다.
트랜스폼 엔드포인트 본을 제어하는 데 사용되는 트랜스폼입니다. 일반적으로 엔드포인트 본과 동일한 트랜스폼 정보를 공유하는 컨트롤과 연결된 Get Transform 노드에 의해 제공됩니다.
위치 알파(Position Alpha) 이 프로퍼티는 이펙터 또는 본이 타깃 위치 에 닿는 능력에 가중치를 적용합니다. 1 로 설정하면 이펙터가 타깃 트랜스폼에 닿기 위해 최대로 작동합니다. 0 으로 설정하면 이펙터가 입력 포즈를 유지합니다.
회전 알파(Rotation Alpha) 이 프로퍼티는 이펙터 또는 본이 타깃 회전 에 닿는 능력에 가중치를 적용합니다. 1 로 설정하면 이펙터가 타깃 트랜스폼에 닿기 위해 최대로 작동합니다. 0 으로 설정하면 이펙터가 입력 포즈를 유지합니다.
세기 알파(Strength Alpha) 이 프로퍼티는 이펙터가 IK 체인에 미치는 영향력의 세기를 결정합니다. 0 으로 설정하면 이펙터가 체인을 끌어당기지 않으며 다른 이펙터가 우선순위를 갖습니다.
체인 당기기 알파(Pull Chain Alpha) 0.0보다 큰 값을 설정하여 활성화하면 FBIK 솔버는 이펙터부터 가장 가까운 스켈레톤 계층구조 분기까지 확장되는 '체인'으로 스켈레톤을 분할합니다. 이 세팅을 사용하면 스파스 본 체인에 대한 결과는 개선할 수 있지만, 더 복잡한 제약된 본 체인에 대해 원하지 않는 결과가 발생할 수 있습니다.
핀 회전(Pin Rotation) 이펙터 트랜스폼의 회전(1.0 )과 입력 본의 회전(0.0 ) 간에 이펙터 본 회전을 블렌딩합니다.
본 세팅(Bone Settings)  
본 이 세팅을 적용하도록 지정된 본입니다. 이펙터 와 루트 사이 계층구조 내의 모든 본이 대상이 될 수 있습니다.
회전/위치 경직도 본의 회전 또는 이동 프로퍼티에 적용할 경직도의 크기입니다. 값이 0 이면 자유로운 움직임을 허용하며, 값이 1 이면 본이 완전히 고정됩니다.
XYZ 제한 세팅(XYZ Limit Setting) 선택된 본의 축에서 허용되는 움직임의 유형입니다.
자유 는 본의 자유로운 움직임을 허용합니다.
제한됨 은 지정된 범위 내의 움직임만 허용합니다. 이 항목을 선택하면 최대/최소(Min/Max) 프로퍼티를 사용하여 움직임의 범위를 정의합니다.
고정됨 은 해당 축을 따라 이루어지는 움직임을 비활성화합니다.
최대/최소 XYZ(Min/Max XYZ) 제한됨 이 제한 세팅 으로 설정되는 경우, 최대/최소 XYZ 프로퍼티를 사용해 허용되는 움직임 범위를 지정합니다.
선호 각도 사용 선호 각도 사용을 활성화합니다.
선호 각도 체인이 압축될 때 본이 각 축에서 얼마나 회전하는지 지정합니다.
세팅  
반복작업(Iterations) 이펙터가 원하는 목표 위치에 수렴될 때까지 이 값을 높입니다. 이 값을 높이면 FBIK 체인의 CPU 비용도 높아집니다. 경직도 외에도 높은 질량 배수(Mass Multiplier) 및 회전 제한 또한 수렴율에 영향을 미치므로 이 값을 더 조정해야 할 수도 있습니다.
질량 배수(Mass Multiplier) 본이 회전 및 이동에 저항하는 정도에 영향을 미치는 글로벌 값입니다. 일반적인 값 범위는 0.0 ~ 5.0 이며 0.0 은 완전히 느슨하고 5.0 은 굉장히 경직됩니다. 질량 배수 값이 높아질수록 수렴을 달성하기 위한 반복작업 수도 더 많아집니다.
스트레치 허용(Allow Stretch) 활성화하면 본이 이펙터에 닿기 위해 IK 체인을 따라 이동합니다. 위치 강성 값이 이 결과에 영향을 미치며, 강성이 높아지면 스트레치는 줄어듭니다.
루트 행동(Root Behavior) 솔버 루트의 행동을 설정합니다. 다음 옵션 중에서 선택할 수 있습니다.
프리 풀(Pre Pull) - 먼 거리에 도달할 때 더 나은 컨버전스를 달성하는 데 도움이 되도록 루트와 모든 자손을 스트레치된 이펙터의 평균 모션으로 변환합니다.
핀 투 인풋(Pin to Input) - 루트 본의 이동 및 회전을 입력 포즈에 고정하고 루트에 적용된 모든 본 세팅을 오버라이드합니다. 가까운 곳의 부분적인 바디 구성에 유용할 수 있습니다.
자유(Free) - 루트 본이 체인의 다른 본처럼 행동하여 자유롭게 움직이거나 적용된 본 설정에 따라 움직일 수 있습니다.
입력 포즈에서 솔브 시작(Start Solve from Input Pose) 활성화하면 솔버가 틱마다 리셋되어 현재 입력 포즈에서 시작합니다. 비활성화하면 들어오는 애니메이션 포즈가 무시되고 솔버가 이전 솔브의 결과에서 시작합니다.
디버그  
드로 스케일(Draw Scale) 디버그 라인의 크기를 제어하는 배수입니다.
드로 디버그(Draw Debug) 활성화하면 이 FBIK 노드에 대한 IK 체인을 따라 영향을 받는 모든 본이 표시됩니다.