I wanted to start simple so I first ran through all of my steps with just one joint moving. Everything worked fine and I caught plenty of errors and fixed them. Next I wanted to animate two joints rotating periodically and run that animation through the process. This was done with SimpleTest_02.
Unfortunately, this took quite some time. I found a few head-scratching errors in my FFT script and my Synthesis script. The Synthesis script uses the components from the FFT and sums a Fourier Series and applies the resulting values to the rig for synthesized animation.
There was an offset error after applying the signal to the second joint that I couldn’t account for (might have found a solution today!). I spent a couple days, but ended up creating a pretty easy work-around. Just group the locator that needs adjusting and adjust the transform node for that group. With this duct-tape like solution, everything works fine!
Let’s catch up since my last post. I ran into some confusion around the Fourier Series formation. There were some discrepancies from my Python script and I couldn’t track down the source of the issues. For some reason, the resulting Fourier Series had an extra bias and amplification tacked on. Luckily it was an easy fix; I just had to check for these values and then readjust the signal.
Another issue that has been ironed out was keeping up with the different biases and offsets between extracting the values and synthesizing the procedural animation. Everything seems to be accounted for, however the process and data management and be cleaned up and made more efficient.
Creating the Rig for Synthesis
(SCRIPT THIS IN PYTHON)
- Duplicate the rotoscoped rig to ensure proportional length
- Create Locators and center them on the joints. Freeze Transformations & Delete History
- Group the joint chain & call it ‘joints_GRP_01’
- Parent locator2 to locator1, locator3 to locator2, and locator4 to locator3
- Select locator2 and group it for adjustment purposes. Do the same for locator3 and locator4.
- Select the parent locator (locator1) and group it. Name it ‘control_GRP_01’
- Select locator1 and shift+select joints_GRP_01 and parent constrain
- Select locator2 and shift+select joint2 and orient constrain. Do the same for locator 3 + joint3, and locator4 + joint4.
- Group the whole damn thing.