Overview
Our goal was to capture the movements of a person's body and display the motions as naturally as possible on a computer as an interactive, three dimensional figure. We spent two terms (20 weeks) working towards this goal and we have largely succeeded.
![](static/stick_figure.png)
![](static/dot_figure.png)
Our first term was spent developing our software for two-dimensional motion capture. We worked closely with the CAMS department and PEPS to film one of our group members and transfer the data of his movements onto a computer for later animation. To do this, we constructed 13 white LED markers and placed them at specific points on our model's body. With one camera, we filmed our model performing various movements in the dark so that all that the camera picked up was the darkness and the lights on our model's body. We then split up the footage we took into frames (30 frames per second) for analysis. Using a marker tracking program we developed, we looked through each of the frames in order, locating the LED markers and saving them in a certain order per frame according to the body part each represented. When markers weren't found because, for example, they were hidden from the camera, our program guessed where they might be. Once we had collected and processed our data into a large double array, we sent the data into a GUI which played both the animation and the real video simultaneously with rudimentary media player controls.
We spent our second term upgrading this system to 3D. We filmed our model with three cameras placed far apart in front of him using the same LED marker system as with 2D. We synced the cameras by beginning filming with the lights on and then flicked the off. Again we filmed our model performing various motions and converted the three videos to three sets of images for analysis. We changed our marker tracking program to accept image input from the three cameras and output the real world coordinates of the model's movements. The program scanned the three images for each frame simultaneously, locating markers and using the math described in the math section of this webpage to determine, based on the 2D locations of the markers from three angles, where the world coordinates for the markers would be. These data were stored and manipulated differently from our 2D version, but resulted in the same output of a double array, this time of world coordinates. Our GUI, now improved with a more robust set of media controls and upgraded for 3D model manipulation, took in the double array of data and displayed the animation of the data and the real footage simultaneously. The animation could be rotated using the mouse or the keyboard.