H-Anim is short for Humanoid Animation. The H-Anim protocol aimed to be* a standard way of modelling and animating humanoids, designed to facilitate the sharing of animations between different humanoid models. H-Anim was originally devised for VRML, but like much of VRML it has also been incorporated into MPEG4 as part of BIFS. An H-Anim humanoid in VRML is exhaustively described node by node using PROTO statements, a standard way of defining new nodes in VRML. This means that H-Anim models and animations should work in any VRML implementation which handles PROTO, but it results in rather large files. By contrast, an MPEG4 player which supports H-Anim should provide a default humanoid relative to which new models may be defined. This should lead to much-reduced bandwidth requirements.
An H-Anim model is based around a Humanoid node. This acts as a container for the humanoid as a whole, storing references to its constituent nodes and providing a convenient way of moving the whole model; it is also used to store information intended to be read by humans, such as copyright notices and author credits.
A human body consists of a number of segments linked together by joints, represented by Joint and Segment nodes respectively. The Joint node provides a name for the joint and defines the relation of one Segment to its immediate parent by means of fields for translation and orientation. Each Joint may have one or more further Joints as its children, and will usually also include a Segment node.
In addition to providing positional information and a name to refer to, a Joint node includes information about the joint in question such as limits on its range as movement and its stiffness; although a VRML browser won't make any direct use of this information, it is useful for inverse kinematics systems and the like.
A Segment node will usually be implemented as a Group node containing the geometry associated with the relevant body part. A Segment may also contain one or more Displacer nodes, indicating groups of vertices in the Segment which correspond to specific features of the body which may need to be individually altered by an application. For instance a single Segment node may be used for the entire head, in which case Displacer nodes can be used to animate facial features. Similarly, Displacer nodes may be used to handle the deformations that result from muscles being flexed and so on.
A Segment node may also include Site nodes as children. These serve three purposes: They define a place where objects such as clothing or jewellery may be attached; they provide an 'end effector' point for inverse kinematics applications; and they allow a 'virtual camera' to be defined in the reference frame of the Segment in question, to serve as the eyes of the humanoid in multi-user environments and similar.
For more about H-Anim see http://www.hanim.org
* Note that this writeup is written as if H-Anim was a going concern, having first been posted in 2001, aside from the first sentence which was updated in 2010. The H-Anim web site looks like it hasn't been updated for some time, but doesn't provide much information about what happened to the project. So it goes.