유니티 애니메이션 제작할 때 없어선 안 될 Final Ik 소개 및 사용법에 대해

Final IK란?

Final IK는 Unity 엔진에서 사용할 수 있는 가장 완벽한 역운동학(Inverse Kinematics) 솔루션으로 널리 인정받고 있는 에셋입니다. 복잡한 IK 설정을 자동화해 주어 개발 속도를 매우 향상시켜주며, 'Baker'같은 기능을 통해 IK 움직임을 새로운 애니메이션 클립으로 생성해 주는 기능도 포함되어 있어, 본인이 직접 애니메이션 클립을 제작할 수 있게 되어 디자이너에게 사랑받을 수 있습니다. 또한 VRIK과 같은 VR에 안성맞춤인 컴포넌트가 존재하여 VR을 개발하는 개발자라면 반드시 필수로 가지고 있을 만큼 유용한 에셋입니다.

 

 

IK란?

역운동학(Inverse Kinematics)은 캐릭터의 애니메이션을 더 디테일하게 만들 때 사용되는 기술입니다. 본질적으로 손이나 발이 끝나야 하는 위치를 기준으로 캐릭터 관절(예: 팔꿈치 및 무릎)의 위치와 각도를 파악할 때 사용됩니다.

예를 들어 캐릭터가 문 손잡이를 잡아야 하는 경우 IK는 자연스럽게 문 손잡이에 도달하기 위해 팔이 각 관절에서 어떻게 움직이고 구부러져야 하는지 계산해줍니다.

 

Unity IK기술을 이용한 촉수 제작

위 촉수는 뼈가 총 3개 심어져 있으며 블렌더를 이용해서 제작하였다 먼저 Package Management에서 Animation Rigging을 Import해준다 그러면 이제 상단에 Animation Rigging 탭이 생겨날 것이다 아까 만든 촉수를

wlsdn629.tistory.com

 


다양한 사용자 정의

사용자 정의 옵션 일부

 

Final IK에는 다양한 사용자 정의 옵션을 존재합니다. 사용자 정의 옵션을 이용하여 IK가 각 캐릭터에 적용되는 방식을 세밀하게 조정하여 복잡한 작업을 처리할 수 있습니다.

 

지속적인 업데이트 및 사용자 피드백

가장 놀라웠던 점은 Final IK는 8년 전 출시된 에셋임에도 불구하고 지속적인 업데이트를 받아오고 있다는 것입니다.

Final IK는 지속적인 업데이트를 통해 Baker 기능 추가, VRIK에 대한 LOD 레벨, Oculus Quest 하드웨어 테스트 등 상당한 개선을 가져오고 있습니다. 특히 Full Body IK 및 VR IK 등 사용자 피드백을 기반으로 도구를 지속적으로 개선할 계획이라고 합니다.

 


Final IK 주요 기능(컴포넌트)

  1. VRIK(Virtual Reality IK): VR공간에서 사용되는 VR 아바타용으로 맞춤 제작된 컴포넌트입니다. Full Body IK 시스템을 이용하여 가상공간에서 플레이어의 움직임을 그대로 반영하는 게임 캐릭터를 만들어낼 수 있습니다.
  2. Baker: IK 움직임을 애니메이션 클립으로 'Baking'하는 데 사용됩니다. 즉, 동적 IK 움직임을 표준 애니메이션으로 변환할 수 있습니다.
  3. Full Body Biped IK: 두 개의 다리를 가지고 있는 캐릭터에 사용합니다. Biped라는 것은 두 다리 동물을 뜻합니다!
  4. Biped IK: Full Body Biped IK와 유사하지만 더 단순한 작업과 움직임에 더 중점을 둔다고 합니다.
  5. CCD IK(Cyclic Coordinate Descent IK): 팔과 같은 관절 체인의 IK 문제를 해결하는 데 사용되는 컴포넌트입니다. 
  6. 멀티 이펙터 FABRIK: 여러 이펙터(손 및 발과 같은 끝점)를 동시에 처리할 수 있는 FABRIK(Forward And Backward Reaching Inverse Kinematics)의 고급 버전입니다. 예를 들면, 문어의 다리 움직임을 표현하는 데 사용된다고 보시면 됩니다. 

 

위에 나온 모든 기능들을 살펴보는 것은 제가 과로사할 것 같으므로... 몇 가지 유용하게 사용 중에 있는 요소들만 소개해드리고자 합니다!

 

제가 소개해드린 내용은 모두 Final IK 공식 튜토리얼에서 나온 내용을 가지고 제가 Study 내용입니다!

 


Final IK를 하면서 느꼈던 장점들

주요 기능들을 이용하여 프로젝트를 하면서 제가 느꼈던 장점들에 대해 소개해드리고자 합니다.

 

VR 개발자라면 없어선 안 되는 에셋!

VRIK 컴포넌트를 이용

 

위와 같은 IK를 설정하는 데 걸린 시간이 얼만지 예측이 가시나요?

물론 목이 꺾이지 않고 아직 동작이 어색한 부분이 있지만 그래도 만족스럽게 IK를 설정하는데 걸린 시간은 무려 '3분'조차 걸리지 않았다! 입니다.

평소 IK를 설정하는데 생기는 문제점들도 포함하고 임포트 하는 데 걸리는 시간 등 모두 포함했을 때 걸리는 시간은 대략 20분 정도였습니다. 무려 7배의 시간을 아낄 수 있게 된 거죠!

 

