Interactive Animation & Simulation
캐릭터의 관절 운동(Kinematics)부터 유체와 입자의 고난도 시뮬레이션까지, 가상 세계의 생동감을 부여하는 수리적 애니메이션 기법을 다룹니다.
Article
M
Me
hyunyoun's Blog
human-computer-interaction-graphicshuman-computer-interactiongraphicsinteractive-animationsimulationhcigame-enginesphysics-simulation9 min read
1. Overview
상호작용 애니메이션 및 시뮬레이션(Interactive Animation & Simulation, IAS)은 영화나 유튜브처럼 이미 만들어진 프레임을 재생하는 것이 아니라, 사용자의 실시간 입력과 가상 세계의 환경 제약(중력, 바람, 장애물)에 맞춰 매 프레임마다 형태와 궤적을 수리적으로 계산하여 그려내는 '실시간 생동감 공학'입니다.
학습자는 손끝 좌표에 맞춰 어깨와 팔꿈치의 관절 각도를 역산해 내는 **역기구학(Inverse Kinematics)**의 뼈대 물리를 배우고, 무수히 많은 점들이 중력과 탄성에 의해 움직이는 **파티클 시스템(Particle Systems)**을 구현합니다. 나아가 불, 연기, 물 같은 비정형 매질을 수학적 격자 모델로 모사하는 유체 시뮬레이션과, 가상 세계 안에서 장애물을 스스로 피하며 목적지를 찾아가는 **내비게이션 AI(Pathfinding)**의 수리적 역학을 익힙니다. 이를 통해 예측 불가능한 변수 앞에서도 자연스럽게 반응하는 최고 수준의 동적 가상 세계를 직조합니다.
2. Scope & Boundaries
In-Scope
- 캐릭터 리깅과 역기구학 (Kinematics): 포워드 기구학(FK), 인버스 기구학(IK: Inverse Kinematics), 스키닝(Skinning)과 본(Bone) 행렬 변환.
- 파티클 시스템과 강체 물리 (Particles & Physics): 파티클 발생기(Emitter), 수명(Lifetime), 강체(Rigid Body) 충돌 응답 계산(Impulse), 스프링-댐퍼 시스템.
- 유체 및 연체 시뮬레이션 (Fluid & Soft Body): 나비에-스토크스 방정식(Navier-Stokes)의 실시간 근사, 천(Cloth) 시뮬레이션, 볼류메트릭(Volumetric) 효과.
- 군집 지능 및 길찾기 AI (Navigation): A* 알고리즘, 내비게이션 메시(NavMesh), 군집 이동 물리(Boids 알고리즘: Separation, Alignment, Cohesion).
Out-of-Scope
- 프레임 바이 프레임 셀 애니메이션: 사람이 한 장씩 손으로 그리는 디즈니식 전통 2D 애니메이션 기법.
- 거대 언어 모델(LLM) 기반의 NPC 대화 인공지능: 자연어 처리와 스크립트 생성 로직 11-03. LLM & RAG Engineering 영역으로 위임.
Boundaries
- IAS vs. IPM (12-03): IPM(12-03)이 "스마트폰 화면에서 버튼이 튕기는 UI의 스프링 애니메이션"이라는 2D 인터랙션을 다룬다면, IAS는 "3D 몬스터가 내 캐릭터의 머리를 정확히 타격하기 위해 관절을 어떻게 꺾고 다가올 것인가"를 다루는 3D 공간 상호작용의 심화 역학입니다.
3. Counterexample
- 키프레임 애니메이션의 한계 (Baking Fallacy): 캐릭터가 계단을 오르는 모션을 디자이너가 깎은 '걷기 애니메이션 파일(Animation Clip)'로 고정해버리는 짓. 평지에서는 잘 걷지만, 계단의 높이가 달라지거나 경사면에 서면 캐릭터의 발이 땅을 파고들거나 허공에 붕 뜨게 됩니다. 진정한 시뮬레이션은 발이 닿는 바닥의 높이를 실시간으로 충돌 계산(Raycast)한 뒤, **역기구학(IK)**을 통해 무릎과 골반의 각도를 동적으로 구부려 발바닥을 무조건 땅에 밀착시키는 프로시저럴(Procedural) 역학을 뜻합니다.
- A 그리드 경로 탐색의 남용 (Grid Pathfinding Fallacy)**: 3D 게임 월드에서 몬스터가 길을 찾게 하려고 맵 전체를 바둑판(Grid)으로 잘게 쪼개고 A 알고리즘을 돌리는 비효율. 맵이 커지면 메모리가 터지고 대각선 이동이 매우 부자연스럽게 지그재그로 꺾입니다. 현대 3D 환경에서는 걸어갈 수 있는 평면들의 다각형 집합인 **내비게이션 메시(NavMesh)**를 굽고, 폴리곤 사이의 최단 거리를 부드러운 곡선으로 잇는 진보된 내비게이션 AI 거버넌스를 설계해야 합니다.
4. Prerequisites
- 선형 대수와 벡터 (Basic): 3D 뼈대(Bone)를 회전시키고 부모-자식 행렬을 곱하려면 변환 행렬(Transformation Matrix)을 마스터해야 합니다. (01. MAC)
- 최단 경로 알고리즘 (Recommended): 캐릭터 길찾기 AI의 핵심인 그래프 이론과 휴리스틱 탐색 알고리즘(A*, 다익스트라)을 알아야 합니다. (04. CDS)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 전방/역기구학과 프로시저럴 애니메이션 (FK & IK)
- Why to Learn: 지형의 높낮이나 타겟의 위치가 매번 달라지는 상호작용 환경에서, 미리 만들어진 애니메이션 파일에 의존하지 않고 캐릭터의 관절을 실시간으로 수리적으로 꺾기 위해서입니다.
- What to Learn:
- Concepts: 전방 기구학(Forward Kinematics), 역기구학(Inverse Kinematics: IK).
- Skills: 스켈레탈 메쉬(Skeletal Mesh), 리깅(Rigging), IK 솔버(CCD-IK, FABRIK), 절차적 애니메이션(Procedural Animation).
- Tools: Unity Animation Rigging, Unreal Control Rig.
- Trade-offs: 어깨 각도를 돌리면 손가락까지 한 번에 따라 움직이는 FK의 단순한 연산 vs 목표물(문고리)에 손을 맞추면 팔꿈치와 어깨 각도가 수학 방정식을 통해 역산되는 IK의 엄청난 연산 부하와 유연성.
- How to Learn:
- 1단계: 벽에 손을 짚는 모션을 만들 때, 손(End Effector)의 타겟 위치를 고정하고 Jacobian 미분 행렬이나 FABRIK 알고리즘을 통해 팔꿈치 각도를 반복적으로 찾아 들어가는 수학적 수렴 과정을 추적합니다.
- 2단계: 캐릭터가 총을 들고 적을 조준할 때, 상체의 척추 뼈(Spine)를 조준점(Crosshair) 방향으로 살짝씩 회전시켜 상반신 전체가 목표를 쫓아가는 절차적 조준(Aim IK) 로직을 짜봅니다.
- Implement: 2D 공간에서 두 개의 관절(어깨, 팔꿈치)로 이루어진 로봇 팔이 주어질 때, 마우스 커서의 좌표를 향해 팔을 뻗도록 역기구학(IK) 수학 공식을 푼 삼각함수 스크립트 작성.
Recommended
Core Topic 02: 파티클 시스템과 연체 물리 (Particles & Soft Body)
- Why to Learn: 캐릭터 같은 단단한 물체(Rigid)가 아니라, 눈, 비, 폭발, 연기처럼 형태가 없는 물리적 에너지의 흩어짐을 렌더링하기 위함입니다.
- What to Learn:
- Concepts: 파티클 라이프사이클(Emit, Update, Die), 강체(Rigid Body) vs 연체(Soft Body).
- Skills: 중력과 마찰력 적분 계수 조작, 빌보드 매핑(Billboard Mapping), 스프링-질량-댐퍼(Spring-Mass-Damper) 물리 모델.
- Tools: Unreal Niagara, Unity VFX Graph.
- Trade-offs: 10만 개의 파티클을 모두 CPU 루프에서 갱신하느라 화면이 정지되는 전통적 구조 vs 파티클 위치 계산 공식을 몽땅 그래픽 카드(Compute Shader)로 넘겨 1,000만 개를 띄워버리는 GPU 가속의 압도적 물량.
- How to Learn:
- 1단계: 눈이 내리는 효과를 짜기 위해, 하늘에서 좌표를 생성하고 매 프레임마다 (등가속도 운동) 공식을 적용하여 바닥에 닿으면(수명 끝) 객체를 소멸시키는 파티클 이미터 로직을 만듭니다.
- 2단계: 천(망토)을 시뮬레이션하기 위해, 수백 개의 점을 질량(Mass)으로 취급하고 점과 점 사이를 보이지 않는 고무줄(Spring)로 연결하여, 바람이 불면 고무줄이 늘어났다 줄어드는 훅의 법칙(Hooke's Law)을 적용합니다.
- Implement: 마우스 클릭 지점에서 수백 개의 점이 폭발하듯 튀어나가며 물리 중력의 영향을 받아 포물선을 그리고, 바닥(Y=0)에 닿으면 통통 튀어 오르는 반발 계수(Bounciness) 파티클 시스템 시뮬레이션 코드.
Practical
Core Topic 03: 내비게이션 메시와 자율 경로 탐색 (NavMesh & Pathfinding)
- Why to Learn: 몬스터가 벽에 머리를 박고 끝없이 제자리걸음을 하는 멍청한 인공지능을 부수고, 복잡한 미로와 계단을 뚫고 플레이어를 추적하는 지능을 부여하기 위해서입니다.
- What to Learn:
- Concepts: 그래프 기반 길찾기, 휴리스틱(Heuristic).
- Skills: 내비게이션 메시(NavMesh: Navigation Mesh), A* (A-Star) 알고리즘, 경로 스무딩(Path Smoothing), 로컬 회피(Local Avoidance).
- Tools: NavMesh Agent (Unity/Unreal).
- Trade-offs: 정해진 길로만 가는 안전한 사전 베이킹(Baking) NavMesh 방식 vs 다리가 무너지거나 장애물이 실시간으로 생겼을 때 NavMesh를 런타임에 깎아내야 하는 엄청난 연산 부하(Dynamic NavMesh).
- How to Learn:
- 1단계: 거대한 3D 지형에서 걸어갈 수 있는 바닥만 추출하여 수백 개의 볼록 다각형(Convex Polygon)으로 이어 붙인 뒤, 이 다각형들을 그래프 노드로 취급하여 최단 거리를 찾는 수학적 최적화를 해부합니다.
- 2단계: 100명의 적이 A 지점에서 B 지점으로 갈 때, 서로 부딪히지 않도록 서로를 반발하는 힘(Repulsion Force)을 적용하는 로컬 회피(RVO/ORCA 알고리즘) 동역학을 스케치합니다.
- Implement: 장애물이 배치된 2D 그리드에서 출발점과 도착점을 찍으면, A* 알고리즘을 이용해 벽을 우회하는 최단 경로 셀(Cell)들의 목록을 찾아 반환하는 파이썬 알고리즘.
Advanced
Core Topic 04: 군집 행동과 유체 시뮬레이션 (Boids & Fluid Dynamics)
- Why to Learn: 중앙 통제 장치 없이 1,000마리의 새 떼가 일사불란하게 무리를 지어 날아가거나, 물이 쏟아져 계곡을 채우는 압도적인 대자연의 스펙터클을 수학으로 복제하기 위함입니다.
- What to Learn:
- Concepts: 창발적 지능(Emergent Behavior), 전산유체역학(CFD) 기초.
- Skills: Boids 플로킹 알고리즘(응집 Cohesion, 정렬 Alignment, 분리 Separation), 나비에-스토크스 방정식의 격자(Grid)/입자(SPH) 근사.
- Tools: Compute Shader 기반 물리 처리.
- Trade-offs: 현실의 물 흐름을 완벽히 계산하는 방정식(수십 시간 소요) vs 물리적 정확성은 버리고 입자들의 밀도와 압력만 대충 계산해 실시간(16ms)으로 그럴싸하게 속이는 렌더링 꼼수.
- How to Learn:
- 1단계: 크레이그 레이놀즈(Craig Reynolds)의 Boids 원리에 따라, 주변 동료와 거리를 벌리고(분리), 같은 방향을 보고(정렬), 무리 중앙으로 뭉치는(응집) 세 가지 단순한 벡터 합산만으로 웅장한 새 떼의 비행이 '창발(Emergence)'하는 기적을 시뮬레이션합니다.
- 2단계: GPU 메모리에 거대한 3차원 배열(격자)을 만들고, 인접한 셀 사이로 속도(Velocity)와 밀도(Density)가 확산(Diffusion)되고 이류(Advection)되는 유체 흐름의 병렬 계산 파이프라인을 뜯어봅니다.
- Implement: 2D 공간에 500개의 파티클을 띄우고, Cohesion, Alignment, Separation 세 가지 힘 벡터의 가중치를 계산하여 뭉쳐 다니는 물고기 떼(Flocking)의 AI 물리 모형을 p5.js 또는 Python 기반으로 코딩.
7. Terminology
8. References
Primary References
- [CS2023: Graphics / Animation] — 골격 애니메이션(Skeletal Animation), 정점 스키닝(Skinning) 및 운동학 수식.
- [SIGGRAPH Proceedings] — 유체 시뮬레이션(Fluid Dynamics), 파티클 역학 및 절차적 애니메이션 최신 논문.
Secondary References
- [Physically Based Animation] — 강체 역학, 충돌 반응 계수(Restitution) 및 마찰력 시뮬레이션.
- [GDC: Animation Systems] — 자연스러운 모션 블렌딩, 모션 매칭(Motion Matching) 구조 및 상태 기계 튜닝.
Industry References
- [Unreal Engine Animation Blueprint] — IK 리깅, 블렌드 스페이스, 애니메이션 스테이트 머신(FSM) 파이프라인.
- [Unity Visual Effect Graph] — GPU 기반 대규모 파티클 시스템 컴퓨트 셰이더 시뮬레이션.
9. Final Checklist
Primary Checklist
- 캐릭터의 뼈대(Bone) 구조가 계층적 씬 그래프를 이루며, 순운동학(FK) 변환 행렬을 통해 부모 관절의 회전이 자식 관절에 정확히 누적되는가?
- 애니메이션 상태 기계(State Machine) 전환 시, 애니메이션이 딱딱하게 끊기지 않도록 보간(Interpolation) 기반의 블렌드 트리를 거쳐 전이되는가?
Secondary Checklist
- 캐릭터의 발이 울퉁불퉁한 계단이나 경사로를 밟을 때 바닥을 뚫고 들어가지 않도록, 역운동학(IK)을 적용하여 발목 및 무릎 관절 각도를 보정하는가?
- 수만 개의 파티클(눈, 비) 시뮬레이션 시 CPU 병목을 막기 위해 궤적 및 수명 연산을 GPU 컴퓨트 셰이더로 이관(GPU Instancing)시켰는가?
Industry Checklist
- 강체 물리(Rigid Body) 시뮬레이션 시 무게 중심(Center of Mass)과 반발 계수(Bounciness)가 실제 물리 법칙에 기반하여 안정적으로 계산되는가?
- 정점 스키닝(Vertex Skinning) 연산 시, 관절이 심하게 꺾이는 부분에서 메쉬가 찌그러지는 '캔디 래퍼(Candy Wrapper)' 현상을 이중 쿼터니언(Dual Quaternion) 등으로 방어했는가?