浏览代码

Merge pull request #17711 from kaisalmen/OBJLoader2_17615

ObjLoader2Parser materials are not applied in worker
Mr.doob 5 年之前
父节点
当前提交
bf794d637f

+ 1 - 1
examples/jsm/loaders/OBJLoader2.d.ts

@@ -30,7 +30,7 @@ export class OBJLoader2 extends Loader {
 	setPath( path: string ): this;
 	setPath( path: string ): this;
 	setResourcePath( path: string ): this;
 	setResourcePath( path: string ): this;
 	setBaseObject3d( baseObject3d: Object3D ): this;
 	setBaseObject3d( baseObject3d: Object3D ): this;
-	addMaterials( materials: object ): this;
+	addMaterials( materials: object, overrideExisting: boolean ): this;
 
 
 	setCallbackOnAssetAvailable( onAssetAvailable: Function ): this;
 	setCallbackOnAssetAvailable( onAssetAvailable: Function ): this;
 	setCallbackOnProgress( onProgress: Function ): this;
 	setCallbackOnProgress( onProgress: Function ): this;

+ 4 - 3
examples/jsm/loaders/OBJLoader2.js

@@ -43,7 +43,7 @@ const OBJLoader2 = function ( manager ) {
 
 
 };
 };
 
 
-OBJLoader2.OBJLOADER2_VERSION = '3.1.0';
+OBJLoader2.OBJLOADER2_VERSION = '3.1.1';
 console.info( 'Using OBJLoader2 version: ' + OBJLoader2.OBJLOADER2_VERSION );
 console.info( 'Using OBJLoader2 version: ' + OBJLoader2.OBJLOADER2_VERSION );
 
 
 
 
