LYSC STUDIO

LIST
Cover

주제 18: 리깅(Rigging)과 애니메이션 최적화: 모바일 뼈대(Bone) 수 줄이기 (3D Art & Tech)

·Game Design

모바일 플랫폼에서 3D 게임을 개발할 때 성능 최적화는 생존과 직결된 문제입니다. 폴리곤 수(Polycount)와 드로우 콜(Draw Call)을 줄이는 것은 널리 알려져 있지만, 많은 아트팀과 개발팀이 간과하는 것이 바로 '애니메이션 스키닝(Skinni

리깅(Rigging)과 애니메이션 최적화: 모바일 뼈대(Bone) 수 줄이기

1. 서론: 왜 모바일에서 뼈대(Bone) 수가 문제인가?

모바일 플랫폼에서 3D 게임을 개발할 때 성능 최적화는 생존과 직결된 문제입니다. 폴리곤 수(Polycount)와 드로우 콜(Draw Call)을 줄이는 것은 널리 알려져 있지만, 많은 아트팀과 개발팀이 간과하는 것이 바로 '애니메이션 스키닝(Skinning) 비용'입니다. 3D 캐릭터가 움직일 때, 캐릭터의 피부(Mesh)를 이루는 각 버텍스(Vertex)는 자신에게 할당된 뼈대(Bone)의 움직임에 따라 매 프레임 위치를 다시 계산해야 합니다. 모바일 기기의 CPU와 GPU는 이러한 연산에 매우 취약하며, 뼈대의 수가 늘어날수록, 그리고 하나의 버텍스에 영향을 미치는 뼈대(Influence)가 많을수록 프레임 드랍과 발열이 기하급수적으로 증가합니다.

통상적으로 모바일 게임에서는 캐릭터당 본(Bone) 개수를 30~50개 이하로 제한하는 것을 강력히 권장합니다. AAA급 PC/콘솔 게임이 캐릭터 하나에 200~300개의 본을 사용하는 것과는 확연히 다른 접근이 필요합니다.

2. 모바일 리깅 다이어트: 뼈대 줄이기 전략

퀄리티 저하를 최소화하면서 뼈대를 과감하게 쳐내는 실무적인 리깅 최적화 전략을 소개합니다.

2.1. 손가락 리깅의 단순화 (Mitten Hands)

가장 먼저 뼈대를 줄일 수 있는 타겟은 '손가락'입니다. 인간의 손은 5개의 손가락에 각각 3개씩의 마디를 가지고 있어, 양손만 해도 30개가 넘는 본이 필요합니다. 모바일 화면에서 캐릭터의 손가락 움직임이 크게 부각되지 않는다면, 벙어리장갑(Mitten) 스타일로 리깅을 묶는 것이 효율적입니다. 엄지손가락용 본 1~2개와 나머지 네 손가락을 통째로 제어하는 본 1~2개로 압축하면, 손에서만 20개 이상의 뼈대를 절약할 수 있습니다.

2.2. 페이셜 리깅(Facial Rigging)의 제거 또는 대체

모바일에서는 복잡한 페이셜 본(눈썹, 입술, 볼 등을 움직이는 뼈대)을 사용하는 것은 엄청난 사치입니다. 컷씬(Cut-scene)이나 클로즈업이 거의 없는 쿼터뷰(Quarter-view) RPG라면 페이셜 본을 아예 삭제하는 것이 맞습니다. 만약 표정 변화가 반드시 필요하다면, 본을 이용한 스키닝 대신 블렌드 쉐이프(Blend Shape / Morph Target)를 사용하거나, 단순히 얼굴 텍스처를 교체하는 UV 애니메이션 방식을 고려해야 합니다.

2.3. 보조 뼈대(Twist Bones, Jiggle Bones)의 통폐합

관절이 구부러질 때 메시가 찌그러지는 현상(Candy wrapper effect)을 막기 위해 팔뚝이나 허벅지에 추가하는 트위스트 본(Twist Bone), 또는 옷자락이나 머리카락이 찰랑거리게 만드는 지글 본(Jiggle Bone) 역시 모바일에서는 사치입니다. 이러한 디테일은 웨이트 페인팅(Weight Painting)을 정교하게 다듬어 최소화하거나, 유니티의 Dynamic Bone / Magica Cloth 같은 물리 시뮬레이션 에셋을 사용하여 특정 조건에서만 연산되도록 우회하는 것이 좋습니다.

3. 스키닝(Skinning) 웨이트 제한과 GPU 연산

뼈대의 절대적인 개수만큼 중요한 것이 바로 버텍스당 영향도(Vertex Influence) 제한입니다. 하나의 버텍스가 동시에 영향을 받는 본의 개수를 제한해야 합니다. PC 게임에서는 4개(4-bones)를 주로 사용하지만, 모바일에서는 성능을 위해 최대 2개(2-bones), 혹은 1개로 제한(Rigid Skinning)하는 것이 일반적입니다.

유니티(Unity) 프로젝트 설정의 `Quality` 세팅에서 Skin Weights 옵션을 `2 Bones`로 강제 설정하여 렌더링 파이프라인에서의 부하를 획기적으로 줄일 수 있습니다. 또한, 모바일 칩셋이 발전함에 따라 CPU에서 수행하던 스키닝 연산을 GPU로 넘기는 GPU Skinning (Compute Shader 활용) 기법을 적극 도입하면 군중 씬(Crowd Scene)에서 엄청난 퍼포먼스 향상을 기대할 수 있습니다.

4. LOD (Level of Detail)와 애니메이션 컬링 (Animation Culling)

카메라에서 멀리 떨어진 캐릭터까지 풀 뼈대로 애니메이션을 연산하는 것은 리소스 낭비입니다. 메시에만 LOD를 적용하는 것이 아니라, 스켈레톤(Skeleton)에도 LOD를 적용해야 합니다. 근거리에서는 50개의 본을 쓰고, 원거리에서는 손가락, 발가락, 장식물 본을 제외한 15개의 핵심 본(척추, 팔다리)만 남긴 단순화된 리깅을 스왑(Swap)합니다.

또한, 카메라 시야(Frustum) 바깥에 있는 캐릭터의 애니메이션 업데이트를 완전히 중단하는 Animator Culling Mode (`Cull Update Transforms` 또는 `Cull Completely`)를 반드시 활성화해야 모바일 기기의 발열을 억제할 수 있습니다.

5. 결론: 기획, 아트, 프로그래밍의 타협점

리깅과 애니메이션 최적화는 단순히 테크니컬 아티스트(TA)나 프로그래머 혼자만의 과제가 아닙니다. 기획 단계에서부터 "모바일 화면에서 이 캐릭터의 손가락 마디 움직임이 게임플레이에 필수적인가?"를 고민해야 하며, 아트팀은 한정된 뼈대 안에서 가장 자연스러운 실루엣을 뽑아내는 웨이트 페인팅 기술을 숙련해야 합니다. 제약 속에서 창의성을 발휘하여 최적의 퍼포먼스와 비주얼 퀄리티를 달성하는 것이 모바일 게임 개발의 진정한 묘미입니다.

Core Loop Logic Viewer
ACTION
REWARD
UPGRADE
Awaiting Input...
이 포스트가 인디 게임 개발자 분들의 프로젝트 최적화 및 기획에 큰 도움이 되길 바랍니다.