Part 1:  Humanoid animation (HAnim) architecture

4 Concepts

--- HAnim separator bar ---

cube 4.1 General

4.1.1 Overview

This clause specifies the HAnim core concepts, including how HAnim figures are structured and manipulated.

4.1.2 Topics

Table 4.1 lists the topics in this clause.

Table 4.1 — Topics

4.1.3 Conventions used

The following conventions are used throughout this document:

Italics are used for field names, and are also used when new terms are introduced and equation variables are referenced.

A fixed-space font is used for source code examples.

Object names are appropriately capitalized (e.g., "The Joint object is a ...") and are represented in Bold face font. The identifying name of an individual object can precede it using a fixed-point font, e.g. humanoid_root Joint.

Throughout this document, references to external documents in the bibliography are denoted using the "[ABCD]" notation.

EXAMPLE  [ABCD] refers to a reference described in the Bibliography.

All length measurements in this document are in metres. All angle measurements are in radians.

All rotations are specified as a rotation axis and an angle (e.g., 1 0 0 π).

Numeric entries representing field values use decimal points (rather than decimal commas) in order to remain syntactically correct.

cube 4.2 HAnim figures

4.2.1 Overview

This document specifies the structure and manipulation of HAnim figures. HAnim figures are articulated 3D representations that depict animated characters. While HAnim figures are intended to represent human-like characters, they are a general concept that is not limited to the same number of limbs, heads, and other body parts that are typical of human beings. A single HAnim figure is called a humanoid.

Guidelines for embedding HAnim within VRML and X3D worlds are contained in Annex E. Guidelines for designing HAnim figures are contained in Annex F.

4.2.2 Assembly

HAnim figures are described using the following HAnim objects:

The Humanoid object is the root of an HAnim figure and provides the attachment framework for all other parts of the humanoid. More detailed information about the Humanoid object is specified in 4.3 Humanoid object.

The Joint object is attached to the Humanoid object or other Joint objects using a transform that specifies the current state of articulation along with geometry associated with the attached body part. More detailed information about the Joint object is specified in 4.4 Joint object.

The Segment object specifies the attributes of the physical links between the joints of the humanoid figure. More detailed information about the Segment object is specified in 4.5 Segment object.

The Site object specifies locations at which known semantics can be associated. More detailed information about the Site object is specified in 4.6 Site object.

The Displacer object specifies information about the range of movement allowed for the object in which it is embedded. More detailed information about the Displacer object is specified in 4.7 Displacer object.

4.2.3 Skeletal hierarchy

The skeletal description of the HAnim figure consists of a tree of Joint objects that define the transformations from the humanoid_root Joint to the end effector of each appendage of the humanoid. The only requirement of this document for the definition of the skeletal hierarchy is that it shall have a humanoid_root Joint object defined. All of the other Joint objects are optional and are not required for a humanoid figure to be HAnim compliant. It is expected that most HAnim figures have many more joints defined than the required humanoid_root.

The term level of articulation (LOA) is a measure of fidelity, and specifically refers to the number of articulations (or joints) that are defined for a humanoid figure. A humanoid figure with fourteen joints is said to have a "low level of articulation", whereas a humanoid figure with 72 joints can be said to have a "high level of articulation". A skeletal hierarchy containing only a humanoid_root Joint object is the lowest level of articulation that is allowed for an HAnim figure.

4.8.4 Levels of articulation defines five different LOAs that are common and may be used to generally categorize and describe the overall movement ability of an HAnim human figure. However, an HAnim human figure is not constrained to conform to any particular LOA but may use any appropriate LOA. An individual human figure may have an alternate skeletal hierarchy suited to its purpose. This hierarchy may include any number of optional model specific Joint objects, which may be dispersed among the standard HAnim Joint objects. As long as the ancestral ordering of the standard Joint objects is preserved, model specific Joint objects may be inserted between the standard Joint objects in the hierarchy.

The skeletal hierarchy for HAnim figures that are intended to represent humans is specified in 4.9 Structure of a humanoid.

4.2.4 Manipulation

HAnim figures are animated by applying transformations at the joints. The resulting geometry and/or skin vertices are further adjusted by adding associated displacer information. The ability of an HAnim figure to rearrange its limbs and body is dictated by the number of joints and segments used to specify each limb and body. More joints and segments result in a more articulated figure. Fewer joints result in a figure that is less articulated. Skin can also be manipulated through displacement of vertices or animation of skin-related meshes.

cube 4.3 Humanoid object

4.3.1 Overview

The geometry that specifies the body of an HAnim humanoid figure can be described in two ways:

Each of these is described below. The interface for the Humanoid object is specified in 6.2 Humanoid.

4.3.2 Skeletal body geometry specification

The skeletal method specifies the geometry within the scene graph of the skeletal hierarchy, which is defined in the skeleton field of the Humanoid object. The geometry defined within the Segment objects of the joint hierarchy describes the body as separate geometric pieces. This method, while computationally efficient, can cause certain visual anomalies (such as seams or creases) that detract from the appearance of the humanoid figure.

4.3.3 Skinned body geometry specification

The skinned method specifies the body as a continuous piece of geometry, within the skin field of the Humanoid object. For this method, point and normal vector data sets are first defined in the skinCoord and skinNormal fields of the Humanoid object (see 6.2 Humanoid). The data is defined in this manner to separate it from the internal mechanisms of the Humanoid object that utilize this information. The Humanoid object uses the coordinate and normal vector data sets to describe the geometry that makes up the skin surface of the humanoid figure. This surface may be implemented as a single mesh (see ISO/IEC 19775-1), as multiple meshes, or as another representation that provides the same functionality. Depending on how the mesh is rendered within the graphics pipeline and the configuration of the humanoid figure, it is possible that meshes may provide better performance by isolating the continuous mesh changes to localized surfaces. For this reason the specification does not constrain the implementation of the skin surface to a single method. The Humanoid object also manipulates the coordinate and normal vector data sets defined in the skinCoord and skinNormal fields to reflect the changes that occur within the skeletal scene graph of the skeleton field. In the context of skin deformation, each Joint object of the skeletal hierarchy serves the purpose of defining the coordinate frame within which the vertices of the continuous mesh are deformed. Additional details on this vertex manipulation can be found in the description of how a Joint object operates.

cube 4.4 Joint object

The Joint object is used as a building block to describe the articulations of the humanoid figure. Each articulation of the humanoid figure is represented by a Joint object. These Joint objects are organized into a hierarchy that describes the inherent parent-child relationship of Joint objects of the skeleton and provides a container for information that is specific to each joint of the skeleton.

The Joint object specifies a coordinate system for itself and objects defined in its children field. This coordinate system is relative to the coordinate systems of a parent object, which in most cases is another Joint object, but which can also be the Humanoid object. Thus, the Joint object is a specialized grouping object that can only be a child of another Joint object or, as occurs in the case of the humanoid_root Joint object, the first object of the skeletal hierarchy defined in the skeleton field of the Humanoid object.

A Joint object has two fields that allow it to manipulate individual vertices defined within the skinCoord field of the Humanoid object. Incoming rotation field events of the Joint object affect the vertices indicated by the skinCoordIndex field by a factor that is described by the corresponding values within the skinCoordWeight field of the Joint object. The skinCoordWeight field contains a list of floating point values that describe an amount of "weighting" to be used to affect the appropriate vertices (as indicated by the skinCoordIndex field) of the skinCoord field of the Humanoid object. The skinCoordWeight and skinCoordIndex fields are only used when a single continuous mesh HAnim model is being defined.

The Joint object is also used to store other joint-specific information. In particular, a joint name is provided so that applications can determine the identity of the Joint object. The Joint object may also contain attributes for inverse kinematics systems that control the HAnim figure. These attributes include the upper and lower joint limits, the orientation of the joint limits, and a stiffness/resistance value. The application is responsible for enforcing these limits and there may be certain domains where an application chooses to ignore the limits.

