Explorar o código

Fix skinned animation for glTF2.0.

Don McCurdy %!s(int64=8) %!d(string=hai) anos
pai
achega
bbd838eed5
Modificáronse 1 ficheiros con 5 adicións e 21 borrados
  1. 5 21
      examples/js/loaders/GLTF2Loader.js

+ 5 - 21
examples/js/loaders/GLTF2Loader.js

@@ -2380,7 +2380,7 @@ THREE.GLTF2Loader = ( function () {
 
 
 				var _skin = {
 				var _skin = {
 					bindShapeMatrix: bindShapeMatrix,
 					bindShapeMatrix: bindShapeMatrix,
-					jointNames: skin.jointNames,
+					joints: skin.joints,
 					inverseBindMatrices: dependencies.accessors[ skin.inverseBindMatrices ]
 					inverseBindMatrices: dependencies.accessors[ skin.inverseBindMatrices ]
 				};
 				};
 
 
@@ -2665,24 +2665,8 @@ THREE.GLTF2Loader = ( function () {
 								// Replace Mesh with SkinnedMesh in library
 								// Replace Mesh with SkinnedMesh in library
 								if ( skinEntry ) {
 								if ( skinEntry ) {
 
 
-									var getJointNode = function ( jointId ) {
-
-										var keys = Object.keys( __nodes );
-
-										for ( var i = 0, il = keys.length; i < il; i ++ ) {
-
-											var n = __nodes[ keys[ i ] ];
-
-											if ( n.jointName === jointId ) return n;
-
-										}
-
-										return null;
-
-									};
-
 									var geometry = originalGeometry;
 									var geometry = originalGeometry;
-									var material = originalMaterial;
+									material = originalMaterial;
 									material.skinning = true;
 									material.skinning = true;
 
 
 									child = new THREE.SkinnedMesh( geometry, material, false );
 									child = new THREE.SkinnedMesh( geometry, material, false );
@@ -2693,10 +2677,10 @@ THREE.GLTF2Loader = ( function () {
 									var bones = [];
 									var bones = [];
 									var boneInverses = [];
 									var boneInverses = [];
 
 
-									for ( var i = 0, l = skinEntry.jointNames.length; i < l; i ++ ) {
+									for ( var i = 0, l = skinEntry.joints.length; i < l; i ++ ) {
 
 
-										var jointId = skinEntry.jointNames[ i ];
-										var jointNode = getJointNode( jointId );
+										var jointId = skinEntry.joints[ i ];
+										var jointNode = __nodes[ jointId ];
 
 
 										if ( jointNode ) {
 										if ( jointNode ) {