Bowling Animation with PBD

CSCE 450: Computer Animation

Kaili Fogle

What's this project about?

The goal is to simulate bowling with a ball and 10 pins to create a fun visual experience. Idk, I like watching bowling pins fall over.

An animation showing a bowling ball running into pins.

How was this implemented?

This project used this semester's assignment A5 as a base. This is because the animation is all calculated using Position-Based Dynamics. The implementation strategy for this project was as follows:

  1. Express the 3D pin using particles and constraints.
  2. Maintain the rigidity of the pins using constraints and shape matching.
  3. Calculate the bounding volume of the pin.
  4. Implement pin-to-pin collisions and ball-to-pin collisions, and other forces.

What challenges did I face?

The first hurdle was figuring out how to get the pins to stand up. A5 had much of the core functionality and concepts required to represent my objects using particles, but the pins were unable to maintain their shape. They'd instead turn into a "puddle" of particles on the ground. To solve this, I used shape matching, which effectively helped turn my objects into rigid bodies.

Another major challenge was improving the performance and accuracy of the PBD. For this reason, I created the bounding volumes for checking collisions a little faster, among other minor improvements. Though I wish the impact was a little more explosive, the pins seem to interact well with the ball and each other.

There were some other features I experimented with, such as trying to make the pins deformable or letting ball curve with user input. Currently, these are future additions that I'm interested in making.

Resources Used:

No other libraries or tools beyond what's included in the above list were used.