The object interface for Joint objects is specified in 6.3 Joint.

cube 4.5 Segment object

Each body part (e.g., forearm, thigh, calf, etc.) of the humanoid figure is represented by a Segment object. These Segment objects are organized in the Joint object skeletal hierarchy of the humanoid and provide a container for information that is specific to each segment of the body.

The Segment object is a specialized grouping object that provides a container for objects in its children field. A Segment object can only be defined as a child of a Joint object and shall be matched with the correct Joint object, as specified in 4.9 Structure of a humanoid.

The object interface for Segment objects is specified in 6.4 Segment.

cube 4.6 Site object

The Site object can be used for three purposes:

  1. to define an "end effector" location that can be used by an inverse kinematics system,
  2. to define an attachment point for accessories such as jewelry and clothing, and
  3. to define a location for a virtual camera in the reference frame of a Segment object (such as a view "through the eyes" of the humanoid for use in multi-user worlds).

Site objects that are intended to be used as attachment points from which a certain viewing perspective can be seen (such as the left and right eyes) shall be oriented so that they face in the direction the camera is looking.

A list of recommended Site objects and nominal body dimensions and levels of articulation can be found in Annex A Nominal human body dimensions and levels of articulation.

Site objects are grouping objects that can only be defined within the children field of a Segment object. The rotation and translation fields of the Site object define the location and orientation of the end effector within the coordinate frame of the Segment. The children field of the Site object is used to store any accessories that can be attached to the Segment object. The Site object specifies a coordinate system for objects in its children field that is relative to the coordinate systems of its parent object.

Site objects are ordinarily placed within the children field of the closest relative Segment in the human body, so that they are animated appropriately (as specified in Table 4.7). For lower LOA levels, a Site object may instead appear within its closest available ancestor.

The object interface for Site objects is specified in 6.5 Site.

cube 4.7 Displacer object

The shape of individual mesh objects may be altered according to application requirements. At the most basic level, this is done by manipulating the data stored in the coord field of the mesh objects. In the case of skeletal HAnim figures, the mesh objects reside in the Segment objects. In the case of the skinned HAnim figures, the mesh objects are specified by the skin field of the Humanoid object.

It may be necessary to identify specific groups of vertices within a mesh.

EXAMPLE 1  The application may need to know which vertices within the skull comprise the left eyebrow.

It may also be necessary to provide "hints" as to the direction in which each vertex may move. Such information is stored in a Displacer object. For skeletal HAnim figures, the Displacer objects for a particular Segment object are stored in the displacers field of that Segment. For skinned HAnim figures, the Displacer objects are stored in the displacers fields of the Joint objects in the HAnim figure. This information, called displacements, is specified in the local space of the particular Joint object, and transformed into the Humanoid space before being applied to the mesh.

A Displacer object can be used in three different ways. At its most basic level, it can simply be used to identify the vertices corresponding to a particular feature on the mesh. At the next level, it can be used to represent a particular muscular action which displaces the vertices in various directions. The third way in which a Displacer object can be used is to represent a complete configuration of the vertices in a mesh.

EXAMPLE 2  In the case of a face, there can be a Displacer object for each facial expression.

Each Displacer object specifies a location, called a morph target, that can be used to modify the displacement properties of the figure. The scalar magnitude of the displacement of these Displacer objects can be dynamically driven by an external source, such as an interpolator. Thus, the mesh may be morphed smoothly using the base mesh and a linear combination of the displacements defined by the Displacer objects.

While Displacer objects are most often used to control the shape of the face, they can be used for other body parts.

EXAMPLE 3  Displacer objects may be used to control the changing shape of an arm Segment as the arm flexes, simulating the effect of muscle inflation.

The object interface for Displacer objects is specified in 6.6 Displacer. A basic list of suggested Displacer objects is in Annex B Feature points for the human body.

cube 4.8 Modelling of humanoids

4.8.1 Overview

This document defines a possible restriction on the modeling of HAnim human figures to ensure that animations designed for one HAnim human figure are deployable to another HAnim human figure, when both HAnim human figures fully comply with the restrictions defined in 4.8. These restrictions specify the state of a model before any animations are applied.

Models do not need to comply with the restrictions defined in this section to properly function. These restrictions are included to provide the definition of a skeleton configuration that promotes sharing of animations. Models that do conform to this more restrictive configuration are identified by the skeletalConfiguration field of the Humanoid object. The skeletalConfiguration field shall be set to "BASIC" for models that comply with this restrictive skeletal configuration.

Any HAnim figure can share animations with another HAnim figure when they both share a common skeletal configuration. Two skeletons are defined to have the same skeletal configuration if the skeletons become identical when the joint rotations from one skeleton are applied to the other skeleton, using the Joint objects' name field to map between skeletons.

It is recommended that models sharing a common skeletal configuration also share the same Humanoid object skeletalConfiguration field value so that applications can easily identify animation data sets for use with that particular model. Any models that have the same value of skeletalConfiguration shall also be able to perform similar behaviours using the same animation data.

4.8.2 Modelling of human-like HAnim figures

The restrictions in this subclause only apply to models that have been designated as using a skeletalConfiguration value of "BASIC".

The humanoid shall be modelled so that, when all joint rotation angles are zero, it positions the humanoid in a standing position, facing in the +Z direction with +Y up and +X to the humanoid's left. The origin (0, 0, 0) shall be located at ground level, between the humanoid's feet.

The feet shall be flat on the ground, spaced apart about the same distance as the width of the hips. The bottom of the feet shall be at Y=0. The arms shall be straight and parallel to the sides of the body with the palms of the hands facing inwards towards the thighs. The hands shall be flat, with the axes of joints "1" through "3" of the fingers being parallel to the Y axis and the axis of the thumb being angled up at π/2 radians towards the +Z direction. Thus, the coordinate system for each joint in the thumb is still oriented to align with that of the overall humanoid.

The face shall be modelled with the eyebrows at rest, the mouth closed and the eyes wide open.

The humanoid shall be built with actual human size ranges in mind. All dimensions are in metres. A typical human is roughly 1.75 metres tall. Figure 4.1 depicts the default position of the humanoid.

Female front default side female default front male Male front

Figure 4.1 — Humanoid default position

In this position, all the joint angles shall be zero. That is, all the rotation fields in all the Joint objects shall have the default value of (0 0 1 0). In addition, the translation fields shall have the default value of (0 0 0) and the scale factors shall have the default value of (1 1 1). The only field that shall have a non-default value is center, which is used to specify the point around which the joint (and its attached children and body segments, if any) can rotate. Applying the default values for translation, rotation and scaling to all the joints in the body shall return the body to the neutral position described above. To facilitate this, the coordinate system for each Joint object is oriented to align with that of the overall Humanoid object.

The center field of each Joint object shall be placed so that the joints rotate in the same way that they do on a real human body.

Figure 4.2 shows the orientation of the hand. The cross hairs suggest possible locations for the Joint object center field values for the finger joints and Site object center field values for the finger tips.

Hand

Figure 4.2 — Hand orientation

It is suggested, but not required, that all of the body Segment objects be built in place. That is, they require no additional translation, rotation, or scaling to be connected with their neighbours.

EXAMPLE  The hand is built so that it is in the correct position relative to the forearm. The forearm is built so that it is in the correct position relative to the upper arm, and so on.

All of the coordinates of the body share a common origin, which is that of the humanoid itself. If this proves difficult for an authoring tool to implement, it is acceptable to use whatever geometric transformation mechanism is available in the encoding language to move the geometry defined within each Segment object into the correct position. Using such transformations instead of building the geometry hierarchically may impact performance.

The above defines the skeletal configuration for the "I" pose. Use of other poses is specified in 4.8.3.

