풀 바디 IK

FBIK로 차세대 리얼타임 풀 바디 IK 시스템을 구축하세요.

Windows
MacOS
Linux

언리얼 엔진 5 얼리 액세스용 풀 바디 역운동학(FBIK, Full Body Inverse Kinematic) 기능을 사용하면 높은 수준의 컨트롤과 유연성을 가진 컨트롤 릭의 IK를 구축할 수 있습니다. 이 문서에서는 FBIK 노드를 만들고, 원하는 포즈를 얻기 위해 옵션을 구성하고, 노드 레퍼런스를 사용하는 방법을 살펴봅니다.

전제조건

  • FBIK는 컨트롤 릭 그래프(Control Rig Graph) 내 노드이므로 컨트롤 릭 에디터(Control Rig Editor) 와 기능 세트를 어느 정도 이해해야 합니다.

  • FullBodyIK 플러그인을 반드시 활성화해야 합니다. 이를 활성화하려면 언리얼 에디터 메뉴 바에서 편집(Edit) > 플러그인(Plugins) 으로 이동한 다음 FullBodyIK 를 검색합니다. 플러그인을 활성화하고 에디터를 재시작합니다.

    image alt text

  • 스켈레탈 메시 에셋을 프로젝트로 임포트해 두어야 합니다.

생성 및 설정

먼저, 스켈레탈 메시 에셋의 컨트롤 릭 에셋을 만듭니다. 스켈레탈 메시 에셋을 우클릭하고 컨트롤 릭 생성(Create Control Rig) 을 선택하면 됩니다. 이렇게 하면 스켈레탈 메시가 이미 할당된 채로 새 컨트롤 릭(Control Rig) 에셋이 생성됩니다. 이 에셋의 이름은 자동으로 스켈레탈 메시의 이름을 따서 명명되며 이름 뒤에 *_CtrlRig*이 붙습니다.

컨트롤 릭 생성

생성된 컨트롤 릭 에셋(Control Rig Asset) 을 더블 클릭해서 엽니다.

다음으로는 FBIK 노드를 만듭니다. 컨트롤 릭 그래프를 우클릭한 뒤, 컨텍스트 메뉴에서 계층구조(Hierarchy) > 풀 바디 IK(Full Body IK) 를 선택합니다.

PBIK 생성

릭 계층구조(Rig Hierarchy) 패널에서 IK 엔드 이펙터용 컨트롤을 몇 개 만듭니다. 이 예시에서는 왼쪽 다리, 오른쪽 다리, 머리의 본에 컨트롤을 만들었습니다. 원하는 본을 찾아 우클릭한 다음, 신규(New) > 새 컨트롤(New Control) 을 선택합니다.

컨트롤 생성

텍스트를 더블 클릭하고 이름을 입력하면 컨트롤 이름을 알아보기 쉽게 바꿀 수 있습니다.

컨트롤 이름 변경

스켈레톤 계층구조에서 컨트롤의 부모 상태를 해제해야 합니다. 릭 계층구조에서 컨트롤을 우클릭한 다음 부모 해제(Unparent) 를 선택하면 됩니다.

컨트롤 부모 해제

다음으로는 컨트롤 릭 그래프에 컨트롤을 참조할 수 있도록 릭 계층구조 패널의 컨트롤을 릭 그래프 패널로 드래그 앤 드롭한 다음, 컨트롤 가져오기(Get Control) 를 선택합니다.

컨트롤 가져오기

이제 Full Body IK 노드에서 루트(Root) 본을 설정합니다. 이 예시에서는 발과 머리 사이에 상대적으로 간단한 FBIK 시스템을 만들기 때문에 허리(Hips) 또는 골반(Pelvis) 을 루트로 선택하는 게 가장 좋습니다.

PBIK 루트 본

이펙터(Effectors) 어레이 옆의 추가 버튼을 눌러 FBIK 노드에 새로운 이펙터 핀을 추가합니다. 컨트롤마다 이 작업을 수행합니다. 각 이펙터 내에서 각 컨트롤에 해당하는 본(Bone) 값을 설정합니다. 이 예시에서는 Head_CTRL머리(Head) 본의 컨트롤이고, 나머지도 같은 식입니다. 설정을 마치면 컨트롤의 트랜스폼(Transform) 핀을 해당하는 이펙터의 트랜스폼 핀에 연결합니다.

PBIK 이펙터

