浏览代码

GLTFLoader: Ignore extras.targetNames if its length is invalid

Takahiro 7 年之前
父节点
当前提交
8ab9eb1b40
共有 1 个文件被更改,包括 9 次插入6 次删除
  1. 9 6
      examples/js/loaders/GLTFLoader.js

+ 9 - 6
examples/js/loaders/GLTFLoader.js

@@ -1252,17 +1252,20 @@ THREE.GLTFLoader = ( function () {
 		if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {
 		if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {
 
 
 			var targetNames = meshDef.extras.targetNames;
 			var targetNames = meshDef.extras.targetNames;
-			var dictionary = mesh.morphTargetDictionary;
 
 
-			for ( var key in dictionary ) {
+			if ( mesh.morphTargetInfluences.length === targetNames.length ) {
 
 
-				if ( dictionary[ key ] < targetNames.length ) delete dictionary[ key ];
+				mesh.morphTargetDictionary = {};
 
 
-			}
+				for ( var i = 0, il = targetNames.length; i < il; i ++ ) {
+
+					mesh.morphTargetDictionary[ targetNames[ i ] ] = i;
 
 
-			for ( var i = 0, il = targetNames.length; i < il; i ++ ) {
+				}
+
+			} else {
 
 
-				dictionary[ targetNames[ i ] ] = i;
+				console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );
 
 
 			}
 			}