浏览代码

increase scope of sceneGraph

Lewy Blue 7 年之前
父节点
当前提交
c8bbc3708a
共有 1 个文件被更改,包括 19 次插入20 次删除
  1. 19 20
      examples/js/loaders/FBXLoader.js

+ 19 - 20
examples/js/loaders/FBXLoader.js

@@ -23,6 +23,7 @@ THREE.FBXLoader = ( function () {
 
 
 	var FBXTree;
 	var FBXTree;
 	var connections;
 	var connections;
+	var sceneGraph = new THREE.Group();
 
 
 	function FBXLoader( manager ) {
 	function FBXLoader( manager ) {
 
 
@@ -131,7 +132,9 @@ THREE.FBXLoader = ( function () {
 			var deformers = this.parseDeformers();
 			var deformers = this.parseDeformers();
 			var geometryMap = new GeometryParser().parse( deformers );
 			var geometryMap = new GeometryParser().parse( deformers );
 
 
-			return this.parseScene( deformers, geometryMap, materials );
+			this.parseScene( deformers, geometryMap, materials );
+
+			return sceneGraph;
 
 
 		},
 		},
 
 
@@ -766,8 +769,6 @@ THREE.FBXLoader = ( function () {
 		// create the main THREE.Group() to be returned by the loader
 		// create the main THREE.Group() to be returned by the loader
 		parseScene: function ( deformers, geometryMap, materialMap ) {
 		parseScene: function ( deformers, geometryMap, materialMap ) {
 
 
-			var sceneGraph = new THREE.Group();
-
 			var modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap );
 			var modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap );
 
 
 			var modelNodes = FBXTree.Objects.Model;
 			var modelNodes = FBXTree.Objects.Model;
@@ -776,7 +777,7 @@ THREE.FBXLoader = ( function () {
 			modelMap.forEach( function ( model ) {
 			modelMap.forEach( function ( model ) {
 
 
 				var modelNode = modelNodes[ model.ID ];
 				var modelNode = modelNodes[ model.ID ];
-				self.setLookAtProperties( model, modelNode, sceneGraph );
+				self.setLookAtProperties( model, modelNode );
 
 
 				var parentConnections = connections.get( model.ID ).parents;
 				var parentConnections = connections.get( model.ID ).parents;
 
 
@@ -798,24 +799,22 @@ THREE.FBXLoader = ( function () {
 
 
 			this.bindSkeleton( deformers.skeletons, geometryMap, modelMap );
 			this.bindSkeleton( deformers.skeletons, geometryMap, modelMap );
 
 
-			this.createAmbientLight( sceneGraph );
+			this.createAmbientLight();
 
 
-			this.setupMorphMaterials( sceneGraph );
+			this.setupMorphMaterials();
 
 
-			var animations = new AnimationParser().parse( sceneGraph );
+			var animations = new AnimationParser().parse();
 
 
 			// if all the models where already combined in a single group, just return that
 			// if all the models where already combined in a single group, just return that
 			if ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) {
 			if ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) {
 
 
 				sceneGraph.children[ 0 ].animations = animations;
 				sceneGraph.children[ 0 ].animations = animations;
-				return sceneGraph.children[ 0 ];
+				sceneGraph = sceneGraph.children[ 0 ];
 
 
 			}
 			}
 
 
 			sceneGraph.animations = animations;
 			sceneGraph.animations = animations;
 
 
-			return sceneGraph;
-
 		},
 		},
 
 
 		// parse nodes in FBXTree.Objects.Model
 		// parse nodes in FBXTree.Objects.Model
@@ -1233,7 +1232,7 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		setLookAtProperties: function ( model, modelNode, sceneGraph ) {
+		setLookAtProperties: function ( model, modelNode ) {
 
 
 			if ( 'LookAtProperty' in modelNode ) {
 			if ( 'LookAtProperty' in modelNode ) {
 
 
@@ -1347,7 +1346,7 @@ THREE.FBXLoader = ( function () {
 		},
 		},
 
 
 		// Parse ambient color in FBXTree.GlobalSettings - if it's not set to black (default), create an ambient light
 		// Parse ambient color in FBXTree.GlobalSettings - if it's not set to black (default), create an ambient light
-		createAmbientLight: function ( sceneGraph ) {
+		createAmbientLight: function () {
 
 
 			if ( 'GlobalSettings' in FBXTree && 'AmbientColor' in FBXTree.GlobalSettings ) {
 			if ( 'GlobalSettings' in FBXTree && 'AmbientColor' in FBXTree.GlobalSettings ) {
 
 
@@ -1367,7 +1366,7 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		setupMorphMaterials: function ( sceneGraph ) {
+		setupMorphMaterials: function () {
 
 
 			sceneGraph.traverse( function ( child ) {
 			sceneGraph.traverse( function ( child ) {
 
 
@@ -2243,7 +2242,7 @@ THREE.FBXLoader = ( function () {
 		constructor: AnimationParser,
 		constructor: AnimationParser,
 
 
 		// take raw animation clips and turn them into three.js animation clips
 		// take raw animation clips and turn them into three.js animation clips
-		parse: function ( sceneGraph ) {
+		parse: function () {
 
 
 			var animationClips = [];
 			var animationClips = [];
 
 
@@ -2256,7 +2255,7 @@ THREE.FBXLoader = ( function () {
 
 
 				var rawClip = rawClips[ key ];
 				var rawClip = rawClips[ key ];
 
 
-				var clip = this.addClip( rawClip, sceneGraph );
+				var clip = this.addClip( rawClip );
 
 
 				animationClips.push( clip );
 				animationClips.push( clip );
 
 
@@ -2539,14 +2538,14 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		addClip: function ( rawClip, sceneGraph ) {
+		addClip: function ( rawClip ) {
 
 
 			var tracks = [];
 			var tracks = [];
 
 
 			var self = this;
 			var self = this;
 			rawClip.layer.forEach( function ( rawTracks ) {
 			rawClip.layer.forEach( function ( rawTracks ) {
 
 
-				tracks = tracks.concat( self.generateTracks( rawTracks, sceneGraph ) );
+				tracks = tracks.concat( self.generateTracks( rawTracks ) );
 
 
 			} );
 			} );
 
 
@@ -2554,7 +2553,7 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		generateTracks: function ( rawTracks, sceneGraph ) {
+		generateTracks: function ( rawTracks ) {
 
 
 			var tracks = [];
 			var tracks = [];
 
 
@@ -2591,7 +2590,7 @@ THREE.FBXLoader = ( function () {
 
 
 			if ( rawTracks.DeformPercent !== undefined ) {
 			if ( rawTracks.DeformPercent !== undefined ) {
 
 
-				var morphTrack = this.generateMorphTrack( rawTracks, sceneGraph );
+				var morphTrack = this.generateMorphTrack( rawTracks );
 				if ( morphTrack !== undefined ) tracks.push( morphTrack );
 				if ( morphTrack !== undefined ) tracks.push( morphTrack );
 
 
 			}
 			}
@@ -2675,7 +2674,7 @@ THREE.FBXLoader = ( function () {
 
 
 		},
 		},
 
 
-		generateMorphTrack: function ( rawTracks, sceneGraph ) {
+		generateMorphTrack: function ( rawTracks ) {
 
 
 			var curves = rawTracks.DeformPercent.curves.morph;
 			var curves = rawTracks.DeformPercent.curves.morph;
 			var values = curves.values.map( function ( val ) {
 			var values = curves.values.map( function ( val ) {