Node: HAnimJoint

X3D: 3.3
Component: H-Anim
Status:
experimental

Quick Links

➨ Fields

Each joint in the body is represented by an HAnimJoint node, which is used to define the relationship of each body segment to its immediate parent. An HAnimJoint may only be a child of another HAnimJoint node or a child within the skeleton field in the case of the HAnimJoint used as a humanoid root (i.e., an HAnimJoint may not be a child of an HAnimSegment). The HAnimJoint node is also used to store other joint-specific information. In particular, a joint name is provided so that applications can identify each HAnimJoint node at run-time. The HAnimJoint node may contain hints for inverse-kinematics systems that wish to control the H-Anim figure. These hints include the upper and lower joint limits, the orientation of the joint limits, and a stiffness/resistance value.

HTML Encoding and Default Values

<HAnimJoint bboxCenter='0,0,0' bboxSize='-1,-1,-1' center='0,0,0' children='X3DChildNode' displacers='x3dom.nodeTypes.HAnimDisplacer' limitOrientation='0 0 1 0' llimit='[]' metadata='X3DMetadataObject' name='""' render='true' rotation='0,0,1,0' scale='1,1,1' scaleOrientation='0,0,1,0' skinCoordIndex='[]' skinCoordWeight='[]' stiffness='0 0 0' translation='0,0,0' ulimit='[]' ></HAnimJoint>

Fields

These are the X3D / X3DOM fields of this node. Values should usually be received / set as strings via DOM functions (i.e., using setAttribute("myFieldName", "myFieldValue") and getAttribute("myFieldName")).
Name Type Default Value Range Inheritance Standard Description
bboxCenter SFVec3f 0,0,0 [-inf, inf] Grouping/X3DBoundedObject Center of the bounding box
bboxSize SFVec3f -1,-1,-1 [0, inf] or -1 Grouping/X3DBoundedObject Size of the bounding box
center SFVec3f 0,0,0 Grouping/Transform The center field specifies a translation offset from the origin of the local coordinate system (0,0,0).
children MFNode X3DChildNode Grouping/X3DGroupingNode Grouping nodes have a field that contains a list of children nodes. Each grouping node defines a coordinate space for its children. This coordinate space is relative to the coordinate space of the node of which the group node is a child. Such a node is called a parent node. This means that transformations accumulate down the scene graph hierarchy.
displacers MFNode HAnimDisplacer The displacers field contains a list of Displacer objects that are used to morph the deformable mesh using the morph targets defined in the Displacer objects.
limitOrientation SFRotation 0 0 1 0 The limitOrientation field gives the orientation of the coordinate frame in which the ulimit and llimit values are to be interpreted. It describes the orientation of ulimit and llimit fields in the local coordinate frame, relative to the Joint object centre position described by the center field.
llimit MFFloat [] The llimit field specifies lower joint rotation limits. Its components storee the lower (i.e., minimum) values for rotation around the X, Y and Z axes. A sequence containing zero elements indicates that the joint is unconstrained. A non-empty sequence can only consist of a single three-value element. If ulimit and llimit values are provided, both must be defined together. If llimit and ulimit are equal, no constraints are applied to Joint object rotations.
metadata SFNode X3DMetadataObject Core/X3DNode Field to add metadata information
name SFString "" Each Joint object shall have a name field, which shall not have the empty string value, that is used for identifying the object. Within the local scope of a Humanoid object, each Joint object can be referenced by its name alone (e.g., r_shoulder, l_hip, or skullbase). However, when referring to a Joint object within a larger or global scope, the name of the Humanoid object shall be added as a distinguishing prefix.
render SFBool true Grouping/X3DBoundedObject Flag to enable/disable rendering
rotation SFRotation 0,0,1,0 Grouping/Transform The rotation field specifies a rotation of the coordinate system.
scale SFVec3f 1,1,1 Grouping/Transform The scale field specifies a non-uniform scale of the coordinate system. Scale values may have any value: positive, negative (indicating a reflection), or zero. A value of zero indicates that any child geometry shall not be displayed.
scaleOrientation SFRotation 0,0,1,0 Grouping/Transform The scaleOrientation specifies a rotation of the coordinate system before the scale (to specify scales in arbitrary orientations). The scaleOrientation applies only to the scale operation.
skinCoordIndex MFInt32 []
skinCoordWeight MFFloat [] The skinCoordWeight field contains a list of floating point values between 0.0 and 1.0 that describe an amount of weighting that should be used to affect a particular vertex from the skinCoord field of the Humanoid object. Each item in this list has a corresponding index value in the skinCoordIndex field of the Joint object indicating exactly which coordinate is to be influenced.
stiffness MFFloat 0 0 0 The stiffness field, if present, contains values that specify to an inverse kinematics (IK) system how much each degree of freedom should scale the calculated joint rotation at each step of the IK solver. A scale factor of (1 - stiffness) is applied around the corresponding axis (X, Y, or Z for entries 0, 1 and 2 of the stiffness field). Thus a stiffness value of zero means that no rotation scaling occurs, while a stiffness value of one means that no rotation occurs regardless of any provided rotation.
translation SFVec3f 0,0,0 Grouping/Transform The translation field specifies a translation to the coordinate system.
ulimit MFFloat [] The ulimit field specifies the upper joint rotation limits. Its components store the upper (i.e. maximum) values for rotation around the X, Y and Z axes. A sequence containing zero elements indicates that the joint is unconstrained. A non-empty sequence can only consist of a single three-value element. If ulimit and llimit values are provided, both must be defined together. If llimit and ulimit are equal, no constraints are applied to Joint object rotations.