이제 캐릭터의 기초적인 FBIK 설정이 끝났습니다. 컨트롤 릭 뷰포트 내에서 자유롭게 컨트롤을 조작하며 결과를 확인하세요.

위치 기반 IK

본 세팅

IK 행동이 원하는 대로 동작하지 않을 수도 있습니다. 이는 특정 본 세팅이 설정되지 않았기 때문일 수 있습니다. 본 세팅(Bone Settings) 은 풀 바디 IK 노드에 있는 또 다른 어레이 엘리먼트로, FBIK가 영향을 미치는 각 본의 행동을 제어할 때 사용합니다.

이전 예시에서는 다음과 같은 문제가 나타납니다.

  • 허리가 과도하게 회전하고 이동함

    PBIK 허리 문제

  • 다리가 충분히 회전하지 않음

    PBIK 다리 문제

  • 발목이 너무 위로 회전해서 포즈가 어색함

    PBIK 발목 문제

본 세팅 을 사용하면 선호하는 IK 설정을 최대한 구현할 수 있어 이러한 문제를 해결할 수 있습니다.

회전 강성 및 위치 강성

회전 강성(Rotation Stiffness)위치 강성(Position Stiffness) 은 IK 체인(IK Chain)의 본이 컨트롤과 이펙터로부터 얼마나 영향을 받는지를 제어할 때 사용합니다.

FBIK 강성

이 예시에서 이 두 기능을 사용하여 허리에서 나타나는 문제를 해결할 수 있습니다. 먼저 본 세팅 옆의 추가 버튼을 눌러 새로운 본 세팅을 만듭니다. 본 세팅을 만든 뒤에는 항목에 골반 본을 할당합니다.

본 항목 아래에는 회전 강성위치 강성 에 대한 프로퍼티가 있습니다. 이 프로퍼티로 컨트롤 움직임이 골반 본에 얼마나 영향을 주는지를 설정할 수 있습니다. 범위는 0~1입니다. 0은 완전히 자유로운 상태이고, 1은 완전히 고정된 상태입니다.

이 예시에서는 값을 0.8 로 설정하면 강성이 적절할 것입니다. 강성 값을 입력했다면 컨트롤을 조작해 결과를 확인합니다.

PBIK 강성

선호 각도

선호 각도(Preferred Angles) 를 사용하면 조인트가 이펙터에 도달하도록 특정 축을 따라 회전하게 할 수 있습니다.

이 예시에서는 선호 각도로 다리 문제를 해결할 수 있습니다. 먼저 본 세팅 옆의 추가 버튼을 눌러 새로운 본 세팅을 추가합니다. 그다음, 항목에 calf_l 본** 을 할당합니다.

본 세팅 추가

새로운 본 세팅 항목에서 아래로 내려가다 보면 선호 각도 프로퍼티가 있습니다. 선호 각도 사용(Use Preferred Angles) 박스를 체크해야 합니다.

다음으로는 선호 각도 프로퍼티를 펼칩니다. 여기서 회전 각도를 입력할 수 있습니다. 숫자의 크기는 선호 강도에 영향을 미치므로, 숫자는 0~90 사이여야 합니다.

image alt text

콘텐츠 설정에 따라 입력값은 예시와 다를 수 있습니다. 예시 마네킹의 발은 Z축을 따라 양수 방향으로 구부러져야 하므로 이 예시에서는 Z 프로퍼티에 45 값을 설정합니다. 선호하는 각도를 입력했다면 컨트롤을 조작해 결과를 확인합니다.

PBIK 선호 각도

제한

제한(Limit) 은 IK 체인을 따라 이루어지는 본 축의 회전을 완전히 금지하거나 그 범위를 제한할 때 사용합니다.

이 예시에서는 비현실적으로 구부러지는 발목 본을 제한으로 바로잡을 수 있습니다. 본 세팅 옆의 추가 버튼을 눌러 본 세팅부터 추가합니다. 그리고 항목에 foot_l 본** 을 할당합니다.

PBIK 본 세팅

제한 세팅은 강성과 선호 각도 프로퍼티 사이에 있습니다.

PBIK 제한 세팅

축마다 자유(Free) 동작, 일정 범위로 한정된 제한(Limited) 동작, 그리고 해당하는 축의 동작을 금지하는 고정됨(Locked) 세팅이 있습니다. 제한을 선택하면 최소/최대(Min/Max) 프로퍼티로 움직임의 범위를 정의합니다.