Transportable animations that use the skeletalConfiguration of "Basic" shall have a binding pose for the skeleton that is a neutral position with all joints at zero rotation as described in 4.8.1 and 4.8.2 above.

4.8.3 Poses

The initial posture of an HAnim figure is called a pose. Three poses are common and are labelled "I", "T", and "A" (based on the similarity of the shape made by the figure to the shape of the letters), are used for a geometric model. The "I" pose represents a figure standing at attention. When combined with the restrictions specified in 4.8.2, this constitutes the skeletalConfiguration "Basic". The "T" pose represents a figure standing upright with arms extended out to the sides in a 90 degree angle from the body. The "A" pose represents a figure standing upright with arms extended out to the sides at a 45 degree angle from the body.

The default pose specified by the provided geometry is termed the "source pose". This document specifies that only one pose is provided per HAnim figure and the pose used for operations is the "I" pose.

Only one pose is defined in a Humanoid object. Design systems that create a pose other than the "I" pose can map their source pose to the "I" pose by using the following five fields to specify this mapping:

The browser uses the data in these fields to automatically map the source pose to the pose required for operations, termed the "initial pose". If these fields are not specified (or specify default values), the source pose and the initial pose are identical to the "I" pose.

4.8.4 Modelling of non-human HAnim figures

Non-human HAnim figures can also be represented with their joints and segments similarly to human HAnim figures. Corresponding animation can be generated appropriate to the specified hierarchy. However, for non-human HAnim figures, the number of joints and segments may differ, levels of articulation are not specified, and the source pose is specified to be the initial pose.

A model that does not comply with the restrictions specified in 4.8.2 shall have a skeletalConfiguration designation other than "Basic". For these non-basic models, the fields in the Humanoid node that support binding a general skin to a general skeleton may be used to prepare these models for HAnim operations. These fields are:

Detailed definitions of these fields are specified in 6 Object interfaces. These fields are not required for models that comply with the "Basic" skeletalConfiguration.

4.8.5 Levels of articulation

Level of articulation (LOA) represents the complexity and detail of joints for a humanoid skeletal hierarchy, and can be used for generating various motions based on the joints. There are five levels of articulation:

LOA‑1 figure

Figure 4.3 — LOA‑0 joint

ImageSeparatorLine
LOA‑1 figure

Figure 4.4 — LOA‑1 joints

ImageSeparatorLine
LOA‑2 figure

Figure 4.5 — LOA‑2 joints

ImageSeparatorLine
LOA‑3 figure

Figure 4.6 — LOA‑3 joints

ImageSeparatorLine
LOA‑4

Figure 4.7 — LOA‑4 joints

 

4.8.6 Partial HAnim figures

Modelling of partial figures (e.g., an arm or leg) is supported by using empty joints between the humanoidRoot and the first joint to be modelled.

EXAMPLE  A hierarchy such as the following meets all relationship rules but can be used to display only the head:

humanoidRoot : sacrum
  vc3 : c3
    vc2 : c2
      vc1 : c1
         skullbase : skull

For this case the geometry can be such that the humanoidRoot is simply a dummy object, not being drawn. Transforms can modify the translations so that the vc3 : c3 vertebrae is at 0 height. The rest then follow with default values for the head/facial portion.

cube 4.9 Structure of a humanoid

4.9.1 Overview

The human body consists of a number of segments (such as the forearm, hand and foot) that are connected to each other by joints (such as the elbow, wrist and ankle). This document defines abstractions for these segments and joints that allow a human body to be described in a structured and standardized way. An HAnim body is built as a series of nested Joint objects, each of which may have a Segment associated with it. The hierarchy in 4.9.6 Hierarchy shows the Joint:Segment object pair matching that is defined by this document. If a standard HAnim Joint object is defined, and that Joint object defines a Segment object, that Segment object shall use the appropriate name from this hierarchy.

EXAMPLE  If an l_upperarm Segment object is defined, it shall be defined as a child of the l_shoulder Joint object and similarly, if an r_knee Joint object has a Segment object defined within its children field, it shall be an r_calf Segment object.

4.9.2 The body

The names of the Joint objects for the body are specified in Figure 4.3 for LOA‑0, Figure 4.4 for LOA‑1, Figure 4.5 for LOA‑2, Figure 4.6 for LOA‑3, and Figure 4.7 for LOA‑4.

For LOA‑1 and above the vl5 and sacroiliac Joint objects are children of the humanoid_root Joint object. The humanoid_root Joint object is stored in the skeleton field of the Humanoid object, but all other Joint objects are descended from either vl5 or sacroiliac. If those Joint objects are missing, lower-level Joint objects can be children of the humanoid_root Joint object.

4.9.3 The hands

The names of the Joint objects for the LOA‑2 and 3 hands are specified in Table 4.2.

Table 4.2 — LOA‑2 and LOA‑3 hand Joint object names

Left hand
l_carpometacarpal_1 l_metacarpophalangeal_1 l_carpal_interphalangeal_1  
l_carpometacarpal_2 l_metacarpophalangeal_2 l_carpal_proximal_interphalangeal_2 l_carpal_distal_interphalangeal_2
l_carpometacarpal_3 l_metacarpophalangeal_3 l_carpal_proximal_interphalangeal_3 l_carpal_distal_interphalangeal_3
l_carpometacarpal_4 l_metacarpophalangeal_4 l_carpal_proximal_interphalangeal_4 l_carpal_distal_interphalangeal_4
l_carpometacarpal_5 l_metacarpophalangeal_5 l_carpal_proximal_interphalangeal_5 l_carpal_distal_interphalangeal_5
Right hand
r_carpometacarpal_1 r_metacarpophalangeal_1 r_carpal_interphalangeal_1  
r_carpometacarpal_2 r_metacarpophalangeal_2 r_carpal_proximal_interphalangeal_2 r_carpal_distal_interphalangeal_2
r_carpometacarpal_3 r_metacarpophalangeal_3 r_carpal_proximal_interphalangeal_3 r_carpal_distal_interphalangeal_3
r_carpometacarpal_4 r_metacarpophalangeal_4 r_carpal_proximal_interphalangeal_4 r_carpal_distal_interphalangeal_4
r_carpometacarpal_5 r_metacarpophalangeal_5 r_carpal_proximal_interphalangeal_5 r_carpal_distal_interphalangeal_5

 

The joints of a hand are illustrated as in Figure 4.8. The figure shows the LOA‑4 joints of a hand.

right hand joints

 

left hand joints

Figure 4.8 — LOA‑4 hand joints

The names of the Joint objects for the LOA‑4 hand joints are specified in Table 4.3.

Table 4.3 — LOA‑4 hand Joint object names

Left hand
l_midcarpal_1 l_carpometacarpal_1 l_metacarpophalangeal_1 l_carpal_interphalangeal_1  
l_midcarpal_2 l_carpometacarpal_2 l_metacarpophalangeal_2 l_carpal_proximal_interphalangeal_2 l_carpal_distal_interphalangeal_2
l_midcarpal_3 l_carpometacarpal_3 l_metacarpophalangeal_3 l_carpal_proximal_interphalangeal_3 l_carpal_distal_interphalangeal_3
l_midcarpal_4_5 l_carpometacarpal_4 l_metacarpophalangeal_4 l_carpal_proximal_interphalangeal_4 l_carpal_distal_interphalangeal_4
l_carpometacarpal_5 l_metacarpophalangeal_5 l_carpal_proximal_interphalangeal_5 l_carpal_distal_interphalangeal_5
Right hand
r_midcarpal_1 r_carpometacarpal_1 r_metacarpophalangeal_1 r_carpal_interphalangeal_1  
r_midcarpal_2 r_carpometacarpal_2 r_metacarpophalangeal_2 r_carpal_proximal_interphalangeal_2 r_carpal_distal_interphalangeal_2
r_midcarpal_3 r_carpometacarpal_3 r_metacarpophalangeal_3 r_carpal_proximal_interphalangeal_3 r_carpal_distal_interphalangeal_3
r_midcarpal_4_5 r_carpometacarpal_4 r_metacarpophalangeal_4 r_carpal_proximal_interphalangeal_4 r_carpal_distal_interphalangeal_4
r_carpometacarpal_5 r_metacarpophalangeal_5 r_carpal_proximal_interphalangeal_5 r_carpal_distal_interphalangeal_5

