I took some time today to work on Bigfoot (my animation research testbed) a bit.
The first thing I added was not animation related, my UI library did not support multi-sampling when rendering 3D to textures, now it does, and all my skeletons look happier.
On the animation side, I added some skeleton semantic detection code. Before, the skeletons were only analyzed for branches, chains of bones with one child only. Now it also find symmetries between branches, in the beginning of the video you can see how it detects that the left and right limbs are symmetrical. The next step is to give it some human skeleton knowledge, so that it automatically figures out what is a head, a foot, a leg, etc... The point of this is that it would enable running the code on large mocap databases without the need for human annotation for purposes like machine learning.
The other new feature which is still very much work in progress is footplant detection. While seemingly innocent, it can be quite tricky to get this right. Mocap is noisy and I also want to support the more general case of 'support contact', where for an animation of an athlete hanging on a bar per example, the contact points with the bar would be detected, or for an unrealistic animation of a martial arts kick after taking a few steps on a vertical wall, the steps on the wall would be registered as well. This needs a different technique than simply foot height. I am researching this slowly when I find myself needing a break from Mathematics and want to do something instantly gratifying.
In the video, green spheres are generated when there is a local minimum in joint height, blue ones when there is a local minimum in joint velocity and white for both.
You can see lots of them firing during footplants. I tried to filter the signals and that did improve the detection, but this is only the beginning, it needs to get much better.