../cos526.jpg (39279 bytes)

Advanced Computer Graphics, Fall 2016


Programming Assignment 3: Shape2Pose

Due on Wed Nov 30 at 11:59PM


Overview

In this assignment you will implement an algorithm for predicting the pose a human might assume when interacting with a given object. The input to your algorithm will be: 1) a 3D surface mesh, 2) an articulated body, and (optionally) 3) a set of mesh-pose pairs to use as training examples. The output will be a set of predicted poses (represented by a set of joint pivot angles) that the articulated figure might take when interacting with the surface. Ideally, the predicted poses (red) output by your program match the provided ground truth poses with small error.
 

The following is a list of features that you may implement -- the features in bold face are required. You may choose to implement any of the others at your discretion, but they are not required. Templates for all functions are in render.cpp unless otherwise noted. In addition to implementing these features, you should submit images generated by your program to the art contest. The winner will get extra credit and a note on the course web page.

Analyzing the Mesh:

Evaluating the Cost of a Pose:

Searching for Poses with Minimal Cost:

To get started, you can use the code in (cos526_assn3.zip). This C++ code provides the basic infrastructre for reading scenes, mapping images to polygons, etc. It also provides a simple program (shape2pose) for viewing image configurations and making surface texture images. You will probably need to augment this program to include command line arguments of your own to turn on and off specific features and/or provide parameters for specific applications.

The skeleton code is able to read meshes, mesh properties, body skeletons, and body poses in ASCII file formats provided in the input directory. You should not be concerned with the file formats, since the support code handles all the reading and writing of them. However, if you want to learn more about the raw data, please refer to Vladimir Kim's web page here.

The input directory of the zip file provides test data for several object categories (bikes, chairs, etc.) and dozens of examples. For each input example E of category C, there is a mesh in input/meshes/C/E.off, a ground truth pose in input/ground_truth_poses/C/E.pose, and example predictions made by Vladimir (Vova) Kim in input/vovas_predicted_poses/C/E.pose.

The scripts directory of the zip file provides simple BASH scripts to run your program in batch mode on all the provided examples. "makeposes" will run shape2pose with parameters to create estimated poses and write them to output/C/E.pose. "makeimages" will read the predicted poses and write images of them to output/C/E.jpg (popping up a window for every example). "make errors" will read the log files produced by "makeposes" and concatenate the errors into a single table in output/errors.txt.


What to Submit

You should submit to CS dropbox one zip file named programming_assignment3.zip with the following internal directory structure to CS dropbox (note that you do not need to include the provided input data):

writeup.html should be an HTML document demonstrating the effects of the features you have implemented. There should be one "section" per feature with a brief description of what you implemented and some images showing your results with a description of the command/process used to create the results in the caption. Wherever possible, you should show numerical results for a test set of inputs, demonstrating the difference made by your algorithmic choice as compared to a simpler alternative.

The src directory should have all code required to compile and link your program (including the files provided with the assignment), along with a Makefile to rebuild the code.

Please DO NOT submit the provided input data as part of your zip file. Output images should be in JPEG format to save space. Also, to further save space, please remove binaries and backup files from the src directory (i.e., run make clean) before submitting.

Please see the course's webpage with submission instructions for more details.


Useful resources