Major upgradeThis release is a major update, as the script now uses full body harmonic animation. Since this has dramatically improved the overall quality of the script, I figured it would be appropriate to start calling it walk.js 2.0. As usual, comments, suggestions, insights and bug reports extremely welcome - here it is:
As always, walkTools have been updated accordingly:
New animations: walk, idle, walk backwards, sidestepping (left and right), turn on the spot (left and right) and flying, all using full body harmonics
As inspired by HiFi’s own animation graph, new avatar character animation file with all animations, sounds, transitions and reach poses described in one place. Example here
Defined two separate reach pose types - a designer / animator now has ability to specify different reach poses for pre and post state changes (e.g. one reach pose plays when the avatar is about to land and another plays just after he has landed)
Improved support for (Blender) avatars that are missing their pre-rotation values
Fingers are now animated procedurally (using harmonics)
All animation data now in easy to store / transmit json format
Tightened up the hips translations by adjusting for avatar hips height
Improved flying blending (up / down / forward / backwards / turning / flying slow animations are all blended depending on the motion)
Reduced footstep volume (slightly)
[walkTools] Implemented bvh player (the bvh -> harmonic animation converter is working, but not yet ready for release)
[walkTools] Added t-pose to walkTools editor as animating / rigging aid
IssuesThe automatic stride length calibration had to be disabled due to this bug: https://worklist.net/20680. The stride lengths are now calibrated to fit an avatar with hips exactly 1m above the ground. The settings panel now has a 'Calibrate' button that can be used if accurate foot placement is required.
The bvh player’s interpolation is very crude, as it’s only a previewing tool to check everything is ok before conversion to harmonics. As such, the animation looks a bit jerky when a bvh file is played.
There is a glitch around the walk / idle dead zone. Attempts have been made to address this (see https://github.com/DaveDubUK/walkTools/tree/walk-blending/walkTools) but I’m not prioritising that for now.
I’m (finally!) starting to hit some performance limits due to the number of harmonics calculated each frame. Currently, for each animation in the mix, there are up to 1536 cosine calculations per frame. At times (e.g. during transitions) there may be four or five animations blended at once. This has led to script execution times of up to 7mS, that whilst acceptable, should not be exceeded too much further if support for lower spec machines is to be maintained.
I’ve been busy with another project recently (I am now the owner of a VR friendly co-working space here in the tropical paradise of Koh Phangan if anyone fancies a working holiday /end shameless plug).
As a result, I think I’ve missed some discussion on which avatar should be used as the standard. I note that Sintel has been removed from the marketplace, and that a number of new ones are there. The main differences between avatars in the context of walk.js are the height of the hips (please someone make an avatar with 1m high hips!) and the position of the hands when the upper arms pitch is used to place the arms by the sides.
~ Can anyone advise on which avatar is considered as the standard?
Next steps- I plan to change direction slightly, and start applying the walkAPI / harmonic animation system to a dance animations. The basic plan is to match the harmonics of the animation with the harmonics of any music being played, thus enabling avatars to dance in time to the music.
I’d also like to modify walk.js so that it works on NPCs also. I’d really like to make a ‘creepy statue’ that moves imperceptibly, mainly to demonstrate the infinitely smooth interpolation innate to harmonic animation.
I plan to look at using the new ATP for storing and serving animation files.
Big thanks to @howard.stearns for taking care that walk.js still works after the animation system overhaul, @thoys for fixing the js joint rotation stuff in Interface and @ctrlaltdavid for implementing the webwindow positioning stuff