浏览代码

Merge pull request #11393 from Mugen87/dev

ColladaLoader2: Fixed Textures
Mr.doob 8 年之前
父节点
当前提交
96a2f631f6
共有 1 个文件被更改,包括 13 次插入10 次删除
  1. 13 10
      examples/js/loaders/ColladaLoader2.js

+ 13 - 10
examples/js/loaders/ColladaLoader2.js

@@ -16,10 +16,14 @@ THREE.ColladaLoader.prototype = {
 
 
 		var scope = this;
 		var scope = this;
 
 
+		var resourceDirectory = url.split( /[\\\/]/ );
+		resourceDirectory.pop();
+		resourceDirectory = resourceDirectory.join( '/' ) + '/';
+
 		var loader = new THREE.FileLoader( scope.manager );
 		var loader = new THREE.FileLoader( scope.manager );
 		loader.load( url, function ( text ) {
 		loader.load( url, function ( text ) {
 
 
-			onLoad( scope.parse( text ) );
+			onLoad( scope.parse( text, resourceDirectory ) );
 
 
 		}, onProgress, onError );
 		}, onProgress, onError );
 
 
@@ -29,7 +33,7 @@ THREE.ColladaLoader.prototype = {
 
 
 		set convertUpAxis( value ) {
 		set convertUpAxis( value ) {
 
 
-			console.log( 'ColladaLoder.options.convertUpAxis: TODO' );
+			console.log( 'ColladaLoader.options.convertUpAxis: TODO' );
 
 
 		}
 		}
 
 
@@ -41,7 +45,7 @@ THREE.ColladaLoader.prototype = {
 
 
 	},
 	},
 
 
-	parse: function ( text ) {
+	parse: function ( text, resourceDirectory ) {
 
 
 		function getElementsByTagName( xml, name ) {
 		function getElementsByTagName( xml, name ) {
 
 
@@ -188,7 +192,7 @@ THREE.ColladaLoader.prototype = {
 
 
 			if ( data.build !== undefined ) return data.build;
 			if ( data.build !== undefined ) return data.build;
 
 
-			return new Image();
+			return data.init_from;
 
 
 		}
 		}
 
 
@@ -572,7 +576,7 @@ THREE.ColladaLoader.prototype = {
 
 
 					var surface = effect.profile.surfaces[ sampler.source ];
 					var surface = effect.profile.surfaces[ sampler.source ];
 
 
-					var texture = new THREE.Texture( getImage( surface.init_from ) );
+					var texture = textureLoader.load( getImage( surface.init_from ) );
 
 
 					var extra = textureObject.extra;
 					var extra = textureObject.extra;
 
 
@@ -583,8 +587,8 @@ THREE.ColladaLoader.prototype = {
 						texture.wrapS = technique.wrapU ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
 						texture.wrapS = technique.wrapU ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
 						texture.wrapT = technique.wrapV ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
 						texture.wrapT = technique.wrapV ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
 
 
-						texture.offset.set( technique.offsetU, technique.offsetV );
-						texture.repeat.set( technique.repeatU, technique.repeatV );
+						texture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );
+						texture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );
 
 
 					} else {
 					} else {
 
 
@@ -593,13 +597,11 @@ THREE.ColladaLoader.prototype = {
 
 
 					}
 					}
 
 
-					texture.needsUpdate = true;
-
 					return texture;
 					return texture;
 
 
 				}
 				}
 
 
-				console.error( 'ColladaLoder: Undefined sampler', textureObject.id );
+				console.error( 'ColladaLoader: Undefined sampler', textureObject.id );
 
 
 				return null;
 				return null;
 
 
@@ -1527,6 +1529,7 @@ THREE.ColladaLoader.prototype = {
 		console.log( 'ColladaLoader: File version', version );
 		console.log( 'ColladaLoader: File version', version );
 
 
 		var asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );
 		var asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );
+		var textureLoader = new THREE.TextureLoader( this.manager ).setPath( resourceDirectory );
 
 
 		//
 		//