@@ -136,11 +136,12 @@ OBJLoader2.prototype = Object.assign( Object.create( Loader.prototype ), {
 	 * Add materials as associated array.
 	 * Add materials as associated array.
 	 *
 	 *
 	 * @param {Object} materials Object with named {@link Material}
 	 * @param {Object} materials Object with named {@link Material}
+	 * @param overrideExisting boolean Override existing material
 	 * @return {OBJLoader2}
 	 * @return {OBJLoader2}
 	 */
 	 */
-	addMaterials: function ( materials ) {
+	addMaterials: function ( materials, overrideExisting ) {
 
 
-		this.materialHandler.addMaterials( materials );
+		this.materialHandler.addMaterials( materials, overrideExisting );
 		return this;
 		return this;
 
 
 	},
 	},

+ 3 - 3
examples/jsm/loaders/OBJLoader2Parallel.js

@@ -40,7 +40,7 @@ const OBJLoader2Parallel = function ( manager ) {
 
 
 };
 };
 
 
-OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION = '3.1.0';
+OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION = '3.1.1';
 console.info( 'Using OBJLoader2Parallel version: ' + OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION );
 console.info( 'Using OBJLoader2Parallel version: ' + OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION );
 
 
 
 
@@ -92,7 +92,7 @@ OBJLoader2Parallel.prototype = Object.assign( Object.create( OBJLoader2.prototyp
 		let codeBuilderInstructions = new CodeBuilderInstructions( true, true, this.preferJsmWorker );
 		let codeBuilderInstructions = new CodeBuilderInstructions( true, true, this.preferJsmWorker );
 		if ( codeBuilderInstructions.isSupportsJsmWorker() ) {
 		if ( codeBuilderInstructions.isSupportsJsmWorker() ) {
 
 
-			codeBuilderInstructions.setJsmWorkerFile( '../../src/loaders/worker/parallel/jsm/OBJLoader2Worker.js' );
+			codeBuilderInstructions.setJsmWorkerFile( '../examples/loaders/jsm/obj2/worker/parallel/jsm/OBJLoader2Worker.js' );
 
 
 		}
 		}
 		if ( codeBuilderInstructions.isSupportsStandardWorker() ) {
 		if ( codeBuilderInstructions.isSupportsStandardWorker() ) {
@@ -189,8 +189,8 @@ OBJLoader2Parallel.prototype = Object.assign( Object.create( OBJLoader2.prototyp
 						disregardNormals: this.parser.disregardNormals,
 						disregardNormals: this.parser.disregardNormals,
 						materialPerSmoothingGroup: this.parser.materialPerSmoothingGroup,
 						materialPerSmoothingGroup: this.parser.materialPerSmoothingGroup,
 						useOAsMesh: this.parser.useOAsMesh,
 						useOAsMesh: this.parser.useOAsMesh,
+						materials: this.materialHandler.getMaterialsJSON()
 					},
 					},
-					materials: this.materialHandler.getMaterialsJSON(),
 					data: {
 					data: {
 						input: content,
 						input: content,
 						options: null
 						options: null

+ 1 - 1
examples/jsm/loaders/obj2/shared/MaterialHandler.d.ts

@@ -15,7 +15,7 @@ export class MaterialHandler {
 	materials: object;
 	materials: object;
 
 
 	createDefaultMaterials( overrideExisting: boolean ): void;
 	createDefaultMaterials( overrideExisting: boolean ): void;
-	addMaterials( materials: object, overrideExisting: boolean, newMaterials: object ): object;
+	addMaterials( materials: object, overrideExisting: boolean, newMaterials?: object ): object;
 	addPayloadMaterials( materialPayload: object ): object;
 	addPayloadMaterials( materialPayload: object ): object;
 	setLogging( enabled: boolean, debug: boolean ): void;
 	setLogging( enabled: boolean, debug: boolean ): void;
 	getMaterials(): object;
 	getMaterials(): object;

+ 2 - 3
examples/jsm/loaders/obj2/worker/parallel/WorkerRunner.js

@@ -49,9 +49,8 @@ DefaultWorkerPayloadHandler.prototype = {
 				parser.setLogging( this.logging.enabled, this.logging.debug );
 				parser.setLogging( this.logging.enabled, this.logging.debug );
 
 
 			}
 			}
-			ObjectManipulator.applyProperties( parser, payload.params );
-			ObjectManipulator.applyProperties( parser, payload.materials );
-			ObjectManipulator.applyProperties( parser, callbacks );
+			ObjectManipulator.applyProperties( parser, payload.params, false );
+			ObjectManipulator.applyProperties( parser, callbacks, false );
 
 
 			let arraybuffer;
 			let arraybuffer;
 			if ( payload.params && payload.params.index !== undefined && payload.params.index !== null ) {
 			if ( payload.params && payload.params.index !== undefined && payload.params.index !== null ) {

+ 1 - 1
examples/webgl_loader_obj2.html

@@ -130,7 +130,7 @@
 					let onLoadMtl = function ( mtlParseResult ) {
 					let onLoadMtl = function ( mtlParseResult ) {
 						objLoader2.setModelName( modelName );
 						objLoader2.setModelName( modelName );
 						objLoader2.setLogging( true, true );
 						objLoader2.setLogging( true, true );
-						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ) );
+						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ), true );
 						objLoader2.load( 'models/obj/female02/female02.obj', callbackOnLoad, null, null, null );
 						objLoader2.load( 'models/obj/female02/female02.obj', callbackOnLoad, null, null, null );
 					};
 					};
 					let mtlLoader = new MTLLoader();
 					let mtlLoader = new MTLLoader();

+ 9 - 4
examples/webgl_loader_obj2_options.html

@@ -141,7 +141,7 @@
 
 
 					let scope = this;
 					let scope = this;
 					function onLoadMtl ( mtlParseResult ) {
 					function onLoadMtl ( mtlParseResult ) {
-						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ) );
+						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ), true );
 
 
 						let fileLoader = new THREE.FileLoader();
 						let fileLoader = new THREE.FileLoader();
 						fileLoader.setPath( '' );
 						fileLoader.setPath( '' );
@@ -173,9 +173,14 @@
 						scope._reportProgress( { detail: { text: 'Loading of ' + modelName + 'completed: ' + message } } );
 						scope._reportProgress( { detail: { text: 'Loading of ' + modelName + 'completed: ' + message } } );
 					}
 					}
 
 
+					let materials = {
+						tester: new THREE.MeshStandardMaterial();
+					};
+
 					let objLoader2Parallel = new OBJLoader2Parallel()
 					let objLoader2Parallel = new OBJLoader2Parallel()
 						.setModelName( modelName )
 						.setModelName( modelName )
-						.setCallbackOnLoad( callbackOnLoad );
+						.setCallbackOnLoad( callbackOnLoad )
+						.addMaterials( materials, true );
 
 
 					let fileLoader = new THREE.FileLoader();
 					let fileLoader = new THREE.FileLoader();
 					fileLoader.setPath( '' );
 					fileLoader.setPath( '' );
@@ -207,7 +212,7 @@
 					}
 					}
 
 
 					function onLoadMtl ( mtlParseResult ) {
 					function onLoadMtl ( mtlParseResult ) {
-						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ) );
+						objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ), true );
 						objLoader2.load( 'models/obj/male02/male02.obj', callbackOnLoad, null, null, null );
 						objLoader2.load( 'models/obj/male02/male02.obj', callbackOnLoad, null, null, null );
 					}
 					}
 
 
@@ -235,7 +240,7 @@
 						scope._reportProgress( { detail: { text: 'Loading of ' + modelName + 'completed: ' + message } } );
 						scope._reportProgress( { detail: { text: 'Loading of ' + modelName + 'completed: ' + message } } );
 					}
 					}
 					function onLoadMtl ( mtlParseResult ) {
 					function onLoadMtl ( mtlParseResult ) {
-						objLoader2Parallel.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ) );
+						objLoader2Parallel.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ), true );
 						objLoader2Parallel.load( 'models/obj/walt/WaltHead.obj', callbackOnLoad );
 						objLoader2Parallel.load( 'models/obj/walt/WaltHead.obj', callbackOnLoad );
 					}
 					}