IK가 필요한 VR 개발자라면 '반드시' Final IK는 가지고 있으면 좋겠다고 생각이 듭니다!

 

 

Unity VR Arm IK

패키지 매니저에 들어가서 Animation Rigging 패키지를 다운받는다 준비해둔 휴머노이드 모델에다가 Rig Builder를 추가하고 Animation을 삭제해준다 Bone Renderer를 추가해주고 모델의 Root부분부터 맨 아래

wlsdn629.tistory.com

위 예제는 Final IK를 사용하지 않고 사용자가 직접 VR IK를 제작할 때 거치는 과정입니다.

 

VR 개발자의 경우 캐릭터의 IK를 설정하는 경우가 많습니다. 저의 경우 항상 아래와 같은 방식으로 진행해 왔지만, Final IK를 통해 개발속도가 3000배는 빨라졌습니다. 그저 Component를 추가하기만 하면 자동으로 IK 설정이 되니깐요! 아래에서 다시 보여드리겠습니다!

 


디자이너에게 애니메이션을 만들어달라고 요청하지 않고 직접 만들 수 있다!

Baker를 이용한 애니메이션 제작

 

학교 팀프로젝트를 하는데 AI가 누워서 뒹굴거리며 핸드폰 하는 애니메이션이 필요했습니다. 평소라면 디자이너에게 애니메이션을 요청하고 건네받았을 텐데, Final IK를 알게 된 이후부터는 위와 같이 간단한 애니메이션은 직접 제가 Baking 하여 제작하곤 있습니다.

 

서로의 개발 효율성이 높아졌다는 점에서 만족스럽습니다! 물론 디테일한 애니메이션은 '제 기준'에서는 Final IK로 만들기 어려울 것 같습니다 ㅎㅎ..

 


다양한 '동작'을 개발할 때 편하다!

Pause / Pause / Pull 총 3단계로 '동작' 구성 / 천장 / 눈높이 / 바닥

 

AI를 개발할 때 가장 신경 쓰는 부분은 '디테일'입니다. 예를 들어 AI가 특정 오브젝트에 다가갈 때 특정 오브젝트를 가져오는 '동작'이 필요하다고 하면 애니메이션을 이용하든 다른 방법을 이용해서 캐릭터의 몸을 움직여 특정 오브젝트를 가져와야 합니다. IK를 이용하지 않고 특정 오브젝트를 가져오는 애니메이션을 제작하는 것은 굉장히 위험하다고 생각이 드는 게,

오브젝트가 천장에 있을 수도, 바닥에 있을 수도 있는 데 그에 맞게 디자이너가 애니메이션을 제작하는 것은 굉장한 'cost 낭비'라고 생각이 듭니다. 

 

하지만, IK를 이용한다면 오브젝트가 천장에 있든, 바닥에 있든 따로 애니메이션 클립을 제작할 필요 없이 자연스러운 '동작'을 통해 오브젝트를 가져올 수 있습니다. 

 


Final IK 사용방법

사용방법에 대해 설명드리고자 하지만, 사용자 정의 옵션에 대한 자세한 내용을 짚고 넘어가지 않을 생각입니다.

사용자 정의 옵션에 대한 내용은 공식 문서를 통해 배워가시길 바랍니다!

 

Model / Full Body Biped IK

 

먼저 리깅이 되어 있는 캐릭터를 가져옵니다. 그 후 해당 캐릭터에 Animator 컴포넌트를 부착해 준 다음 반드시 'Avatar'를 할당해주셔야 합니다.

 

그다음 Full Body Biped IK 컴포넌트를 붙여줍니다. 제가 가장 많이 사용하고 있는 컴포넌트이기 때문에 해당 컴포넌트에 대한 사용방법을 소개하는 것입니다!

 

Full Body Biped IK 컴포넌트를 부착시키면 우측 사진처럼 뼈대에 자동으로 커다란 구슬들이 배치되는 것을 보실 수 있습니다. 제 모델의 경우 리깅이 잘못되어 빨간색 에러가 생겼습니다. 해결 방법은 공식 문서에 나와 있으니 참고하시면 좋을 것 같습니다.

 

문제 해결 방법을 간단히 설명드리면 팔꿈치 쪽에 생기는 부분은 뒤로 살짝 transform을 옮겨주시면 되고, 무릎 쪽에 생기는 부분은 앞쪽으로 살짝 transform을 옮겨주시면 됩니다. 이때 transform은 해당 뼈를 옮기시면 됩니다.

 

Weight 설정

 

에디터를 실행시키고 사용자 정의 옵션에 부위 별로 Position Weight & Rotation Weight를 높이시면 화면과 같이 파란색 박스가 생겨납니다. 박스를 통해 캐릭터의 움직임을 제어할 수 있습니다.

캐릭터 제어


구매 링크 $

유니티 개발자라면 정말 유용하게 사용할 수 있는 에셋이라고 생각이 듭니다.

저처럼 나중에 사서 후회하지 마시고 빠르게 구매하여 행복한 유니티 개발이 되셨으면 좋겠습니다! 

이상으로 구매링크 첨부하고 마치겠습니다.

 

이 글은 어필리에이트 링크를 포함하고 있습니다. 

위 링크를 클릭하셔서 애셋을 구매하시면 저에게 수수료가 제공됩니다.
링크를 클릭하는 것으로는 수익이 발생하지 않습니다!
감사합니다!