Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in _menu_load_objects() (line 579 of /home/drbiz/public/tools.realism.com/includes/menu.inc).

Revision of SkeletalJoint from Sun, 10/30/2016 - 10:19

SkeletalJoint : X3DGroupingNode : TBD {
MFNode
[]
joint
NULL
SkeletalJointNode
SFRotation
[]
rotation
0 0 1 0
[-1,1] or (-∞,∞)
SFVec3f
[]
translation
0 0 0
(-∞,∞)
SFNode
[]
metadata
NULL
[X3DMetadataObject]
MFVec3F
[]
vertexWeights
[]
[0,1]
MFInt32
[]
verticies
[]
[0...#verticies]



}

This node defines a single joint in the skeletal heirarchy. It may have any number of SkeletalJoint children that define joints further down in the heirarchy. Each joint is a point in space that may translate or rotate, effecting children joints. It is not possible to scale a point.

Motion of each joint changes the position of mesh verticies (see JointAnimation). This is controlled by the fields vertexWeights and verticies. The verticies field lists the verticies from the mesh (in JointAnimation) that this joint can change. The fraction of change of this joint applied to that vertex is specified in vertexWeights. The length of these two fields should be the same. If there are more elements in the verticies array than vertexWeights array, the vertexWeights array is padded with 0.0 to make the arrays the same length. If there are more vertexWeights than verticies, the vertexWeights array is truncated to the number of elements in the verticies array.

The sum of all weights from all SkeletalJoint nodes from a single mesh for a single vertex should total to 1.0. The results are undefined if that is not the case.

Non-spec note: Because of the large number of calculations necessary to animate a reasonably detailed model, these calculations are typically performed in the GPU with vertex shaders. There is an article that describes the process.