by Jeff Nunez
This project features a mannequin model that performs a double pirouette, animated using 230 frames of animation interpolated from 18 keyframe poses I made in Blender. The dancer is in a small "dance studio" room with a wide mirror. The room contains four simple point light sources. The project features a basic implementation of the Blinn-Phong shading model. The playback of the animation can be controlled by the user, as described in the Controls section below.
The biggest difficulty I encountered while working on this project, which led to a major setback and limited the project's scope, was figuring out how to parse data from a Collada file into C++ structs and then manipulating that data before sending it through OpenGL commands. Data such as joint/bone IDs, vertices, normals, indices, weighting of each joint's effect on each vertex, and more needs to be extracted from the Collada file, then the base pose of the model needs to be assembled and transformed using that data. I attempted to follow a series of video tutorials that cover this process in Java, but following along and converting everything into C++ proved to be too time-consuming.
As a result, I decided to use a simpler method to achieve the animation in OpenGL. After creating the 18 keyframes using the YouTube video as a reference, I exported the animation as a series of .obj files (each containing the entire model posed in a specific "frame" of the animation) directly from Blender, and read those into a C++ vector. Then, to play the animation, I simply increment an index into that vector of poses on every render cycle.