4.9.4 The feet

The names of the Joint objects for the LOA‑2 and 3 feet are specified in Table 4.4.

Table 4.4 — LOA‑2 and 3 foot Joint object names

Left foot
l_talocrural l_tarsometatarsal l_metatarsophalangeal l_tarsal_interphalangeal
Right foot
r_talocrural r_tarsometatarsal r_metatarsophalangeal r_tarsal_interphalangeal

 

The LOA‑4 joints of a foot are illustrated as in Figure 4.9.

right foot joints

 

left foot joints

 

Figure 4.9 — LOA‑4 foot joints

The names of the Joint objects for LOA‑4 feet are specified in Table 4.5.

Table 4.5 — LOA‑4 foot Joint object names

Left foot
l_talocrural l_cuneonavicular_1 l_tarsometatarsal_1 l_metatarsophalangeal_1 l_tarsal_proximal_interphalangeal_1 l_tarsal_distal_interphalangeal_1
l_cuneonavicular_2 l_tarsometatarsal_2 l_metatarsophalangeal_2 l_tarsal_proximal_interphalangeal_2 l_tarsal_distal_interphalangeal_2
l_talocalcaneonavicular l_cuneonavicular_3 l_tarsometatarsal_3 l_metatarsophalangeal_3 l_tarsal_proximal_interphalangeal_3 l_tarsal_distal_interphalangeal_3
l_calcaneocuboid l_transversetarsal l_tarsometatarsal_4 l_metatarsophalangeal_4 l_tarsal_proximal_interphalangeal_4 l_tarsal_distal_interphalangeal_4
l_tarsometatarsal_5 l_metatarsophalangeal_5 l_tarsal_proximal_interphalangeal_5 l_tarsal_distal_interphalangeal_5
Right foot
r_talocrural r_cuneonavicular_1 r_tarsometatarsal_1 r_metatarsophalangeal_1 r_tarsal_proximal_interphalangeal_1 r_tarsal_distal_interphalangeal_1
r_cuneonavicular_2 r_tarsometatarsal_2 r_metatarsophalangeal_2 r_tarsal_proximal_interphalangeal_2 r_tarsal_distal_interphalangeal_2
r_talocalcaneonavicular r_cuneonavicular_3 r_tarsometatarsal_3 r_metatarsophalangeal_3 r_tarsal_proximal_interphalangeal_3 r_tarsal_distal_interphalangeal_3
r_calcaneocuboid r_transversetarsal r_tarsometatarsal_4 r_metatarsophalangeal_4 r_tarsal_proximal_interphalangeal_4 r_tarsal_distal_interphalangeal_4
r_tarsometatarsal_5 r_metatarsophalangeal_5 r_tarsal_proximal_interphalangeal_5 r_tarsal_distal_interphalangeal_5

4.9.5 The face

Many humanoid implementations have made use of jointed facial structures to simulate facial expression. These work in a fashion similar to the facial parts of a ventriloquist's dummy. The following is a basic set of facial Joint and Segment objects that support this type of facial animation.

The suffix "_joint" is used here because these features are controlled by muscle groups instead of actual joints, the exception being the temporomandibular Joint object. The "_joint" suffix provides a distinction between the name of the Joint object and the name of the corresponding Segment object.

All facial Joint objects are children of the skullbase Joint object. The centre of rotation of the eye and the eyelid is the geometric centre of the eyeball. The eyelid rotation defaults to zero radians, and a positive rotation of π radians shall close the eyelid until it is complete. The eyebrows are at zero radians rotation by default, and can be rotated around the middle of the eyebrow. The mouth is closed when the temporomandibular Joint object is at zero radians.

The names of the Joint objects for the face are specified in Table 4.6.

Table 4.6 — Face Joint object names

l_eyeball_joint r_eyeball_joint
l_eyebrow_joint r_eyebrow_joint
l_eyelid_joint r_eyelid_joint
temporomandibular  

See 4.9.8 Additional Joint and Segment objects for details on how additional facial joints may be added.

The face Joint objects from the basic set of Joint objects only provide a primitive form of facial animation.

4.9.6 Hierarchy

4.9.6.1 LOA‑1 hierarchy

The LOA‑1 hierarchy forming the basic set of Joint objects is specified in Figure 4.10 with the segment names listed after the joints to which they are attached.

humanoid_root : sacrum
  sacroiliac : pelvis
  | l_hip : l_thigh
  | | l_knee : l_calf
  | |   l_talocrural : l_talus
  | |     l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2
  | r_hip : r_thigh
  |   r_knee : r_calf
  |     r_talocrural : r_talus
  |       r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
  vl5 : l5
    skullbase : skull
    l_shoulder : l_upperarm
    | l_elbow : l_forearm
    |   l_radiocarpal : l_carpal
    r_shoulder : r_upperarm
      r_elbow : r_forearm
        r_radiocarpal : r_carpal

Figure 4.10 — Basic set of Joint:Segment hierarchy for LOA‑1 (joint name : segment name)

 

4.9.6.2 LOA‑2 hierarchy

The LOA‑2 hierarchy forming the basic set of Joint objects is specified in Figure 4.11 with the segment names listed after the joints to which they are attached.

