게임이나 영화 속 캐릭터들이 참 자연스럽게 움직입니다.
이런 움직임은 스키닝 애니메이션 방식 덕분이죠.
스켈레탈 애니메이션(Skeletal Animation)이라고도 부릅니다.
겉으로 보이는 모델 안에 보이지 않는 뼈대를 만드는 겁니다.
캐릭터가 살아있는 것처럼 보이게 만드는 기술입니다.
프로그래머로서 이 원리를 알면 구현이 훨씬 쉬워집니다.
처음에는 개념이 낯설 수 있지만 천천히 알아보겠습니다.
뼈대란 무엇일까요
여기서 말하는 스켈레톤(Skeleton)은 진짜 뼈가 아닙니다.
관절이 어디서 꺾이고 회전하는지 정의하는 것이죠.
팔꿈치나 무릎 같은 관절들의 연결이라고 보면 됩니다.
이런 관절들이 트리 형태로 이어져 있습니다.

캐릭터가 팔을 든다고 가정해 보겠습니다.
어깨 관절이 움직이면 연결된 팔과 손이 따라오죠.
자연스럽게 이어지는 이 움직임이 바로 기본 원리입니다.
어디가 어떻게 꺾이는지를 정의해 둔 셈입니다.
피부는 어떻게 따라올까요
캐릭터 겉모습을 이루는 것을 메시(Mesh)라고 합니다.
이 메시의 점들은 한 관절에만 붙지 않습니다.
여러 관절에 가중치(Weight)로 연결되어 있죠.
이 부분이 이해하기 조금 까다로울 수 있습니다.
팔꿈치 근처 피부를 예로 들어보겠습니다.
위팔과 아래팔 관절의 영향을 동시에 받습니다.
그래서 팔을 구부릴 때 피부가 뚝 끊기지 않죠.
주변이 함께 당겨지며 부드럽게 모양이 바뀝니다.
이것을 스킨 변형(Skin Deformation)이라고 부릅니다.
덕분에 캐릭터가 딱딱한 인형 같지 않은 겁니다.
살과 근육을 가진 생명체처럼 느껴지게 되죠.
관절과 피부 사이의 관계를 잘 이해해야 합니다.
데이터 효율성을 챙기다
이 방식은 효율성 면에서도 아주 훌륭합니다.
캐릭터의 모든 점 위치를 저장할 필요가 없으니까요.
관절이 언제 어디로 가는지만 기록하면 됩니다.
데이터양이 확연히 줄어드는 장점이 있습니다.
메모리 사용량과 연산 부담도 덜어줍니다.
실시간으로 계속 움직여야 하는 게임에 딱 맞죠.
걷기나 달리기 같은 동작은 대부분 이 방식입니다.
반복되는 전신 동작을 처리하기에 아주 유리합니다.
실제 게임에서의 활용
유명한 게임인 다크 소울(Dark Souls)을 떠올려 보세요.
무거운 갑옷을 입은 캐릭터가 검을 휘두릅니다.
팔과 다리, 몸통이 아주 자연스럽게 연결되죠.
이 또한 스켈레탈 애니메이션 기술을 쓴 사례입니다.
플레이어는 이 움직임을 보며 몰입감을 느낍니다.
관절의 움직임에 따라 전신이 유기적으로 반응하니까요.
만약 점 단위로 움직였다면 이런 느낌은 어렵습니다.
게임 속 자연스러움은 이런 기술이 뒷받침합니다.
완벽하지는 않습니다
물론 이 방식이 모든 상황에 정답은 아닙니다.
얼굴처럼 근육이 복잡한 곳은 표현이 어렵죠.
미세한 표정 변화를 담기엔 한계가 있습니다.
그래서 얼굴은 다른 기법을 섞어서 쓰기도 합니다.
하지만 전신 움직임에서는 매우 탁월합니다.
자연스러움과 성능이라는 두 마리 토끼를 잡았으니까요.
메모리 효율까지 챙길 수 있어 아주 실용적입니다.
현대 게임에서는 뺄 수 없는 기본 골격이 되었습니다.
움직임의 기준을 잡다
캐릭터를 뼈 중심으로 움직이는 형태로 이해해야 합니다.
관절이 먼저 가고 피부가 부드럽게 반응하는 식이죠.
그래야 플레이어가 동작을 믿고 받아들입니다.
이것이 실시간 캐릭터 표현의 든든한 기반입니다.