Disco Dancer used previous knowledge of skinned character animation in order to produce the movement you see above. Cheb, the animated character, came pre-built with organized text files of the weights and bones. This made parsing the files rather simple. The project does not use external file formats such as '.fbx' or '.dae' files (see 'Problem Area').
Since there is only one Cheb character within the scene, most of the computation is done on the CPU. This also makes it easy to grab the transformed vertices of the Cheb character for computing collision detection.
Problem Area:Disco Dancer was originally going to use Assimp as a way of recieving the bone and weight data structure. Using Assimp proved to be more tricky than originally anticipated. The project does not make use of Assimp because of its complications; however, there are references at the bottom of this page related to Assimp.
The cloth simulation uses Implicit Euler equations in order to solve the linear system of equations for a spring system. The two cloths are a 10x10 sheet of cloth, with each having two fixed points in the top two corners. Disco Dancer does not make use of Sparse Matrices; there would be a huge speedup in the animation if they were used.
Sphere-Sphere collision detection was used for the interaction between the cloth and animated character. As of right now, each point on Cheb is treated like a sphere, so it seems more similar to a point-point approach. This model could be made better with a heirarchical model of sphere-sphere collision detection. Since there is only one character, this does not affect the speed of the application.
Loading Models using Assimp
Skeletal Animation With Assimp
- Skeletal Animation With Assimp - OGL Dev
Sphere-Sphere Collision Detection
- Collision Detection Slides - Dr. Sueda
- BeeGees Official Website - BeeGees