humanoid_root : sacrum
  sacroiliac : pelvis
  | l_hip : l_thigh
  | | l_knee : l_calf
  | |   l_talocrural : l_talus
  | |     l_tarsometatarsal_2 : l_metatarsal_2
  | |       l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2
  | |         l_tarsal_distal_interphalangeal_2 : l_tarsal_distal_phalanx_2
  | r_hip : r_thigh
  |   r_knee : r_calf
  |     r_talocrural : r_talus
  |       r_tarsometatarsal_2 : r_metatarsal_2
  |         r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
  |             r_tarsal_distal_interphalangeal_2 : r_tarsal_distal_phalanx_2
  vl5 : l5
    vl3 : l3
      vl1 : l1
        vt10 : t10
          vt6 : t6
            vt1 : t1
              vc4 : c4
              |   vc2 : c2
              |     skullbase : skull
              l_sternoclavicular : l_clavicle
              | l_acromioclavicular : l_scapula
              |   l_shoulder : l_upperarm
              |     l_elbow : l_forearm
              |       l_radiocarpal : l_carpal
              |         l_carpometacarpal_1 : l_metacarpal_1
              |         | l_metacarpophalangeal_1 : l_carpal_proximal_phalanx_1
              |         |   l_carpal_interphalangeal_1 : l_carpal_distal_phalanx_1
              |         l_carpometacarpal_2 : l_metacarpal_2
              |         | l_metacarpophalangeal_2 : l_carpal_proximal_phalanx_2
              |         |   l_carpal_proximal_interphalangeal_2 : l_carpal_middle_phalanx_2
              |         |     l_carpal_distal_interphalangeal_2 : l_carpal_distal_phalanx_2
              |         l_carpometacarpal_3 : l_metacarpal_3
              |         | l_metacarpophalangeal_3 : l_carpal_proximal_phalanx_3
              |         |  l_carpal_proximal_interphalangeal_3 : l_carpal_middle_phalanx_3
              |         |     l_carpal_distal_interphalangeal_3 : l_carpal_distal_phalanx_3
              |         l_carpometacarpal_4 : l_metacarpal_4
              |         | l_metacarpophalangeal_4 : l_carpal_proximal_phalanx_4
              |         |   l_carpal_proximal_interphalangeal_4 : l_carpal_middle_phalanx_4
              |         |     l_carpal_distal_interphalangeal_4 : l_carpal_distal_phalanx_4
              |         l_carpometacarpal_5 : l_metacarpal_5
              |           l_metacarpophalangeal_5 : l_carpal_proximal_phalanx_5
              |             l_carpal_proximal_interphalangeal_5 : l_carpal_middle_phalanx_5
              |               l_carpal_distal_interphalangeal_5 : l_carpal_distal_phalanx_5
              r_sternoclavicular : r_clavicle
                r_acromioclavicular : r_scapula
                  r_shoulder : r_upperarm
                    r_elbow : r_forearm
                      r_radiocarpal : r_carpal
                        r_carpometacarpal_1 : r_metacarpal_1
                        | r_metacarpophalangeal_1 : r_carpal_proximal_phalanx_1
                        |   r_carpal_interphalangeal_1 : r_carpal_distal_phalanx_1
                        r_carpometacarpal_2 : r_metacarpal_2
                        | r_metacarpophalangeal_2 : r_carpal_proximal_phalanx_2
                        |   r_carpal_proximal_interphalangeal_2 : r_carpal_middle_phalanx_2
                        |     r_carpal_distal_interphalangeal_2 : r_carpal_distal_phalanx_2
                        r_carpometacarpal_3 : r_metacarpal_3
                        | r_metacarpophalangeal_3 : r_carpal_proximal_phalanx_3
                        |   r_carpal_proximal_interphalangeal_3 : r_carpal_middle_phalanx_3
                        |     r_carpal_distal_interphalangeal_3 : r_carpal_distal_phalanx_3
                        r_carpometacarpal_4 : r_metacarpal_4
                        | r_metacarpophalangeal_4 : r_carpal_proximal_phalanx_4
                        |   r_carpal_proximal_interphalangeal_4 : r_carpal_middle_phalanx_4
                        |     r_carpal_distal_interphalangeal_4 : r_carpal_distal_phalanx_4
                        r_carpometacarpal_5 : r_metacarpal_5
                          r_metacarpophalangeal_5 : r_carpal_proximal_phalanx_5
                            r_carpal_proximal_interphalangeal_5 : r_carpal_middle_phalanx_5
                              r_carpal_distal_interphalangeal_5 : r_carpal_distal_phalanx_5

Figure 4.11 — Basic set of Joint:Segment hierarchy for LOA‑2

4.9.6.3 LOA‑3 hierarchy

The LOA‑3 hierarchy forming the basic set of Joint objects is specified in Figure 4.12 with the segment names listed after the joints to which they are attached.

humanoid_root : sacrum
  sacroiliac : pelvis
  | l_hip : l_thigh
  | | l_knee : l_calf
  | |   l_talocrural : l_talus
  | |     l_tarsometatarsal_2 : l_metatarsal_2
  | |       l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2
  | |         l_tarsal_distal_interphalangeal_2 : l_tarsal_distal_phalanx_2
  | r_hip : r_thigh
  |   r_knee : r_calf
  |     r_talocrural : r_talus
  |       r_tarsometatarsal_2 : r_metatarsal_2
  |         r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
  |             r_tarsal_distal_interphalangeal_2 : r_tarsal_distal_phalanx_2
  vl5 : l5
    vl4 : l4
      vl3 : l3
        vl2 : l2
          vl1 : l1
            vt12 : t12
              vt11 : t11
                vt10 : t10
                  vt9 : t9
                    vt8 : t8
                      vt7 : t7
                        vt6 : t6
                          vt5 : t5
                            vt4 : t4
                              vt3 : t3
                                vt2 : t2
                                  vt1 : t1
                                    vc7 : c7
                                    | vc6 : c6
                                    |   vc5 : c5
                                    |     vc4 : c4
                                    |       vc3 : c3
                                    |         vc2 : c2
                                    |           vc1 : c1
                                    |             skullbase : skull
                                    |               l_eyelid_joint : l_eyelid
                                    |               r_eyelid_joint : r_eyelid
                                    |               l_eyeball_joint : l_eyeball
                                    |               r_eyeball_joint : r_eyeball
                                    |               l_eyebrow_joint : l_eyebrow
                                    |               r_eyebrow_joint : r_eyebrow
                                    |               temporomandibular : jaw
                                    l_sternoclavicular : l_clavicle
                                    | l_acromioclavicular : l_scapula
                                    |   l_shoulder : l_upperarm
                                    |     l_elbow : l_forearm
                                    |       l_radiocarpal : l_carpal
                                    |         l_carpometacarpal_1 : l_metacarpal_1
                                    |         | l_metacarpophalangeal_1 : l_carpal_proximal_phalanx_1
                                    |         |   l_carpal_interphalangeal_1 : l_carpal_distal_phalanx_1
                                    |         l_carpometacarpal_2 : l_metacarpal_2
                                    |         | l_metacarpophalangeal_2 : l_carpal_proximal_phalanx_2
                                    |         |   l_carpal_proximal_interphalangeal_2 : l_carpal_middle_phalanx_2
                                    |         |     l_carpal_distal_interphalangeal_2 : l_carpal_distal_phalanx_2
                                    |         l_carpometacarpal_3 : l_metacarpal_3
                                    |         | l_metacarpophalangeal_3 : l_carpal_proximal_phalanx_3
                                    |         |   l_carpal_proximal_interphalangeal_3 : l_carpal_middle_phalanx_3
                                    |         |     l_carpal_distal_interphalangeal_3 : l_carpal_distal_phalanx_3
                                    |         l_carpometacarpal_4 : l_metacarpal_4
                                    |         | l_metacarpophalangeal_4 : l_carpal_proximal_phalanx_4
                                    |         |   l_carpal_proximal_interphalangeal_4 : l_carpal_middle_phalanx_4
                                    |         |     l_carpal_distal_interphalangeal_4 : l_carpal_distal_phalanx_4
                                    |         l_carpometacarpal_5 : l_metacarpal_5
                                    |           l_metacarpophalangeal_5 : l_carpal_proximal_phalanx_5
                                    |             l_carpal_proximal_interphalangeal_5 : l_carpal_middle_phalanx_5
                                    |               l_carpal_distal_interphalangeal_5 : l_carpal_distal_phalanx_5
                                    r_sternoclavicular : r_clavicle
                                      r_acromioclavicular : r_scapula
                                        r_shoulder : r_upperarm
                                          r_elbow : r_forearm
                                            r_radiocarpal : r_carpal
                                              r_carpometacarpal_1 : r_metacarpal_1
                                              | r_metacarpophalangeal_1 : r_carpal_proximal_phalanx_1
                                              |   r_carpal_interphalangeal_1 : r_carpal_distal_phalanx_1
                                              r_carpometacarpal_2 : r_metacarpal_2
                                              | r_metacarpophalangeal_2 : r_carpal_proximal_phalanx_2
                                              |   r_carpal_proximal_interphalangeal_2 : r_carpal_middle_phalanx_2
                                              |     r_carpal_distal_interphalangeal_2 : r_carpal_distal_phalanx_2
                                              r_carpometacarpal_3 : r_metacarpal_3
                                              | r_metacarpophalangeal_3 : r_carpal_proximal_phalanx_3
                                              |   r_carpal_proximal_interphalangeal_3 : r_carpal_middle_phalanx_3
                                              |     r_carpal_distal_interphalangeal_3 : r_carpal_distal_phalanx_3
                                              r_carpometacarpal_4 : r_metacarpal_4
                                              | r_metacarpophalangeal_4 : r_carpal_proximal_phalanx_4
                                              |   r_carpal_proximal_interphalangeal_4 : r_carpal_middle_phalanx_4
                                              |     r_carpal_distal_interphalangeal_4 : r_carpal_distal_phalanx_4
                                              r_carpometacarpal_5 : r_metacarpal_5
                                                r_metacarpophalangeal_5 : r_carpal_proximal_phalanx_5
                                                  r_carpal_proximal_interphalangeal_5 : r_carpal_middle_phalanx_5
                                                    r_carpal_distal_interphalangeal_5 : r_carpal_distal_phalanx_5

