splash

Programming Project Five: Choose an Option

Due Wednesday, Mar 14th, 5pm

-- Steve Rotenberg

Option 1: Inverse Kinematics

Implement an inverse kinematics demo that has a single chain of 5 or more links. The links can be 1 or more DOF rotational joints, but they must be arranged so that the chain can be manipulated in 3D, not just 2D. There should be keyboard (or UI) controls that allow the user to position the goal in x, y, and z, and displays the goal in 3D. The IK chain should touch the goal position with the end of the chain or reach in the correct direction if it is out of range.

I suggest using the Jacobian transpose approach as it is the simplest and does not require any explicit construction of a Jacobian matrix. It operates one joint at a time and is the most intuitive.

Grading

This project is worth 15 points:

3: Chain of links with rotational joints
3: User control over 3D goal position and display of 3D goal
3: IK doing something
6: IK working correctly
15: Total

Option 2: SPH (Particle Based Fluid Simulation)

Implement a basic SPH simulation with a limited number of particles (at least a few hundred). Choose a physics algorithm from one of the ones in the paper. Display the particles as points, or as small spheres, or something. You don’t need to implement any spatial data structures or fancy rendering- just get the basic physics working with as many particles as you can get running at a reasonable speed. The demo should have a reset key or possibly several keys that set up different initial conditions.

The particles should be constrained to a box to keep it under control, but SPH requires that the walls of the box act as a spring-like repulsion force, not just a hard boundary.

I suggest doing a demo where a blob of particles initializes above some ground plane and drops to the ground. You should see something resembling a splash.

Grading

This project is worth 15 points:

3: Particle system data structures & basic rendering
3: Initial conditions set up (a blob above the ground or similar)
3: Basic gravity & ground plane and wall plane repulsion fields
6: SPH physics working correctly
15: Total

Option 3: Rigid Body Dynamics

Write a program that simulates a single rigid body (like a box) falling and colliding with a ground plane. It should have some initial linear and angular momentum (maybe randomized). The rigid body should collide properly but does not need to come to rest perfectly or collide with other rigid bodies. The program should have a reset key and several keys that select the initial shape of the box. We should be able to select boxes with different dimensions such as cubes (1x1x1), long box (1x1x5), flat box (1x5x5), etc. to show the appropriate behaviors. You can optionally do other shapes such as cylinders, spheres, etc.

Grading

This project is worth 15 points:

3: Basic rigid body data structures, box initialization, & box rendering
2: User controls to reset or select different starting conditions
4: Rigid body motion working (with correct tumbling behavior)
3: Something happening when the rigid body hits the ground plane
3: Ground plane collisions working correctly
15: Total

Option 4: Particle System

Make a program that simulates a general purpose particle system. The program must have some sort of graphical user interface that allows for adjusting several parameters interactively and displays the results on the fly (suggestion: take a look at NanoGui or Ant TweakBar as possible GUIs that integrate with GL). The particles should support physics for gravity, aerodynamic drag, and collisions with a ground plane at the least. New particles should be continually created at an adjustable rate, and the particles should also have a life span that is assigned when the particle is created and then counts down to 0, causing the particle to disappear. Particles can render as small spheres or as sprites. The following properties should be adjustable:

Grading

This project is worth 15 points:

4: Particle system with basic physics (gravity, air friction, ground collisions)
4: Dynamic creation & destruction (based on random life span) of particles
4: Graphical user interface
3: All listed properties adjustable
15: Total

Option 5: Own Project

You can choose something else, but please come talk to me first.