Overview
Crowd Simulation is a VFX technique used to generate large digital crowds of humans, animals, or creatures for film, television, and games. Instead of animating each extra by hand, thousands of autonomous agents are created, each acting as an independent individual with its own behavior, reacting individually to its environment and to other agents. The technique was first used on a large scale in the battle sequences of the Lord of the Rings trilogy (Wētā FX).
How it Works
The behavior of agents in many systems is controlled by fuzzy logic: each agent has its own rule-based or "brain" model that perceives (vision, distance to neighbors, terrain) and derives decisions from this perception. These decisions control and blend pre-created animation clips (from motion capture or hand animation), allowing the characters to move, act, and react realistically – for example, fighting, dodging, fleeing, or following a lead character. The result is movement patterns that would be difficult to achieve without individual animation.
Software On Set / In Post
Crowd Simulation is purely post-production/CG work (no set equipment). Common tools:
| Software | Provider / Platform | Notes |
|---|
| MASSIVE | Stephen Regelous (New Zealand) | "Multiple Agent Simulation System in Virtual Environment"; first major commercial crowd tool, developed for The Lord of the Rings |
| Golaem Crowd | Golaem SAS (France); since 2024 with Autodesk | Plug-in for Autodesk Maya; USD/point cloud export to Houdini |
| Miarmy | Basefount Software (China) | Maya plug-in, fuzzy logic-based; supports RenderMan, V-Ray, etc. |
| Houdini Crowds | SideFX | Integrated crowd tools within the procedural Houdini workflow |
Use in Production Pipeline
Typical applications include battle and army scenes, packed stadiums and concerts, busy streets, and herds of animals or creatures. Crowd layers are usually rendered as separate elements and composited with live-action footage or other CG layers. Data can be exchanged between packages (e.g., from Maya/Golaem via USD to Houdini) to further process caches as native geometry.