Figure 4.12 — Basic set of Joint:Segment hierarchy for LOA‑3

4.9.6.4 LOA‑4 hierarchy

The LOA‑4 hierarchy forming the basic set of Joint objects is specified in Figure 4.13 with the segment names listed after the joints to which they are attached.

humanoid_root : sacrum
  sacroiliac : pelvis
  | l_hip : l_thigh
  | | l_knee : l_calf
  | |   l_talocrural : l_talus
  | |     l_talocalcaneonavicular : l_navicular
  | |     | l_cuneonavicular_1 : l_cuneiform_1
  | |     | | l_tarsometatarsal_1 : l_metatarsal_1
  | |     | |   l_metatarsophalangeal_1 : l_tarsal_proximal_phalanx_1
  | |     | |     l_tarsal_interphalangeal_1 : l_tarsal_distal_phalanx_1
  | |     | l_cuneonavicular_2 : l_cuneiform_2
  | |     | | l_tarsometatarsal_2 : l_metatarsal_2
  | |     | |   # : l_tarsal_proximal_phalanx_2
  | |     | |     l_tarsal_proximal_interphalangeal_2 : l_tarsal_middle_phalanx_2
  | |     | |       l_tarsal_distal_interphalangeal_2 : l_tarsal_distal_phalanx_2
  | |     | l_cuneonavicular_3 : l_cuneiform_3
  | |     |   l_tarsometatarsal_3  : l_metatarsal_3
  | |     |     l_metatarsophalangeal_3 : l_tarsal_proximal_phalanx_3
  | |     |       l_tarsal_proximal_interphalangeal_3 : l_tarsal_middle_phalanx_3
  | |     |         l_tarsal_distal_interphalangeal_3 : l_tarsal_distal_phalanx_3
  | |     l_calcaneocuboid : l_calcaneus
  | |       l_transversetarsal : l_cuboid
  | |         l_tarsometatarsal_4 : l_metatarsal_4
  | |         | l_metatarsophalangeal_4 : l_tarsal_proximal_phalanx_4
  | |         |   l_tarsal_proximal_interphalangeal_4 : l_tarsal_middle_phalanx_4
  | |         |     l_tarsal_distal_interphalangeal_4 : l_tarsal_distal_phalanx_4
  | |         l_tarsometatarsal_5 : l_metatarsal_5
  | |           l_metatarsophalangeal_5 : l_tarsal_proximal_phalanx_5
  | |             l_tarsal_proximal_interphalangeal_5 : l_tarsal_middle_phalanx_5
  | |               l_tarsal_distal_interphalangeal_5 : l_tarsal_distal_phalanx_5
  | r_hip : r_thigh
  |   r_knee : r_calf
  |     r_talocrural : r_talus
  |       r_talocalcaneonavicular : r_navicular
  |       | r_cuneonavicular_1 : r_cuneiform_1
  |       | | r_tarsometatarsal_1 : r_metatarsal_1
  |       | |   r_metatarsophalangeal_1 : r_tarsal_proximal_phalanx_1
  |       | |     r_tarsal_interphalangeal_1 : r_tarsal_distal_phalanx_1
  |       | r_cuneonavicular_2 : r_cuneiform_2
  |       | | r_tarsometatarsal_2 : r_metatarsal_2
  |       | |   r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
  |       | |     r_tarsal_proximal_interphalangeal_2 : r_tarsal_middle_phalanx_2
  |       | |       r_tarsal_distal_interphalangeal_2 : r_tarsal_distal_phalanx_2
  |       | r_cuneonavicular_3 : r_cuneiform_3
  |       |   r_tarsometatarsal_3  : r_metatarsal_3
  |       |     r_metatarsophalangeal_3 : r_tarsal_proximal_phalanx_3
  |       |       r_tarsal_proximal_interphalangeal_3 : r_tarsal_middle_phalanx_3
  |       |         r_tarsal_distal_interphalangeal_3 : r_tarsal_distal_phalanx_3
  |       r_calcaneocuboid : r_calcaneus
  |         r_transversetarsal : r_cuboid
  |           r_tarsometatarsal_4 : r_metatarsal_4
  |           | r_metatarsophalangeal_4 : r_tarsal_proximal_phalanx_4
  |           |   r_tarsal_proximal_interphalangeal_4 : r_tarsal_middle_phalanx_4
  |           |     r_tarsal_distal_interphalangeal_4 : r_tarsal_distal_phalanx_4
  |           r_tarsometatarsal_5 : r_metatarsal_5
  |             r_metatarsophalangeal_5 : r_tarsal_proximal_phalanx_5
  |               r_tarsal_proximal_interphalangeal_5 : r_tarsal_middle_phalanx_5
  |                 r_tarsal_distal_interphalangeal_5 : r_tarsal_distal_phalanx_5
  vl5 : l5
   vl4 : l4
     vl3 : l3
       vl2 : l2
         vl1 : l1
           vt12 : t12
             vt11 : t11
               vt10 : t10
                 vt9 : t9
                   vt8 : t8
                     vt7 : t7
                       vt6 : t6
                         vt5 : t5
                           vt4 : t4
                             vt3 : t3
                               vt2 : t2
                                 vt1 : t1
                                   vc7 : c7
                                   |  vc6 : c6
                                   |   vc5 : c5
                                   |     vc4 : c4
                                   |       vc3 : c3
                                   |         vc2 : c2
                                   |           vc1 : c1
                                   |             skullbase : skull
                                   |               l_eyelid_joint : l_eyelid
                                   |               r_eyelid_joint : r_eyelid
                                   |               l_eyeball_joint : l_eyeball
                                   |               r_eyeball_joint : r_eyeball
                                   |               l_eyebrow_joint : l_eyebrow
                                   |               r_eyebrow_joint : r_eyebrow
                                   |               temporomandibular : jaw
                                   l_sternoclavicular : l_clavicle
                                   | l_acromioclavicular : l_scapula
                                   |   l_shoulder : l_upperarm
                                   |     l_elbow : l_forearm
                                   |       l_radiocarpal : l_carpal
                                   |         l_midcarpal_1 : l_trapezium
                                   |         | l_carpometacarpal_1 : l_metacarpal_1
                                   |         |   l_metacarpophalangeal_1 : l_carpal_proximal_phalanx_1
                                   |         |     l_carpal_interphalangeal_1 : l_carpal_distal_phalanx_1
                                   |         l_midcarpal_2 : l_trapezoid
                                   |         | l_carpometacarpal_2 : l_metacarpal_2
                                   |         |   l_metacarpophalangeal_2 : l_carpal_proximal_phalanx_2 
                                   |         |     l_carpal_proximal_interphalangeal_2 : l_carpal_middle_phalanx_2
                                   |         |       l_carpal_distal_interphalangeal_2 : l_carpal_distal_phalanx_2
                                   |         l_midcarpal_3 : l_capitate
                                   |         | l_carpometacarpal_3 : l_metacarpal_3
                                   |         |   l_metacarpophalangeal_3 : l_carpal_proximal_phalanx_3
                                   |         |     l_carpal_proximal_interphalangeal_3 : l_carpal_middle_phalanx_3
                                   |         |       l_carpal_distal_interphalangeal_3 : l_carpal_distal_phalanx_3
                                   |         l_midcarpal_4_5 : l_hamate
                                   |           l_carpometacarpal_4 : l_metacarpal_4
                                   |           | l_metacarpophalangeal_4 : l_carpal_proximal_phalanx_4
                                   |           |   l_carpal_proximal_interphalangeal_4 : l_carpal_middle_phalanx_4
                                   |           |     l_carpal_distal_interphalangeal_4 : l_carpal_distal_phalanx_4
                                   |           l_carpometacarpal_5 : l_metacarpal_5
                                   |             l_metacarpophalangeal_5 : l_carpal_proximal_phalanx_5
                                   |               l_carpal_proximal_interphalangeal_5 : l_carpal_middle_phalanx_5
                                   |                 l_carpal_distal_interphalangeal_5 : l_carpal_distal_phalanx_5
                                   r_sternoclavicular : r_clavicle
                                     r_acromioclavicular : r_scapula
                                       r_shoulder : r_upperarm
                                         r_elbow : r_forearm
                                           r_radiocarpal : r_carpal
                                             r_midcarpal_1 : r_trapezium
                                             | r_carpometacarpal_1 : r_metacarpal_1
                                             |   r_metacarpophalangeal_1 : r_carpal_proximal_phalanx_1
                                             |     r_carpal_interphalangeal_1 : r_carpal_distal_phalanx_1
                                             r_midcarpal_2 : l_trapezoid
                                             | r_carpometacarpal_2 : r_metacarpal_2
                                             |   r_metacarpophalangeal_2 : r_carpal_proximal_phalanx_2 
                                             |     r_carpal_proximal_interphalangeal_2 : r_carpal_middle_phalanx_2
                                             |       r_carpal_distal_interphalangeal_2 : r_carpal_distal_phalanx_2
                                             r_midcarpal_3 : r_capitate
                                             | r_carpometacarpal_3 : r_metacarpal_3
                                             |   r_metacarpophalangeal_3 : r_carpal_proximal_phalanx_3
                                             |     r_carpal_proximal_interphalangeal_3 : r_carpal_middle_phalanx_3
                                             |       r_carpal_distal_interphalangeal_3 : r_carpal_distal_phalanx_3
                                             r_midcarpal_4_5 : r_hamate
                                               r_carpometacarpal_4 : r_metacarpal_4
                                               | r_metacarpophalangeal_4 : r_carpal_proximal_phalanx_4
                                               |   r_carpal_proximal_interphalangeal_4 : r_carpal_middle_phalanx_4
                                               |     r_carpal_distal_interphalangeal_4 : r_carpal_distal_phalanx_4
                                               r_carpometacarpal_5 : r_metacarpal_5
                                                 r_metacarpophalangeal_5 : r_carpal_proximal_phalanx_5
                                                   r_carpal_proximal_interphalangeal_5 : r_carpal_middle_phalanx_5
                                                     r_carpal_distal_interphalangeal_5 : r_carpal_distal_phalanx_5

