I’ve been struggling with my bvh importer for HiFi for ages now, as I couldn’t get the rotation order stuff quite right. Having strained my brain for days, I’ve finally got it all sorted out and produced a set of new harmonic animations that required no editing after conversion

Open and Run from URL: https://s3-us-west-2.amazonaws.com/davedub/high-fidelity/walkBeta/walk.js
To check the fidelity, I converted some of the exact same animations used by the new rig animation stuff @howard.stearns has been working on so I could compare (walk, idle, walk backwards, side stepping). I also added a mocapped flying animation, just for fun. It’s interesting to compare the new FBX animations (Interface menu -> Developer -> Enable Rig Animations) and the new walk.js ones.
Just to recap, the animations I’ve produced are 100% procedural and contain the harmonics necessary reproduce the original keyframe data curves. I’ve basically adapted some audio engineering mathematics and applied it to character animation.
And it all works, beautifully!
Working beta here (can open and run from URL):
https://s3-us-west-2.amazonaws.com/davedub/high-fidelity/walkBeta/walk.js
Problem: always hovering / flying?
If you have any trouble with always hovering (i.e. not detecting the ground correctly), please try reloading the script whilst standing on a surface.
Problem: walking slowly?
I've recently seen the situation where the avatar won't move any faster than 0.4 m/s. The avatar speed is not something that is controlled by walk.js, and the cause is currently unknown. To work around, I've moved the avatar well above the surface, then let him drop back down onto it before reloading the script.Dancing
I’ve also converted a couple of dances for experimentation, as the timing / synchronisation benefits of harmonic / procedural animation look set to enable dancing perfectly in time to the music.
Technical
- Production pipeline: By producing a bvh file without any pre-rotations and then applying to avatars using the new bind pose, all animations pretty much fit all avatars automatically - awesome! (This is provided the avatars have the correct joint orientations and has only really worked properly since the recent introduction of the new binding t-pose.)-
The pipeline is: fbx -> bvh -> Murayama JS bvh converter -> walkTools JS harmonics converter.
-
The next big step is implementing IK in JS so I can start sticking the feet to the ground, adjusting for uneven terrain and at some point enable avatar to avatar interactions.
As always, any feedback, comments, insights or observations are most welcome.
- davedub