1. 개요[편집]
| 군중 시뮬레이션 Crowd Simulation | |
|---|---|
| 분야 | 게임 AI × 계산기하 × 보행자 동역학 |
| 대표 모델 | Boids, 사회력 모델, RVO/ORCA |
| 길찾기 기반 | 내비게이션 메시 |
| 주 용도 | 게임·영화 군중, 대피 안전 설계 |
한 명은 캐릭터, 백 명은 군중, 만 명은 유체.
군중 시뮬레이션(crowd simulation)은 다수의 자율 개체(에이전트)가 각자의 목표를 향해 이동하면서 서로 충돌하지 않고 자연스러운 집단 거동을 만들어내도록 계산하는 기법이다. 게임에서 광장을 채우는 NPC 무리, 영화의 전투 장면, 지하철 역사의 대피 시간 산정까지 — “사람이 많이 몰리는 상황”을 컴퓨터로 예측하거나 연출해야 할 때 쓰인다.
핵심 난점은 개체 수 이 커지면 충돌 회피 계산이 순진하게는 로 폭발한다는 것과, 그럼에도 결과가 “사람처럼” 보여야 한다는 것이다. 물리적으로 겹치지만 않게 만드는 건 쉽다. 문제는 그렇게 만든 군중이 하나같이 로봇처럼 걸어서 관객이 바로 알아챈다는 점.1
2. 계층 구조[편집]
군중 시뮬레이션은 보통 세 층으로 나눠 설계한다. 이 분리가 국룰인 이유는, 각 층의 갱신 주기가 다르기 때문이다.
- 전역 경로 계획(global planning) — “어디로 갈 것인가”. 내비게이션 메시 위에서 A* 등으로 목적지까지의 대략적인 경로를 뽑는다. 몇 초에 한 번만 갱신해도 충분하다.
- 국소 조향(local steering) — “다음 0.1초 동안 어느 방향으로”. 주변 이웃과 장애물을 보고 속도 벡터를 보정한다. 매 프레임 돈다. 군중 티가 나는지 안 나는지가 여기서 갈린다.
- 동작 재생(animation) — 결정된 속도에 맞는 걷기/뛰기 클립을 스켈레탈 애니메이션으로 재생하고, 발이 지면에서 미끄러지지 않게(foot sliding) 보정한다.
전역 층이 아무리 똑똑해도 국소 층이 어설프면 사람들이 서로 부비적대다 문 앞에서 얼어붙는다. 반대로 국소 층만 좋으면 벽 앞에서 영원히 좌우로 흔들린다.
3. 조향 모델[편집]
3.1. Boids[편집]
1987년 Craig Reynolds가 발표한 조상님. 각 개체가 이웃만 보고 세 가지 규칙 — 분리(separation), 정렬(alignment), 응집(cohesion) — 을 가중합해 가속도를 정한다.
전역 지휘자 없이 국소 규칙만으로 새 떼·물고기 떼가 창발한다는 것을 보여준 사례라, 창발(emergence)의 교과서적 예시로 지금도 인용된다. 다만 규칙이 “부드러운 유도”라 밀집 상황에서 확실한 충돌 회피는 보장하지 못한다.
3.2. 사회력 모델[편집]
Helbing과 Molnár(1995)의 접근. 보행자를 뉴턴 역학의 입자처럼 보고, 목적지로 끌어당기는 구동력과 타인·벽에서 밀어내는 반발력의 합으로 가속도를 쓴다.
반발력 는 거리에 대해 지수적으로 감쇠하는 형태를 쓴다. 형태를 보면 알겠지만 사실상 레너드-존스 퍼텐셜을 쓰는 분자동역학과 사촌지간이고, 실제로 베를레 적분 같은 적분기를 그대로 가져다 쓴다. 대피 시뮬레이션에서 관측되는 병목의 아치 형성, “빨리 갈수록 느려지는(faster-is-slower)” 현상 같은 실제 관측치를 재현해낸 것이 이 모델의 큰 성과다.2
3.3. RVO / ORCA[편집]
게임 업계 현재 국룰. van den Berg 등이 제안한 속도 장애물(velocity obstacle) 계열이다. 발상이 예쁘다 — 위치가 아니라 속도 공간에서 생각한다. 이웃 에 대해, “이 속도를 유지하면 초 안에 충돌하는” 속도들의 집합을 원뿔 모양 금지 구역으로 만들고, 그 바깥에서 원하는 속도에 가장 가까운 점을 고른다.
ORCA(Optimal Reciprocal Collision Avoidance)는 각 금지 구역을 반평면으로 선형화해서, 매 프레임 각 에이전트가 작은 선형 계획법 문제 하나만 풀면 되게 만들었다. 여기에 “회피 책임을 서로 절반씩 진다”는 상호성(reciprocity) 가정을 넣은 게 핵심 — 이게 없으면 두 사람이 마주쳤을 때 둘 다 같은 방향으로 피하며 진동하는, 현실에서도 자주 겪는 그 어색한 상황이 벌어진다. RVO2 라이브러리로 공개되어 있고 Unity의 NavMeshAgent를 비롯한 상용 엔진 다수가 이 계열을 쓴다.
3.4. 연속체 접근[편집]
에이전트가 수만을 넘어가면 개체를 포기하고 그냥 유체로 본다. Treuille 등의 Continuum Crowds(2006)는 군중을 밀도장 로 보고 통행 비용 포텐셜의 기울기 방향으로 흐르게 한다. 사실상 연속체역학의 수송 방정식을 격자에서 푸는 것이라, 유한차분법 코드가 거의 그대로 재활용된다. 개체 하나하나의 개성은 사라지지만 규모에 대해 대단히 싸다.
4. 성능[편집]
이웃 탐색을 순진하게 하면 다. 실무에서는 예외 없이 공간 분할 자료구조(균일 그리드, kd-트리)로 반경 이내 이웃만 뽑아 에 가깝게 만든다. 밀도가 균일하면 균일 그리드가 캐시 친화적이라 거의 항상 이긴다 — 이 부분은 SPH의 이웃 탐색과 판박이다.
- LOD — 카메라에서 먼 군중은 조향 주기를 늘리고, 더 멀면 임포스터(빌보드)로 그린다. 화면에 5만 명이 보이는 장면도 실제로 매 프레임 조향하는 건 몇백 명뿐인 경우가 많다.
- GPU 오프로딩 — ORCA의 선형 계획은 에이전트마다 독립이라 GPU 컴퓨팅과 궁합이 좋다.
- 군중 캐싱 — 영화 쪽은 실시간이 아니므로, 조향 결과를 오프라인으로 구워 재생만 한다.
5. 응용[편집]
- 게임 — 오픈월드의 거리 인파, RTS의 유닛 무리. 유닛 이동은 조향과 행동 트리가 맞물려 돌아간다.
- 영화·VFX — Weta Digital의 MASSIVE가 대표적. 각 에이전트에 퍼지 논리 기반 “뇌”를 달아 반지의 제왕 전투 장면을 만든 것이 유명하다.3
- 건축·안전공학 — 경기장, 지하철역, 여객터미널의 대피 시간(RSET) 산정. 국내외 성능위주설계(PBD) 심의에서 Pathfinder, legion 같은 도구의 결과가 실제 근거 자료로 제출된다. 이쪽은 결과가 사람 목숨과 직결되므로 검증 및 확인이 게임보다 훨씬 빡세다.
- 교통 — 보행자-차량 상호작용, 횡단보도 신호 주기 설계.
안전공학 쪽에서 반드시 짚어야 할 점: 군중 모델의 파라미터(희망 보행속도, 반응 시간, 개인 공간 반경)는 인구 집단마다 다르고, 실제 패닉 상황의 데이터는 윤리적으로 실험이 불가능해서 대부분 훈련 대피나 사고 영상 분석에서 얻는다. 즉 입력 불확실성이 크다. 결과를 “몇 초”라는 단일 숫자로 믿지 말고 파라미터 범위에 대한 민감도 해석을 붙이는 게 정석이다.
6. 현업에서의 현실[편집]
- 데모 영상은 늘 평평한 광장이다. 계단, 회전문, 에스컬레이터가 들어오는 순간 모델은 조용히 무너진다.
- 문 앞에서 에이전트들이 서로 양보하다 전원 정지하는 데드락은 통과의례. 대개 작은 무작위 흔들림(jitter)을 넣어 대칭을 깨는 것으로 때운다. 우아하진 않지만 잘 먹힌다.
- 발 미끄러짐은 조향과 애니메이션의 사이가 나쁘다는 뜻이다. 아티스트는 프로그래머를 탓하고 프로그래머는 클립 길이를 탓한다.
- “군중이 부자연스러운데요”라는 피드백의 90%는 조향이 아니라 개체 다양성(키·색·보폭·희망속도) 부족이 원인이다. 다양성이 다 했다.
7. 관련 문서[편집]
- 내비게이션 메시 · 행동 트리
- 스켈레탈 애니메이션 · 역운동학
- 파티클 시스템 · 강체 동역학
- 공간 분할 자료구조 · 충돌 감지
- 분자동역학 · 레너드-존스 퍼텐셜
- 연속체역학 · 검증 및 확인
- GPU 컴퓨팅
8. Footnotes[편집]
-
이른바 “불쾌한 골짜기”의 군중판. 개체 하나는 어설퍼도 넘어가는데, 백 명이 동시에 똑같은 보폭으로 똑같은 타이밍에 발을 내딛으면 인간의 시각 시스템은 0.2초 만에 이상함을 감지한다. 그래서 실무에서는 애니메이션 재생 위상을 개체마다 랜덤하게 밀어놓는 것이 첫 번째 처방이다. ↩
-
faster-is-slower: 출구로 다들 더 빨리 가려고 밀수록 아치형 막힘이 생겨 전체 유출률이 오히려 떨어지는 현상. 모래알이 깔때기에서 막히는 아칭(arching)과 같은 원리이며, 이산요소법으로 분체를 다뤄본 사람이라면 익숙한 그림이다. “차분히 대피하세요”라는 안내 방송이 감성 호소가 아니라 물리라는 뜻. ↩
-
MASSIVE는 반지의 제왕 제작을 위해 Stephen Regelous가 만들었고, 훗날 에미상과 아카데미 기술상을 받았다. 개발 초기 에이전트들이 지휘 없이 전장에서 도망치는 장면이 나와 버그로 의심받았는데, 실제로는 각자 판단으로 후퇴한 것이었다는 일화가 유명하다. 다만 이 이야기는 회자되면서 각색된 부분이 있다는 지적도 있으니 술자리 안주 정도로만. ↩