Project Recap- Update- whatever the hell you want to call it. Point is, I’m working on this damn thing harder than ever now!
First thing, I need to divide up what’s left on the project and schedule out the deadlines and create a Gantt chart or some visual aid to keep myself on task and accountable.
Simulate a horse’s gait cycle with mathematical functions which are determined through Fourier Analysis of rotoscoped animation from video footage. The idea is that if you break apart the components of each joints’ motion (z-axis, y-axis, rotation around the z-axis), you can run an FFT on the initial “signal” and obtain a Fourier Series approximation for each joints’ component’s motion. Then throw them all together and you have a walk cycle… At least, that’s what I’ve been hoping.
Beginning with video footage of the horse (viewing the horse as orthogonal to the camera as possible), rotoscope a hierarchy of joints representing the front and rear leg for whichever side of the horse is facing the camera.
(insert image of the process)
Run a python script to query the joint position and rotation values at each frame of the animation (24 fps) from Maya for the shoulder joint and the rotation values for the elbow, knee, and ankle joints. I’ll call this information the “raw” signals for each joint.
I then visualize each “raw” signal in Excel just to eyeball the data and see how periodic the signal is and how much noise is present.
—> Here’s the part that’s going to be tough to pass over to an end user: I roughly “condition” the raw signal so that it’ll be easier to analyze with a Fourier transform. In order for the Fourier transform to work, the signal must clearly be periodic and extended. Therefore, when selecting the signal, I tweak some of the values in order to get a clean signal that appears to capture the appropriate movement. This sounds like a justification for altering the data, but there is already an amount of human error from the video footage and the rotoscoping process and all that I’m really interested in is verifying that my methodology provides mathematical functions that define the motions for a gait cycle and that the resulting animation looks natural.
Once I have the “adjusted” signal, which means that the signal is ready for analysis, I run a Python script that runs a Fast Fourier Analysis and also outputs the components for the Fourier Series approximation (which is what I’m looking for!).
—> What I need to do in this script is to create a class that allows me to assign the amplitude to the frequency so that I can sort the frequencies by their amplitudes and grab the top 10, 50, 100, or however many components I need to have a function (Fourier Series) that accurately defines the motion of the joint. Determining the correct number of components will be determined either by doing enough horses so that there’s an obvious number of components that provides a close approximation, or (more than likely) create a way to check the signal’s integrity within the script. THIS WILL MOST LIKELY BE A HUGE HEADACHE (and will probably get pushed to the Future Work section of the project).
At the end of this, I will have the mathematical functions for the creature’s front leg and rear leg.
—> Footfall analysis must also be performed in order to determine the phase offset between the two front legs and the two back legs.
I first need to get more experienced with creating rigs within Maya and determining an appropriate quadruped rig to use for the horse.
With the rig, I’ll need to have a python script or python add-on in Maya or some sort of package so it’s nicer and user-friendly in Maya to drive the gait with the functions.
—> The controls for the rig and procedural animation MUST BE DETERMINED. This also means that I can’t just toss the functions on the joints without any thought. There needs to be an obvious way to drive the animation and control/manipulate it (rigging tutorials and small projects) and also set limitations and create a control system.
The following should save the animator time. With the front leg and rear leg motions defined, using the footfall pattern, the opposite side (not seen clearly from the video footage) should be easily animated with the appropriate offset.
Using QT and Python in Maya, a User-Interface needs to be created that provides a clear flow for the process so that any animator familiar with Maya can create a procedural gait cycle from a rotoscoped animation.
Hopefully this all makes sense. Now I need to schedule out the objectives and finish knocking them down.
- Use the “adjusted” signal to drive a rig’s motion in Maya
- Create a class data structure in the Python script to handle the data from the FFT (sorting frequencies by amplitudes)
- Create a test that checks if the Fourier Series approximation is close enough to the “adjusted signal”
- Channel-in the Fourier Series function into Maya to drive the quadruped rig’s motion
- Compare the synthesized gait (from Fourier Series) to the rotoscoped animation and to the “adjusted” signal cycle
- Tweak and fix as needed.
- Study quadruped rigs and animation
- Rigging tutorials —> rig a horse model
- Animate a horse’s walk, trot, and gallop
- Clean and optimize the process
- QT tutorials for packaging in Maya
Right now, I have about 8 weeks until my proposal is due (August 8th). I plan on submitting my Request for Defense on August 29th and defending on September 12th. The last day to defend is October 12th, so hopefully planning to defend this early will give me a little room, but I’m serious about hitting September 12th.