Figure 4.13 — Basic set of Joint:Segment hierarchy for LOA‑4

4.9.7 Site and Segment relationships

A set of predefined Site object names are listed in Table 4.7 (see Annex B Feature points for the human body for more information). The first column lists the predefined site names, and the other columns list the Segment object names to which the site shall be attached. Since not all Segment objects are present in all LOAs, the specific Segment object to which a particular Site object is attached may be different for different LOAs.

Table 4.7 — Site and Segment relationships

Index Site name Segment names for LOA‑4 Segment names for LOA‑3 Segment names for LOA‑2 Segment names for LOA‑1 Segment names for LOA‑0
0 skull_vertex skull skull skull skull sacrum
1 glabella skull skull skull skull sacrum
2 sellion skull skull skull skull sacrum
3 l_infraorbitale skull skull skull skull sacrum
4 l_tragion skull skull skull skull sacrum
5 l_gonion jaw jaw skull skull sacrum
6 r_infraorbitale skull skull skull skull sacrum
7 r_tragion skull skull skull skull sacrum
8 r_gonion jaw jaw skull skull sacrum
9 supramenton jaw jaw skull skull sacrum
10 cervicale t1 t1 t1 l5 sacrum
11 adams_apple c2 c2 c2 l5 sacrum
12 suprasternale t1 t1 t1 l5 sacrum
13 substernale t10 t10 t10 l5 sacrum
14 l_clavicale l_clavicle l_clavicle l_clavicle l5 sacrum
15 l_acromion l_clavicle l_clavicle l_clavicle l5 sacrum
16 l_axilla_proximal l_clavicle l_clavicle l_clavicle l5 sacrum
17 l_axilla_distal l_clavicle l_clavicle l_clavicle l5 sacrum
18 l_axilla_posterior_folds l_clavicle l_clavicle l_clavicle l5 sacrum
19 r_clavicale r_clavicle r_clavicle r_clavicle l5 sacrum
20 r_acromion r_clavicle r_clavicle r_clavicle l5 sacrum
21 r_axilla_proximal r_clavicle r_clavicle r_clavicle l5 sacrum
22 r_axilla_distal r_clavicle r_clavicle r_clavicle l5 sacrum
23 r_axilla_posterior_folds r_clavicle r_clavicle r_clavicle l5 sacrum
24 spine_1_middle_back t5 t5 l3 l5 sacrum
25 spine_2_middle_back l2 l2 l3 l5 sacrum
26 waist_preferred_anterior l5 l5 l5 l5 sacrum
27 waist_preferred_posterior l5 l5 l5 l5 sacrum
28 l_rib10 l2 l2 l3 l5 sacrum
29 l_thelion t9 t9 t10 l5 sacrum
30 r_rib10 l2 l2 l3 l5 sacrum
31 r_thelion t9 t9 t10 l5 sacrum
32 l_asis pelvis pelvis pelvis pelvis sacrum
33 l_iliocristale pelvis pelvis pelvis pelvis sacrum
34 l_psis pelvis pelvis pelvis pelvis sacrum
35 r_asis pelvis pelvis pelvis pelvis sacrum
36 r_iliocristale pelvis pelvis pelvis pelvis sacrum
37 r_psis pelvis pelvis pelvis pelvis sacrum
38 crotch pelvis pelvis pelvis pelvis sacrum
39 l_femoral_medial_epicondyles l_thigh l_thigh l_thigh l_thigh sacrum
40 l_femoral_lateral_epicondyles l_thigh l_thigh l_thigh l_thigh sacrum
41 l_suprapatella l_thigh l_thigh l_thigh l_thigh sacrum
42 l_trochanterion pelvis pelvis pelvis pelvis sacrum
43 r_femoral_lateral_epicondyles r_thigh r_thigh r_thigh r_thigh sacrum
44 r_femoral_medial_epicondyles r_thigh r_thigh r_thigh r_thigh sacrum
45 r_suprapatella r_thigh r_thigh r_thigh r_thigh sacrum
46 r_trochanterion pelvis pelvis pelvis pelvis sacrum
47 l_tibiale l_calf l_calf l_calf l_calf sacrum
48 l_medial_malleolus l_calf l_calf l_calf l_calf sacrum
49 l_lateral_malleolus l_calf l_calf l_calf l_calf sacrum
50 l_sphyrion l_talus l_talus l_talus l_talus sacrum
51 r_tibiale r_calf r_calf r_calf r_calf sacrum
52 r_medial_malleolus r_calf r_calf r_calf r_calf sacrum
53 r_lateral_malleolus r_calf r_calf r_calf r_calf sacrum
54 r_sphyrion r_talus r_talus r_talus r_talus sacrum
55 l_metatarsal_phalanx_1 l_tarsal_proximal_phalanx_1 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
56 l_metatarsal_phalanx_5 l_tarsal_proximal_phalanx_5 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
57 l_dactylion l_carpal_distal_phalanx_2 l_carpal_distal_phalanx_2 l_carpal_distal_phalanx_2 l_carpal sacrum
58 l_calcaneus_posterior l_talus l_talus l_talus l_talus sacrum
59 r_metatarsal_phalanx_1 r_tarsal_proximal_phalanx_1 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
60 r_metatarsal_phalanx_5 r_tarsal_proximal_phalanx_5 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
61 r_dactylion r_carpal_distal_phalanx_2 r_carpal_distal_phalanx_2 r_carpal_distal_phalanx_2 r_carpal sacrum
62 r_calcaneus_posterior r_talus r_talus r_talus r_talus sacrum
63 l_humeral_lateral_epicondyles l_upperarm l_upperarm l_upperarm l_upperarm sacrum
64 l_humeral_medial_epicondyles l_forearm l_forearm l_forearm l_forearm sacrum
65 l_olecranon l_forearm l_forearm l_forearm l_forearm sacrum
66 r_humeral_lateral_epicondyles r_upperarm r_upperarm r_upperarm r_upperarm sacrum
67 r_humeral_medial_epicondyles r_forearm r_forearm r_forearm r_forearm sacrum
68 r_olecranon r_forearm r_forearm r_forearm r_forearm sacrum
69 l_radiale l_forearm l_forearm l_forearm l_forearm sacrum
70 l_ulnar_styloid l_carpal l_carpal l_carpal l_carpal sacrum
71 l_radial_styloid l_forearm l_forearm l_forearm l_forearm sacrum
72 r_radiale r_forearm r_forearm r_forearm r_forearm sacrum
73 r_ulnar_styloid r_carpal r_carpal r_carpal r_carpal sacrum
74 r_radial_styloid r_forearm r_forearm r_forearm r_forearm sacrum
75 l_metacarpal_phalanx_2 l_metacarpal_2 l_metacarpal_2 l_metacarpal_2 l_carpal sacrum
76 l_metacarpal_phalanx_3 l_metacarpal_3 l_metacarpal_3 l_metacarpal_3 l_carpal sacrum
77 l_metacarpal_phalanx_5 l_metacarpal_5 l_metacarpal_5 l_metacarpal_5 l_carpal sacrum
78 r_metacarpal_phalanx_2 r_metacarpal_2 r_metacarpal_2 r_metacarpal_2 r_carpal sacrum
79 r_metacarpal_phalanx_3 r_metacarpal_3 r_metacarpal_3 r_metacarpal_3 r_carpal sacrum
80 r_metacarpal_phalanx_5 r_metacarpal_5 r_metacarpal_5 r_metacarpal_5 r_carpal sacrum
81 nuchale skull skull skull skull sacrum
82 l_neck_base c7 c7 t1 l5 sacrum
83 r_neck_base c7 c7 t1 l5 sacrum
84 navel l5 l5 l5 l5 sacrum
85 l_ectocanthus skull skull skull skull sacrum
86 r_ectocanthus skull skull skull skull sacrum
87 menton jaw jaw skull skull sacrum
88 mesosternale t6 t6 t6 l5 sacrum
89 opisthocranion skull skull skull skull skull
90 l_knee_crease l_thigh l_thigh l_thigh l_thigh sacrum
91 r_knee_crease r_thigh r_thigh r_thigh r_thigh sacrum
92 rear_center_midsagittal_plane t6 t6 t6 l5 sacrum
93 buttocks_standing_wall_contact_point pelvis pelvis pelvis pelvis sacrum
94 l_chest_midsagittal_plane t6 t6 t6 l5 sacrum
95 r_chest_midsagittal_plane t6 t6 t6 l5 sacrum
96 l_bideltoid l_upperarm l_upperarm l_upperarm l_upperarm sacrum
97 r_bideltoid r_upperarm r_upperarm r_upperarm r_upperarm sacrum
98 (reserved)
99 (reserved)
100 (reserved)
101 l_carpal_distal_phalanx_1 l_carpal_distal_phalanx_1 l_carpal_distal_phalanx_1 l_carpal_distal_phalanx_1 l_carpal sacrum
102 l_carpal_distal_phalanx_2 l_carpal_distal_phalanx_2 l_carpal_distal_phalanx_2 l_carpal_distal_phalanx_2 l_hand sacrum
103 l_carpal_distal_phalanx_3 l_carpal_distal_phalanx_3 l_carpal_distal_phalanx_3 l_carpal_distal_phalanx_3 l_hand sacrum
104 l_carpal_distal_phalanx_4 l_carpal_distal_phalanx_4 l_carpal_distal_phalanx_4 l_carpal_distal_phalanx_4 l_hand sacrum
105 l_carpal_distal_phalanx_5 l_carpal_distal_phalanx_5 l_carpal_distal_phalanx_5 l_carpal_distal_phalanx_5 l_hand sacrum
106 r_carpal_distal_phalanx_1 r_carpal_distal_phalanx_1 r_carpal_distal_phalanx_1 r_carpal_distal_phalanx_1 r_carpal sacrum
107 r_carpal_distal_phalanx_2 r_carpal_distal_phalanx_2 r_carpal_distal_phalanx_2 r_carpal_distal_phalanx_2 r_hand sacrum
108 r_carpal_distal_phalanx_3 r_carpal_distal_phalanx_3 r_carpal_distal_phalanx_3 r_carpal_distal_phalanx_3 r_hand sacrum
109 r_carpal_distal_phalanx_4 r_carpal_distal_phalanx_4 r_carpal_distal_phalanx_4 r_carpal_distal_phalanx_4 r_hand sacrum
110 r_carpal_distal_phalanx_5 r_carpal_distal_phalanx_5 r_carpal_distal_phalanx_5 r_carpal_distal_phalanx_5 r_hand sacrum
111 l_tarsal_distal_phalanx_1 l_tarsal_distal_phalanx_1 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
112 l_tarsal_distal_phalanx_2 l_tarsal_distal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
113 l_tarsal_distal_phalanx_3 l_tarsal_distal_phalanx_3 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
114 l_tarsal_distal_phalanx_4 l_tarsal_distal_phalanx_4 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
115 l_tarsal_distal_phalanx_5 l_tarsal_distal_phalanx_5 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 l_tarsal_proximal_phalanx_2 sacrum
116 r_tarsal_distal_phalanx_1 r_tarsal_distal_phalanx_1 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
117 r_tarsal_distal_phalanx_2 r_tarsal_distal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
118 r_tarsal_distal_phalanx_3 r_tarsal_distal_phalanx_3 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
119 r_tarsal_distal_phalanx_4 r_tarsal_distal_phalanx_4 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum
120 r_tarsal_distal_phalanx_5 r_tarsal_distal_phalanx_5 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 r_tarsal_proximal_phalanx_2 sacrum

4.9.8 Additional Joint and Segment objects

Additional Joint objects and body Segment objects may be defined for a humanoid. There are only three requirements:

  1. The Joint objects listed in the hierarchy, if present, shall use the specified names.
  2. No new Joint objects are allowed within the chain of the standard Joint hierarchy.
  3. Non-standard Joint objects may be children of either standard Joint objects or other non-standard Joint objects.

EXAMPLE  An additional elbow cannot be added to the arm. However, new appendages (such as hair and tails) can be added to a humanoid by creating new Joint objects that exist as children of other Joint objects.

  1. Additional Joint objects shall be added in such as way as to not interfere with the movement of standard Joint objects, even if no animation is available for them.

Animations for Joint objects from the basic set shall not be dependent upon animations of any additional Joint objects (or their children) that may be parented to them. Inverse kinematic systems may consider additional Joint objects when performing calculations but are not required to do so.

Additional Joint objects shall be given the prefix "x_" (e.g., x_pigtails) to distinguish them from basic set of Joint objects that may have similar names.

--- HAnim separator bar ---