Character skinning
Implement the linear-blending type of skinning discussed in class. You will face two difficulties: (1) finding a good pre-modelled character skin, and (2) assigning the weights to the skin. The simplest version of this is to take a cylinder that you then turn into a model of a finger by adding a skeleton with two or three underlying joints. You can procedurally generate the vertices and mesh for the cylinder, as well as developing a specific rule that is used to assign the weights. Add invisible bones as desired to avoid pinching effects. Talk to me if you're thinking of doing something more complex.
Inverse kinematics implementation
Implement and illustrate one of the inverse kinematics techniques discussed in the class.
Rigid body dynamics
Build on your results for Assignment 3 by implementing a more complex falling object and a more complex environment. For example, you could build a chair from a number of rectangular blocks and treat the chair as a single rigid object that you then throw into an environment that contains a variety of ramps. For more interesting simulations such as a block or a chair falling down a set of stairs you will also need to detect edge-edge intersections.
Visualizing rigid body physics
It would be nice to be able to directly visualize various quantities during a dynamical rigid body simulation. Thus during the animation, or even when the animation is paused, one would be able to see an illustration of the various vectors involved, i.e., P, V, omega, and perhaps the orientation represented in terms of an exponential map vector. Modify your assignment 3 code to see this result. Add as many other elements as you can that would make this an interesting visualization.
Cloth simulation
Use a coarse mass-spring-damper system with non-zero rest lengths to create a cloth simulation. Do not worry about collisions of the cloth with the environment or itself. You can suspend (and animate) the cloth by fixing the locations of specific particle masses in space.
Simulation of flocking behaviour
Create an animation of flocking birds or flocking fish by using the simple rules given for flock behavior. The birds and fish should steer away from obstacles as well as wanting to maintain a desired distance from neighbors. You can attempt to script the motion of the flock by controlling the motion of the leader. Develop a 3D environment that provides an interesting illustration of various behaviours.
Particle system fire simulation
Fire simulation is a prime application for particle simulation. Particles can change colour as a function of temperature, and the temperature can change as a function of time. Particles can grow (and thin out) over time due to diffusion. They can be pushed around by external velocity fields.
Orientation interpolation tutorial
In class we spoke about four different methods of representating object orientations. Implement a tool that illustrates how these four methods end up interpolating between different pairs of orientations. Print the current values of the current orientation representation on screen during the interpolation. Add other features and/or documentation that you think would help others understand the different representations.
Character animation using motion capture data
Using the supplied framework, implement a wandering behaviour for a character. Develop variations in the motion by changing the speed of the playback, blending between motions, and interpolating between motions. Add as many interesting features as you have time for.
You will be graded on the quality of your results, the difficulty of the project, and the creativity that went into your project. A 8% bonus will be given for providing an animated movie that illustrates your system in action, which we can then show to next year's class.