A mesh that has a Skeleton with bones that can then be used to animate the vertices of the geometry. The material must support skinning and have skinning enabled - see MeshStandardMaterial.skinning.


var geometry = new v3d.CylinderGeometry(5, 5, 5, 5, 15, 5, 30); //Create the skin indices and skin weights for (var i = 0; i < geometry.vertices.length; i++) { // Imaginary functions to calculate the indices and weights // This part will need to be changed depending your skeleton and model var skinIndex = calculateSkinIndex(geometry.vertices, i); var skinWeight = calculateSkinWeight(geometry.vertices, i); // Ease between each bone geometry.skinIndices.push(new v3d.Vector4(skinIndex, skinIndex + 1, 0, 0)); geometry.skinWeights.push(new v3d.Vector4(1 - skinWeight, skinWeight, 0, 0)); } var mesh = new v3d.SkinnedMesh(geometry, material); // See example from v3d.Skeleton for the armSkeleton var rootBone = armSkeleton.bones[0]; mesh.add(rootBone); // Bind the skeleton to the mesh mesh.bind(armSkeleton); // Move the bones and manipulate the model armSkeleton.bones[0].rotation.x = -0.1; armSkeleton.bones[1].rotation.x = 0.2;


SkinnedMesh(geometry : Geometry, material : Material)

geometry - an instance of Geometry or BufferGeometry (recommended). skinIndices and skinWeights should be set to true on the geometry.
material - (optional) an instance of Material. Default is a new MeshBasicMaterial.


See the base Mesh class for common properties.

.bindMode : string

Either "attached" or "detached". "attached" uses the SkinnedMesh.matrixWorld property for the base transform matrix of the bones. "detached" uses the SkinnedMesh.bindMatrix. Default is "attached".

.bindMatrix : Matrix4

The base matrix that is used for the bound bone transforms.

.bindMatrixInverse : Matrix4

The base matrix that is used for resetting the bound bone transforms.

.isSkinnedMesh : Boolean

Used to check whether this or derived classes are skinned meshes. Default is true.

You should not change this, as it used internally for optimisation.

.skeleton : Skeleton

Skeleton created from the bones of the Geometry passed in the constructor.


See the base Mesh class for common methods.

.bind (skeleton : Skeleton, bindMatrix : Matrix4) : null

skeleton - Skeleton created from a Bones tree.
bindMatrix - Matrix4 that represents the base transform of the skeleton.

Bind a skeleton to the skinned mesh. The bindMatrix gets saved to .bindMatrix property and the .bindMatrixInverse gets calculated. This is called automatically in the constructor, and the skeleton is created from the bones of the Geometry passed in the constructor.

.clone () : SkinnedMesh

Returns a clone of this SkinnedMesh object and any descendants.

.normalizeSkinWeights () : null

Normalizes the Geometry.skinWeights vectors. Does not affect BufferGeometry.

.pose () : null

This method sets the skinned mesh in the rest pose (resets the pose).

.updateMatrixWorld (force : Boolean) : null

Updates the MatrixWorld.

.initBones () : null

Creates an array of hierarchical bones objects from the internal geometry.


For more info on how to obtain the source code of this module see this page.