Joshua Ray
Parkour Action
Project description: The goal of this project was to create a human figure and program it to perform parkour across a varaiety of terrains and obstacles.
Project Completion: From what my proposed idea was i beleive i have completed about 80% percent of what I set out to do in that i have a working proof of concept tool to create animations and bind them to keybaord. All that would be left would be the obstacles.
Control Scheme:
-
Keyboard:
-
W/A/S/D : Move the Character about analogous to FPS Games
-
Mouse: Press and Hold the Left Mouse Button to rotate the camera about
-
Spacebar: Jump
-
e: While in the air = spinflip , While in a handstand = handspin
-
q: While in the air = backflip
-
f: Mount/Distmount to/from handstand
-
Implementation:
For this program I used C++/OpenGL for this project using Microsoft visual Studio 2010. In short I created a tool that creates key animation frames. The key frames contain information regarding the body's current corrdinates, as well as the degree of rotation followed by the axis that that particular body part would be rotated around.
Ex: Key-Frame
0 0 0
head 0 0 1 0
hip -2 0 1 0
leftCalf 27 1 0 0
leftForearm 2 1 0 0
leftQuad -24 1 0 0
leftTricep 7 1 0 0
neck 0 1 0 0
rightCalf 8 1 0 0
rightForearm 4 1 0 0
rightQuad -13 1 0 0
rightTricep 0 1 0 0
shoulders 0 0 1 0
spine -21 1 0 0
After collecting enough of these key frames i simply had the program interpolate between the frames to bring the animation to life. with this technique I was able to bring the animations you see in this project to life and bind them to keyboard controls
Once this was done I had to create the third person mouse controlled camerea. The final implentation of this turned out to be a lot easier than expected. All that need to be done was to create a quaternion, convert it into a rotation matrix and multiply it against the coordinates of the camera. The only catch was that the X axis must also be rotated about the Y axis when circling around the center point of view. If this isn't done then the camera, upon crossing the x axis will invert its rotation.
*Known Issue: Framerate is not throttled to 60 fps. Animations run faster than normal on some computers.
This website helped me out a lot in understanding how quaternions work. It also provides Quaternion->Rotation Matrix, Quaternion->AxisAngle and Interpolation techniques.