Publication details

Generalized Microscropic Crowd Simulation using Costs in Velocity Space
Wouter van Toll, Fabien Grzeskowiak, Axel López, Javad Amirian, Florian Berton, Julien Bruneau, Beatriz Daniel Cabrero, Alberto Jovane, Julien Pettré
In 24th ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, pp. 6:1-6:9, 2020.
ACM Digital Library page - Inria HAL page - Full paper (PDF) - Source code (Inria GitLab)


To simulate the low-level ('microscopic') behavior of human crowds, a local navigation algorithm computes how a single person ('agent') should move based on its surroundings. Many algorithms for this purpose have been proposed, each using different principles and implementation details that are difficult to compare.

This paper presents a novel framework that describes local agent navigation generically as optimizing a cost function in a velocity space. We show that many state-of-the-art algorithms can be translated to this framework, by combining a particular cost function with a particular optimization method. As such, we can reproduce many types of local algorithms using a single general principle.

Our implementation of this framework, named UMANS (Unified Microscopic Agent Navigation Simulator), is freely available online. This software enables easy experimentation with different algorithms and parameters. We expect that our work will help understand the true differences between navigation methods, enable honest comparisons between them, simplify the development of new local algorithms, make techniques available to other communities, and stimulate further research on crowd simulation.

BibTeX citation

    author = {van Toll, W. and Grzeskowiak, F. and L\'opez, A. and Amirian, J. and Berton, F. and Bruneau, J. and Daniel Cabrero, B. and Jovane, A. and Pettr\'e, J.},
    title = {Generalized Microscropic Crowd Simulation using Costs in Velocity Space},
    booktitle = {Proceedings of the 24th ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games},
    year = {2020},
    articleno = {6},
    pages = {1--9}