발목이 Z축을 따라 과도하게 회전하는 현상을 바로잡을 수 있도록 최소 Z(Min Z)-70 을, 최대 Z(Max Z)70 을 지정한 뒤, Z축을 제한 으로 설정합니다. 제한 값을 입력했다면 컨트롤을 조작해 결과를 확인합니다.

PBIK 제한 세팅

노드 레퍼런스

image alt text

핀/세팅 이름

설명

루트(Root)

IK 체인에 지정할 루트 본입니다.

이펙터(Effectors)

본(Bone)

IK 체인에 지정할 엔드포인트 본입니다.

트랜스폼(Transform)

엔드포인트 본을 제어하는 데 사용하는 트랜스폼입니다. 보통 엔드포인트 본과 동일한 트랜스폼 정보를 가진 컨트롤에 연결된 Get Transform 노드에서 제공합니다.

오프셋 알파(Offset Alpha)

타깃 컨트롤이나 트랜스폼에 도달하는 이펙터/본의 능력에 가중치를 적용하는 프로퍼티입니다. 1로 설정하면 이펙터가 최대한 타깃 트랜스폼에 도달하려 하고, 0으로 설정하면 이펙터가 입력 포즈를 유지합니다.

강도 알파(Strength Alpha)

이펙터가 IK 체인에 미치는 영향의 강도를 조절하는 프로퍼티입니다. 0으로 설정하면 이펙터가 체인을 풀(pull)하지 않고 다른 이펙터가 우선권을 얻습니다.

본 세팅(Bone Settings)

본(Bone)

세팅이 적용되는 본입니다. 계층구조에서 이펙터와 루트 사이에 있는 어떤 본도 될 수 있습니다.

회전/위치 강성(Rotation/Position Stiffness)

본의 회전 또는 이동에 적용되는 강성입니다. 0으로 설정하면 완전히 자유롭게 움직일 수 있고, 1로 설정하면 본이 완전히 고정됩니다.

XYZ 제한 세팅(XYZ Limit Setting)

선택한 본의 축에 대한 움직임 유형을 고를 수 있는 드롭다운 메뉴입니다. 자유(Free)로 설정하면 완전한 움직임이 가능하고, 제한(Limited)으로 설정하면 지정한 범위 내에서 움직이고, 고정됨(Locked)으로 설정하면 축이 움직이지 않습니다.

최소/최대 XYZ(Min/Max XYZ)

제한 세팅에서 제한을 선택하는 경우, 최소/최대 XYZ 프로퍼티로 움직임의 허용 범위를 지정할 수 있습니다.

선호 각도 사용(Use Preferred Angles)

선택한 본의 선호 각도 기능을 활성화하는 체크박스입니다.

선호 각도(Preferred Angles)

체인이 진행되는 동안 각 축의 본 회전 방식을 지정합니다.

세팅

반복작업(Iterations)

이펙터가 원하는 목표 위치로 집합할 때까지 이 값을 올립니다. 반복작업은 솔버의 CPU 비용을 높이므로 이 값은 최대한 낮게 유지합니다. 강성, 높은 질량 배수(Mass Multiplier) 및 회전 제한(Rotation Limits) 사용은 모두 수렴 속도에 영향을 주며, 더 많은 반복작업을 필요하게 합니다.

질량 배수(Mass Multiplier)

본이 회전과 이동에 저항하는 정도에 영향을 미치는 글로벌 값입니다. 보통 값은 0.0~5.0입니다. 0.0으로 설정하면 아주 느슨해지고, 5.0으로 설정하면 아주 뻣뻣해집니다. 질량 배수 값을 높이면 집합을 위해 반복작업이 더 필요합니다.

스트레치 허용(Allow Stretch)

이 기능을 활성화하면 IK 체인 주변의 본이 이동하여 이펙터에 도달합니다. 강성 값이 이 결과에 영향을 줍니다.

루트 고정(Pin Root)

이 기능을 활성화하면 루트 본의 이동이 원래 포즈로 고정됩니다. 회전은 계속 영향을 받습니다.

디버그(Debug)

스케일 드로(Draw Scale)

디버그 라인의 크기를 제어하는 배수입니다.

디버그 드로(Draw Debug)

이 기능을 활성화하면 해당 FBIK 노드의 IK 체인을 따라 영향을 받는 모든 본이 표시됩니다.

태그