역운동학 (IK)은 캐릭터가 환경과 현실적으로 효과적으로 움직이고 상호작용하도록 만드는 컴퓨터 애니메이션의 일반적인 기술입니다. 캐릭터의 현실적인 움직임을 만드는 과정에서는 종종 여러 관절의 많은 반복과 미세 조정이 필요합니다. IK를 사용하면 단일 객체를 포즈를 잡거나 조정하여 여러 캐릭터 부분을 포즈를 잡고 애니메이션을 만들 수 있습니다.
이 애니메이션 기법은 다음과 같은 예시에 대한 솔루션을 제공할 수 있습니다:
IKControl
IKControl을 사용하여 애니메이션 편집기 외부에서 캐릭터 리그에 IK를 절차적으로 추가할 수 있습니다. 스튜디오는 R15, Rthro 및 사용자 정의 가져온 스킨 캐릭터와 같은 모든 캐릭터에 IK를 프로그래밍방식으로 적용하여 게임에서 현실적인 움직임 및 상호작용을 생성할 수 있도록 허용합니다.
IKControl을 추가할 때는 필수 속성을 올바르게 설정하여 예기치 않거나 부자연스러운 애니메이션 결과를 피해야 합니다. 모든 애니메이션과 마찬가지로 IKControls를 테스트하여 원하는 동작을 얻었는지 확인하세요.
필수 속성
캐릭터의 Humanoid 또는 AnimationController에 IKControl을 추가할 때 IK를 활성화하려면 다음 필수 속성을 설정해야 합니다:
| 속성 | 설명 |
|---|---|
| Type | IK 제어의 동작 유형을 지정합니다. 동작 옵션 목록은 Enum.IKControlType를 참조하세요. 일반적인 동작 유형은 위치 또는 변환입니다. |
| EndEffector | 목표인 Target로 추적하는 캐릭터 리그의 BasePart 또는 Bone입니다. 예를 들어, LeftHand 본을 EndEffector로 설정하여 Target으로 설정된 도어 핸들 객체에 도달할 수 있습니다. |
| Target | EndEffector가 도달하거나 가리키는 대상입니다. Target은 월드 위치가 있는 모든 객체가 될 수 있습니다. |
| ChainRoot | IKControl이 영향을 미치는 BaseParts 또는 Bones의 체인을 정의합니다. ChainRoot와 EndEffector 간에 연결된 모든 부품은 정의된 동작 유형에 따라 IKControl의 영향을 받습니다. 예를 들어, 캐릭터의 LeftHand가 Target으로 설정된 경우, ChainRoot를 LeftUpperArm로 설정하여 전체 왼쪽 팔에 IK를 적용할 수 있습니다. 팔꿈치 아래의 부품에만 IK를 적용하려면 ChainRoot를 LeftLowerArm로 설정하세요. |
IKControls 테스트
코드를 통해 IKControl을 추가 및 수정할 수 있으며, Explorer를 통해 직접 추가할 수도 있습니다. Play 테스트 중에 IKControl을 추가하고 수정하여 다양한 속성이 캐릭터의 움직임에 미치는 영향을 신속하게 확인할 수 있습니다.
Attachment을 목표로 사용하여 IKControl을 빠르게 테스트하려면:
Studio의 메자닌에서 플레이테스트 시작.
Explorer에서 Workspace → 사용자 모델로 이동합니다. 이 Model 인스턴스는 현재 Roblox 계정의 이름으로 되어 있습니다.
캐릭터 모델의 HumanoidRootPart 옆에 있는 ⊕ 아이콘을 클릭하고 Attachment를 추가합니다.

Attachment를 선택하고 이동 도구를 사용하여 뷰포트에서 캐릭터 앞에 객체를 배치합니다.

Explorer 창에서 캐릭터의 Humanoid 옆의 ⊕ 아이콘을 클릭하고 IKControl을 추가합니다.

IKControl을 선택하고 Properties 창에서 다음 속성 값을 설정합니다:
- Type: 드롭다운에서 Transform을 선택합니다.
- Target: Explorer에서 새로 생성된 Attachment 객체를 선택합니다.

IKControl 속성 
Explorer - 캐릭터 모델 이제 캐릭터의 왼쪽 팔이 목표 Attachment를 향해야 합니다. Attachment를 이동하거나 IKControl 속성을 편집하여 다양한 결과를 실험할 수 있습니다.
제약 추가
Constraints를 사용하여 목표를 향해 팔 관절이 어떻게 움직일 수 있는지를 제한할 수 있습니다. 제약 조건은 팔꿈치 및 무릎과 같은 관절이 자연스럽게 굽힐 수 있도록 보장하거나 기계 구조물이 특정 방향으로 회전하도록 만들 수 있습니다.


