CMSC 491/691: Computer Animation

Assignment 3
Linear Blend Skinning
Due Oct, 16 2017 at 11:59 PM

Before you start

You will be doing your work this semester in a class git repository. Before you get started on any of the assignments, you should fetch yourself a copy of your personal repository following these directions. Your personal class respoitory on the UMBC GL/Linux systems is /afs/umbc.edu/users/a/d/adamb/pub/491/your-user-name.git

The Assignment

For this assignment, you must write a C or C++ program that will read a an .obj file containing a polygonal/skin mesh, a .bf file containing a skeleton, a .dmat file that contains linear blend skinning weights for each vertex in the mesh and for each bone in the skeleton, and .dmat file containing a new pose for the skeleton. Your output will be an .obj file that contains a deformed mesh compputed through linear-blend skinning / skeletal subspace deformations. This zip file contains a simple rigged ogre. Update: the zipfile now contains pose.dmat which gives two poses for the ogre.

filename description
ogre.obj .obj mesh of model rest pose
ogre-skeleton.bf .bf "bone forest" file containing the skeleton description. This is a crude file format that stores joint vertex rest positions, corresponding column indices into the weights matrix, and indices of parent joints
ogre-weights.dmat .dmat "dense matrix" containing the weights matrix W, which is #mesh vertices by #skeletal bones

You can (will be able to) run my program here:

~adamb/public/Skinning/skinning ogre.obj ogre-skeleton.bf ogre-weights.dmat ogre-pose.dmat output-%05d.obj

More details

obj_io.cpp provides routines to read and write simple .obj files. The pose will be given in Euler angles for each joint in (x, y, z) order.

Extra Credit

For 50 extra points implement Spherical Blend Skinning.

What to turn in

Turn in this assignment electronically by pushing your source code to your class git repository by 11:59 PM on the day of the deadline. Do your development in the proj3 directory so we can find it. Be sure the Makefile will build your project when we run 'make' (or edit it so it will). Also include a README.txt file telling us about your assignment. Do not forget to tell us what (if any) help did you receive from books, web sites or people other than the instructor and TA.

Check in along the way with useful checkin messages. We will be looking at your development process, so a complete and perfectly working ray tracer submitted in a single checkin one minute before the deadline will NOT get full credit. Do be sure to check in all of your source code, Makefile, README, and updated .gitignore file, but no build files, log files, generated images, zip files, libraries, or other non-code content.

To make sure you have the submission process working, you must do at least one commit and push by the friday before the deadline.