|
@@ -8,7 +8,7 @@
|
|
|
<link type="text/css" rel="stylesheet" href="page.css" />
|
|
|
</head>
|
|
|
<body>
|
|
|
- [page:Object3D] →
|
|
|
+ [page:Object3D] → [page:Mesh] →
|
|
|
|
|
|
<h1>[name]</h1>
|
|
|
|
|
@@ -33,97 +33,111 @@
|
|
|
</script>
|
|
|
|
|
|
<h2>Example</h2>
|
|
|
-
|
|
|
+
|
|
|
<code>
|
|
|
- var geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
|
|
|
-
|
|
|
+ var geometry = new THREE.CylinderBufferGeometry( 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 THREE.Vector4( skinIndex, skinIndex + 1, 0, 0 ) );
|
|
|
- geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
|
|
|
-
|
|
|
+ geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
var mesh = THREE.SkinnedMesh( geometry, material );
|
|
|
|
|
|
// See example from THREE.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;
|
|
|
</code>
|
|
|
-
|
|
|
- <h2>Constructor</h2>
|
|
|
|
|
|
+ <h2>Constructor</h2>
|
|
|
<h3>[name]( [page:Geometry geometry], [page:Material material], [page:boolean useVertexTexture] )</h3>
|
|
|
<div>
|
|
|
- geometry — An instance of [page:Geometry]. [page:Geometry.skinIndices] and [page:Geometry.skinWeights] should be set.<br />
|
|
|
- material — An instance of [page:Material] (optional).<br />
|
|
|
- useVertexTexture -- Defines whether a vertex texture can be used (optional).
|
|
|
+ [page:Geometry geometry] - an instance of [page:Geometry] or [page:BufferGeometry] (recommended).
|
|
|
+ [page:Geometry.skinIndices skinIndices] and [page:Geometry.skinWeights skinWeights] should be set to true on the geometry.<br />
|
|
|
+ [page:Material material] - (optional) an instance of [page:Material]. Default is a new [page:MeshBasicMaterial] .<br />
|
|
|
+ [page:boolean useVertexTexture] - (optional) defines whether a vertex texture can be used. Default is true.
|
|
|
</div>
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
<h2>Properties</h2>
|
|
|
+ <div>See the base [page:Mesh] class for common properties.</div>
|
|
|
|
|
|
- <h3>[property:array bones]</h3>
|
|
|
+ <h3>[property:string bindMode]</h3>
|
|
|
<div>
|
|
|
- This contains the array of bones for this mesh. These should be set in the constructor.
|
|
|
+ Either "attached" or "detached". "attached" uses the [page:SkinnedMesh.matrixWorld]
|
|
|
+ property for the base transform matrix of the bones. "detached" uses the
|
|
|
+ [page:SkinnedMesh.bindMatrix]. Default is "attached".
|
|
|
</div>
|
|
|
|
|
|
- <h3>[property:Matrix4 identityMatrix]</h3>
|
|
|
+ <h3>[property:Matrix4 bindMatrix]</h3>
|
|
|
<div>
|
|
|
- This is an identityMatrix to calculate the bones matrices from.
|
|
|
+ The base matrix that is used for the bound bone transforms.
|
|
|
</div>
|
|
|
|
|
|
- <h3>[property:boolean useVertexTexture]</h3>
|
|
|
+ <h3>[property:Matrix4 bindMatrixInverse]</h3>
|
|
|
<div>
|
|
|
- The boolean defines whether a vertex texture is used to calculate the bones. This boolean shouldn't be changed after constructor.
|
|
|
+ The base matrix that is used for resetting the bound bone transforms.
|
|
|
</div>
|
|
|
|
|
|
- <h3>[property:array boneMatrices]</h3>
|
|
|
+ <h3>[property:array bones]</h3>
|
|
|
<div>
|
|
|
- This array of matrices contains the matrices of the bones. These get calculated in the constructor.
|
|
|
+ This contains the array of [page:Bone bones] for this mesh. These should be set in
|
|
|
+ the constructor.
|
|
|
</div>
|
|
|
|
|
|
- <h3>[property:string bindMode]</h3>
|
|
|
+ <h3>[property:Boolean isSkinnedMesh]</h3>
|
|
|
<div>
|
|
|
- Either "attached" or "detached". "attached" uses the [page:SkinnedMesh.matrixWorld] property for the base transform
|
|
|
- matrix of the bones. "detached" uses the [page:SkinnedMesh.bindMatrix].
|
|
|
- </div>
|
|
|
-
|
|
|
- <h3>[property:Matrix4 bindMatrix]</h3>
|
|
|
- <div>
|
|
|
- The base matrix that is used for the bound bone transforms.
|
|
|
+ Used to check whether this or derived classes are skinned meshes. Default is *true*.<br /><br />
|
|
|
+
|
|
|
+ You should not change this, as it used internally for optimisation.
|
|
|
</div>
|
|
|
|
|
|
- <h3>[property:Matrix4 inverseBindMatrix]</h3>
|
|
|
+ <h3>[property:Skeleton skeleton]</h3>
|
|
|
<div>
|
|
|
- The inverse of the bindMatrix.
|
|
|
+ [page:Skeleton] created from the [page:Geometry.bones bones] of the [page:Geometry] passed in the
|
|
|
+ constructor.
|
|
|
</div>
|
|
|
|
|
|
+
|
|
|
+
|
|
|
<h2>Methods</h2>
|
|
|
+ <div>See the base [page:Mesh] class for common methods.</div>
|
|
|
|
|
|
<h3>[method:null bind]( [page:Skeleton skeleton], [page:Matrix4 bindMatrix] )</h3>
|
|
|
<div>
|
|
|
- skeleton — [page:Skeleton]<br/>
|
|
|
- bindMatrix — [page:Matrix4] that represents the base transform of the skeleton
|
|
|
+ [page:Skeleton skeleton] - [page:Skeleton] created from a [page:Bone Bones] tree.<br/>
|
|
|
+ [page:Matrix4 bindMatrix] - [page:Matrix4] that represents the base transform of the skeleton.<br /><br />
|
|
|
+
|
|
|
+ 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 [page:Geometry.bones bones] of the [page:Geometry] passed in the
|
|
|
+ constructor.
|
|
|
</div>
|
|
|
+
|
|
|
+ <h3>[method:SkinnedMesh clone]()</h3>
|
|
|
<div>
|
|
|
- Bind a skeleton to the skinned mesh. The bindMatrix gets saved to .bindMatrix property and the .bindMatrixInverse
|
|
|
- gets calculated.
|
|
|
+ Returns a clone of this SkinnedMesh object and any descendants.
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<h3>[method:null normalizeSkinWeights]()</h3>
|
|
|
<div>
|
|
|
Normalizes the [page:Geometry.skinWeights] vectors. Does not affect [page:BufferGeometry].
|
|
@@ -131,21 +145,15 @@
|
|
|
|
|
|
<h3>[method:null pose]()</h3>
|
|
|
<div>
|
|
|
- This method sets the skinned mesh in the rest pose.
|
|
|
+ This method sets the skinned mesh in the rest pose (resets the pose).
|
|
|
</div>
|
|
|
|
|
|
- <h3>[method:Bone addBone]( [page:Bone bone] )</h3>
|
|
|
- <div>
|
|
|
- bone — This is the bone that needs to be added. (optional)
|
|
|
- </div>
|
|
|
+ <h3>[method:null updateMatrixWorld]( [page:Boolean force] )</h3>
|
|
|
<div>
|
|
|
- This method adds the bone to the skinned mesh when it is provided. It creates a new bone and adds that when no bone is given.
|
|
|
+ Updates the [page:Matrix4 MatrixWorld].
|
|
|
</div>
|
|
|
|
|
|
- <h3>[method:SkinnedMesh clone]()</h3>
|
|
|
- <div>
|
|
|
- Returns a clone of this SkinnedMesh object and its descendants.
|
|
|
- </div>
|
|
|
+
|
|
|
|
|
|
<h2>Source</h2>
|
|
|
|