|
@@ -417,15 +417,16 @@ THREE.JSONLoader.prototype.parse = function ( json, texturePath ) {
|
|
|
};
|
|
|
|
|
|
function parseSkin() {
|
|
|
+ var influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;
|
|
|
|
|
|
if ( json.skinWeights ) {
|
|
|
|
|
|
- for ( var i = 0, l = json.skinWeights.length; i < l; i += 2 ) {
|
|
|
+ for ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {
|
|
|
|
|
|
- var x = json.skinWeights[ i ];
|
|
|
- var y = json.skinWeights[ i + 1 ];
|
|
|
- var z = 0;
|
|
|
- var w = 0;
|
|
|
+ var x = json.skinWeights[ i ];
|
|
|
+ var y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;
|
|
|
+ var z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;
|
|
|
+ var w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;
|
|
|
|
|
|
geometry.skinWeights.push( new THREE.Vector4( x, y, z, w ) );
|
|
|
|
|
@@ -435,12 +436,12 @@ THREE.JSONLoader.prototype.parse = function ( json, texturePath ) {
|
|
|
|
|
|
if ( json.skinIndices ) {
|
|
|
|
|
|
- for ( var i = 0, l = json.skinIndices.length; i < l; i += 2 ) {
|
|
|
+ for ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {
|
|
|
|
|
|
- var a = json.skinIndices[ i ];
|
|
|
- var b = json.skinIndices[ i + 1 ];
|
|
|
- var c = 0;
|
|
|
- var d = 0;
|
|
|
+ var a = json.skinIndices[ i ];
|
|
|
+ var b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;
|
|
|
+ var c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;
|
|
|
+ var d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;
|
|
|
|
|
|
geometry.skinIndices.push( new THREE.Vector4( a, b, c, d ) );
|
|
|
|