H-Anim component

This component defines nodes for humanoid animation.

See also X3D specification of the H-Anim component.

Lucy (from Seamless3d test page)
Lucy with our joints visualization
BoxMan with joints visualized

We support the H-Anim component, so you can render your humanoid and animate it through interpolators. Both skeletal and skinned animation is supported.

Supported nodes:

The implementation takes some care to handle all existing H-Anim versions: HAnim 1.0, HAnim 1.1, HAnim 200x.

Both H-Anim animation types are supported (they can also be mixed in one model):

  • skeletal — you place your geometry inside joints (as segments or sites). This is simple, and joints work then quite like animated transform nodes. Animating transformations of Joint nodes and such is optimized, just like for Transform node.

  • skinned — place the actual geometry (shapes) inside "HAnimHumanoid.skin" field. Then you refer (USE) the skin coordinates in "HAnimHumanoid.skinCoord". And finally, in each joint you modify skin coordinates by "HAnimJoint.skinCoordIndex", "HAnimJoint.skinCoordWeight".

    Remember that you also have to list (USE) all the joints inside flat list "HAnimHumanoid.joints". Actually, specification requires them in every case (not only for skinned animation), but our engine for now uses them only for joints that affect "skinCoordIndex".

    InstantReality has a nice overview of how the X3D nodes should be set up, see also the X3D and latest H-Anim specifications of course.

    One nice open-source modeller that can create such humanoids is Seamless3D, our implementation was tested on Lucy. Make sure to export a version without JavaScript.

    You can try the view3dscene Edit -> Add Humanoids Joints Visualization menu option to see the joints centers and their names.

    TODO: skinNormal is not supported yet.