IKControl을 사용하여 캐릭터에 제약을 추가하려면 IKControl과 제약 조건이 다음 조건을 충족해야 합니다:
- 제약 조건과 IKControl은 동일한 부모 Model을 공유해야 합니다.
다음 지침에서는 캐릭터의 팔꿈치 회전을 제한하기 위해 HingeConstraint를 추가하는 절차와 손목에 BallSocketConstraint를 추가하여 회전 각도를 제한하는 방법을 설명합니다.
팔꿈치
Roblox R15 캐릭터는 팔꿈치 제약을 적용하는 데 사용할 수 있는 관절에 이미 어태치먼트를 포함하고 있습니다. 팔꿈치의 경우 LeftUpperArm과 LeftLowerArm 모두 LeftElbowRigAttachment를 포함합니다. 제약 조건을 추가하는 것 외에도 각 부품의 LeftElbowRigAttachment에 추가 하위 어태치먼트를 추가하여 팔꿈치가 회전할 수 있는 축을 지정해야 합니다.
HingeConstraint 및 자식 어태치먼트를 추가하려면:
Explorer에서 모델의 LeftLowerArm을 찾고 ⊕ 버튼을 클릭합니다.
이름이 LeftElbowConstraint인 HingeConstraint를 추가합니다.
Explorer에서 LeftUpperArm.LeftElbowRigAttachment로 이동하여 어태치먼트를 추가합니다:
⊕ 버튼을 클릭하여 이름이 LeftElbowConstraintAttachment0인 Attachment를 추가합니다.
뷰포트에서 어태치먼트를 선택하고 Rotate tool을 사용하여 어태치먼트를 회전하여 노란색 PrimaryAxis가 팔꿈치의 예상 회전축이 되도록 합니다.

LeftElbowConstraint.Attachment0 속성을 이 새로운 어태치먼트로 설정합니다.
Explorer에서 모델의 LeftLowerArm.LeftElbowRigAttachment에 이동하여 어태치먼트를 추가합니다:
- ⊕ 버튼을 클릭하고 이름이 LeftElbowConstraintAttachment1인 Attachment를 추가합니다.
- LeftUpperArm.LeftElbowConstraint.Attachment1 속성을 이 새로운 어태치먼트로 설정합니다.
- LeftElbowConstraintAttachment0.CFrameOrientation 속성을 복사하여 LeftElbowConstraint.Attachment1.CFrameOrientation 값으로 붙여넣습니다.

팔꿈치가 힌지 축을 기준으로만 회전하는지 확인하기 위해 IKControl을 테스트하세요:
손목
팔꿈치 제약이 있어도 IKControl은 여전히 손목에서 비현실적인 포즈를 생성할 수 있습니다.

손목의 회전을 제한하기 위해 BallSocketConstraint를 추가하면 이 문제를 개선할 수 있습니다. 이는 팔꿈치에 HingeConstraint를 추가하는 과정과 유사하지만, 이 제약 조건의 LimitsEnabled 속성을 사용하여 손목의 운동 범위를 더 제어할 수 있습니다.
손목에 대한 BallSocketConstraint를 추가하려면:
- Explorer에서 모델의 LeftHand를 찾고 ⊕ 버튼을 클릭합니다.
- 이름이 LeftWristConstraint인 BallSocketConstraint를 추가합니다.
- 모델의 LeftLowerArm.LeftWristRigAttachment를 찾아 어태치먼트를 추가합니다:
- ⊕ 버튼을 클릭하고 이름이 LeftWristConstraintAttachment0인 Attachment를 추가합니다.
- 뷰포트에서 어태치먼트를 선택하고 Rotate tool을 사용하여 어태치먼트를 회전하여 노란색 PrimaryAxis가 모델의 손끝 দিকে 향하도록 합니다.

- LeftWristConstraint.Attachment0 속성을 새 LeftWristConstraintAttachment0으로 설정합니다.
- 모델의 LeftHand.LeftWristRigAttachment를 찾아 어태치먼트를 추가합니다:
- ⊕ 버튼을 클릭하고 이름이 LeftWristConstraintAttachment1인 Attachment를 추가합니다.
- LeftWristConstraintAttachment0.CFrameOrientation 속성을 복사하여 LeftWristConstraintAttachment1.CFrameOrientation 속성으로 붙여넣습니다.
- LeftWristConstraint.Attachment1 속성을 이 새로운 LeftWristConstraintAttachment1로 설정합니다.
- Explorer에서 LeftWristConstraint를 선택합니다.
- Properties 창에서 다음 설정을 합니다:
- LimitsEnabled를 활성화합니다.
- UpperAngle을 80으로 설정합니다. 이는 제약 조건의 축이 회전할 수 있는 양을 제어하며, 80도는 손목이 구부러질 수 있는 대략적인 각도입니다.
- 캐릭터에 따라 원뿔이 가리키는 방향을 조정하고 싶을 수 있습니다. 제약 조건의 Attachment0을 회전 도구를 사용하여 수정할 수 있습니다.
LeftWristConstraint를 선택할 때 손목의 운동 범위를 시각화하는 녹색 원뿔이 표시됩니다.

제약 조건이 설정되면 손이 캐릭터 앞 아래로 향하도록 하여 IKControl을 테스트 할 수 있으며, 손목이 더 현실적으로 회전하고 구부러져야 합니다.