Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; About_Widget has a deprecated constructor in /var/www/vhosts/ on line 275
People as Particles | LMNts

People as Particles

One of the things we love about Grasshopper is the ability to build your own tools.  This is an incredibly liberating experience because you can develop functionality that may not be available, take short-cuts where needed, and create one-off tools without much effort.  Add-ons like Kangaroo further increase the possibilities by allowing the integration of physics into the tools that we build.  We try to keep the rest of our office aware of the growing animal kingdom of design technology and occasionally that leads to other team members suggesting the development of new tools (roof r-values, thermal assemblies).

The tool we’re sharing in this post we’ve named the People Populator and it came about from a desire to visualize what a few hundred people would look like in a lobby space.  The above image showing a bunch of blobs scattered across various spaces was created on a previous project, presumably by asking an intern to go into Photoshop and click a couple hundred times while making sure that the blobs didn’t get too close or too far away, but kept a distance that was justtttt right.  You probably wouldn’t want to do that more than once.  We were asked by someone in our office if we could help generate a graphic like this but possibly using physics instead of an intern.  This request was inspired by a demonstration of Kangaroo that we had recently given.  The tool seemed feasible and was a compelling use of Kangaroo that we hadn’t thought about before.

The logic behind the People Populator is fairly simple.  Some people like to be really close to others, sometimes too close, while other prefer to be the wallflower hanging out in the corner.  For a given simulation we specify how many people we want to populate into our scene and a proximity preference for each person ranging between a minimum and maximum distance that we based on a diagram we found on Wikipedia.

Each person is instantiated in the digital model as a point object or particle that tries to achieve it’s preferred proximity from others while also avoiding standing in front of doors, stairways, and other obstacles.  All of these particles start in a tight circle and once the Kangaroo physics engine is started, the particles scatter about the space, bouncing off of walls and each other until they finally reach their comfort zone.

You can tell that the logic isn’t quite there yet because all of the wallflowers congregate around each other, and the social butterflies pack themselves into a corner.  By no means was this simulation supposed to be predictive of actual human behavior and it is completely unscientific in its methods (how many people run into walls to get away from others), but it did prove to be effective in generating the end product we were after which again was an image that showed a given number of people in a space.

It’s important to be aware of these distinctions and limitations when developing custom tools.  It would be careless of us if we tried to use the People Populator to predict wayfinding or emergency exiting, but it did prove useful in showing the client the generous spatial difference between the lobby space of the building we’re designing versus the space that they previously inhabited.


Here’s a link for downloading the People Populator if you’d like to give it a try or improve it.  The definition was built with GH 0.9.0014 and Kangaroo 0.8 [download id = “20”]


  • Dhruv

    Being an Architecture student i really like how this study has been conducted.
    And i completely agree with “grasshopper” being a liberating tool as it allows to make our own tools.

    Great work.

    Cheers from India

  • taz

    BH has a freeware version of its crowd modeling software you could look at for comparison:

    Arup (Mass Motion) and BH both have non-commercial in-house programs to validate/test egress code compliance.