콘텐츠로 바로가기

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 대화 인공지능: 자연어 처리와 스크립트 생성 로직 \rightarrow 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

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Kinematics Physics 손목의 목표 좌표가 정해지면 어깨와 팔꿈치가 몇 도 꺾여야 하는지 역추적(IK)하는 수학 모델을 배웁니다. Industry
2 Particle & Cloth 폭발하는 불꽃이나 바람에 나부끼는 망토를 만들기 위해, 수만 개의 입자와 스프링 방정식(탄성력)을 조작합니다. P1
3 Fluid Simulation 컴퓨터 연산의 끝판왕인 기체와 액체의 흐름(유체 역학)을 실시간으로 흉내 내는 수학적 꼼수(근사)를 익힙니다. P4
4 Navigation & Boids 1,000마리의 좀비 떼가 서로 부딪히지 않으면서(Boids) 나를 향해 달려오는 거대한 인공지능 군집 역학을 짭니다. Industry

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) 수학 공식을 푼 삼각함수 스크립트 작성.

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단계: 눈이 내리는 효과를 짜기 위해, 하늘에서 좌표를 생성하고 매 프레임마다 V=V0+atV = V_0 + at (등가속도 운동) 공식을 적용하여 바닥에 닿으면(수명 끝) 객체를 소멸시키는 파티클 이미터 로직을 만듭니다.
    • 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

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Forward Kinematics (FK) 어깨의 회전값을 부모로 삼아 팔꿈치, 손목의 위치를 순방향 트리를 따라 순차적으로 계산하는 골격 애니메이션 수학입니다. 기본 골격 변환 Scene Graph vs. Inverse Kinematics 손끝만 움직이면 팔 전체가 알아서 따라온다는 착각(IK임) Primary core
Inverse Kinematics (IK) 목표 지점(예: 컵을 잡는 손)의 위치를 역산하여, 그에 맞는 다관절(팔꿈치, 어깨)의 회전 각도를 도출해 내는 역학 알고리즘입니다. 실무 모션 역학 Joint Constraints vs. Forward Kinematics IK는 모든 관절이 360도 꺾일 수 있게 둔다는 물리적 오해 Industry, Unity core
Blend Tree 걷기, 뛰기, 정지 등의 여러 애니메이션 상태를 속도나 방향 같은 매개변수에 따라 수학적 가중치로 섞어 자연스럽게 이어주는 노드 시스템입니다. 권장 상태 제어 State Machine vs. Hard Transition 걷다가 뛰려면 무조건 걷기 애니메이션이 끝나야 한다는 오해 Industry core
Particle System 눈, 비, 불꽃처럼 불규칙하게 움직이는 수만 개의 미세 입자들을, 수명(Lifetime), 가속도, 방출량 등의 물리 공식으로 시뮬레이션하는 기법입니다. 실무 이펙트 물리 Compute Shader vs. Keyframe Sprite 폭발 효과는 화가가 한 장 한 장 그려서 만든다는 1차원적 오해 Primary core

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) 등으로 방어했는가?

HCI :: Game Engines & Physics Simulation

11 / 11