Github Link:


For my 15-112 Final Term Project, I explore a interactive drawing system that uses agent based boid system to create expressive and generative art. The boid rules were the 3 original rules that were part of basic flocking model by Craig Reynolds. (Boids by Craig Reynolds)


My ideas were mainly inspired by the video Partycles - An Interactive Installation, The Treachery of Sanctuary by Chris Milk, and Parallel - Kinect Art Performance. All of these have element of generative and interactive art which uses different type of system to create the visualization. The set of rules by the flocking model provide an generative system where the agent behave in unexpected ways. This bottom-up flocking system help create new results that the users might not fully expect. 

System Design


Kinect Sensor V2


Libraries: pykinect2, pygame, ctype, Kinect SDK, random, math, copy, colorsys, sys


The system was divided into two types: simulation and drawing. The simulation allows users to interact with the simulated boid system. The drawing allows the user to draw by leaving traces of the simulated boid system. The user interface is simple with only one interaction, either making a fist or regular open hand. The fist gesture allows users to select menu items, by holding the fist for 10 seconds. The user can use both thier left and right hand to interact with the system. I allow the user to control the different boid rules and boid visualization. The rules can be turned on or off through selection.

Boid Rules: 

  1. Seperation

  2. Alignment

  3. Cohesion

The boids are simulated through these boid rules and the boids are following an attractor point. The attractor point in this case is the left and right hand (each of the boid groups are independent of each other). In addition to the flocking model, I included noise to add some jitter to simulate randomness, random - does not follow hands but goes to random attractor points, and Randomize Color. The hue value of each group of the boid is the same but the saturation values are randomized. This allows a more cohesive color among the boids. 


I included 3 main primitive visualizations: Arrow, Circle, and Diamond. These primitives can either have trail or not have trail. The bonus visualization is paper trail, which do not have primitive elements. 


This project helped me further understand the concept of particle systems which I explored before. Though boidicles provide novel interaction, the user interface is still primitive. It does not included erasing boids, which could create more complex visualizations. I also encountered a problem with Python where it was creating performance issue so I had to clean install the Python. It was a great learning experience for creating new forms of interactive interfaces and platforms. Further exploration of interface design may create a smoother user experience. 


Boids by Craig Reynolds

Partycles - An Interactive Installation

Parallel - Kinect Art Performance 

The Treachery of Sanctuary by Chris Milk