Browse Source

Load all assets before adding object to scene

WestLangley 7 năm trước cách đây
mục cha
commit
1e7530bb71
1 tập tin đã thay đổi với 33 bổ sung15 xóa
  1. 33 15
      examples/webgl_loader_obj.html

+ 33 - 15
examples/webgl_loader_obj.html

@@ -44,6 +44,7 @@
 			var windowHalfX = window.innerWidth / 2;
 			var windowHalfY = window.innerHeight / 2;
 
+			var object;
 
 			init();
 			animate();
@@ -68,45 +69,62 @@
 				camera.add( pointLight );
 				scene.add( camera );
 
-				// texture
+				// manager
+
+				var loadModel = function () {
+
+					object.traverse( function ( child ) {
+
+						if ( child instanceof THREE.Mesh ) {
+
+							child.material.map = texture;
+
+						}
+
+					} );
+
+					object.position.y = - 95;
+					scene.add( object );
+
+					console.log( `added object to scene` );
+
+				};
+
+				var manager = new THREE.LoadingManager( loadModel );
 
-				var manager = new THREE.LoadingManager();
 				manager.onProgress = function ( item, loaded, total ) {
 
 					console.log( item, loaded, total );
 
 				};
 
+				// texture
+
 				var textureLoader = new THREE.TextureLoader( manager );
+
 				var texture = textureLoader.load( 'textures/UV_Grid_Sm.jpg' );
 
 				// model
 
 				var onProgress = function ( xhr ) {
+
 					if ( xhr.lengthComputable ) {
+
 						var percentComplete = xhr.loaded / xhr.total * 100;
-						console.log( Math.round(percentComplete, 2) + '% downloaded' );
+						console.log( 'model ' + Math.round( percentComplete, 2 ) + '% downloaded' );
+
 					}
+
 				};
 
 				var onError = function ( xhr ) {
 				};
 
 				var loader = new THREE.OBJLoader( manager );
-				loader.load( 'models/obj/male02/male02.obj', function ( object ) {
-
-					object.traverse( function ( child ) {
 
-						if ( child instanceof THREE.Mesh ) {
-
-							child.material.map = texture;
-
-						}
+				loader.load( 'models/obj/male02/male02.obj', function ( obj ) {
 
-					} );
-
-					object.position.y = - 95;
-					scene.add( object );
+					object = obj;
 
 				}, onProgress, onError );