2
0
Эх сурвалжийг харах

Clarified documentation on skinWeights and skinIndices

Greg Tatum 9 жил өмнө
parent
commit
cbee789d5a

+ 23 - 7
docs/api/core/Geometry.html

@@ -96,16 +96,32 @@
 
 		<h3>[property:Array skinWeights]</h3>
 		<div>
-		Array of [page:Vector4 Vector4s] representing the skinning weights as used in a [page:SkinnedMesh],
-		The weights match the number and order of vertices in the geometry. The weighted values
-		are typically between the values of 0 and 1 and affect the amount that the individuals bones affect
-		a given vertex.
+		When working with a [page:SkinnedMesh], each vertex can have up to 4 [page:Bone bones] affecting it.
+		The skinWeights property is an array of weight values that correspond to the order of the vertices in
+		the geometry. So for instance, the first skinWeight would correspond to the first vertex in the geometry.
+		Since each vertex can be modified by 4 bones, a [page:Vector4] is used to represent the skin weights
+		for that vertex.
+		</div>
+		<div>
+		The values of the vector should typically be between 0 and 1. For instance when set to 0 the bone
+		transformation will have no affect. When set to 0.5 it will have 50% affect. When set to 100%, it will
+		have 100% affect. If there is only 1 bone associated with the vertex then you only need to worry about
+		the first component of the vector, the rest can be ignored and set to 0.
 		</div>
 
 		<h3>[property:Array skinIndices]</h3>
 		<div>
-		Array of [page:Vector4 Vector4s] representing the indices of individual bones in the [page:Skeleton.bones] array,
-		The indices match the number and order of vertices in the geometry.
+		Just like the skinWeights property, the skinIndices' values correspond to the geometry's vertices.
+		Each vertex can have up to 4 bones associated with it. So if you look at the first vertex, and the
+		first skinIndex, this will tell you the bones associated with that vertex. For example the first vertex
+		could have a value of <strong>( 10.05, 30.10, 12.12 )</strong>. Then the first skin index could have the
+		value of <strong>( 10, 2, 0, 0 )</strong>. The first skin weight could have the value of
+		<strong>( 0.8, 0.2, 0, 0 )</strong>. In affect this would take the first vertex, and then the bone
+		<strong>mesh.bones[10]</strong> and apply it 80% of the way. Then it would take the bone <strong>skeleton.bones[2]</strong>
+		and apply it 20% of the way. The next two values have a weight of 0, so they would have no affect.
+		</div>
+		<div>
+		In code another example could look like this:
 		<code>
 		// e.g.
 		geometry.skinIndices[15] = new THREE.Vector4(   0,   5,   9, 0 );
@@ -118,7 +134,7 @@
 		skeleton.bones[0]; // weight of 0.2
 		skeleton.bones[5]; // weight of 0.5
 		skeleton.bones[9]; // weight of 0.3
-		skeleton.bones[0]; // weight of 0
+		skeleton.bones[10]; // weight of 0
 		</code>
 		</div>