Browse Source

Loader: Add `DEFAULT_MATERIAL_NAME`. (#26188)

* Default material name for 3MF and AMF loaders.

* Use default material name in more loaders.

* Remove material name overwrite after initialization.
Viktor Kovacs 2 years ago
parent
commit
39ab305a37

+ 1 - 1
examples/jsm/loaders/3DMLoader.js

@@ -224,7 +224,7 @@ class Rhino3dmLoader extends Loader {
 			return new MeshStandardMaterial( {
 				color: new Color( 1, 1, 1 ),
 				metalness: 0.8,
-				name: 'default',
+				name: Loader.DEFAULT_MATERIAL_NAME,
 				side: DoubleSide
 			} );
 

+ 5 - 1
examples/jsm/loaders/3MFLoader.js

@@ -1067,7 +1067,11 @@ class ThreeMFLoader extends Loader {
 			geometry.setIndex( new BufferAttribute( meshData[ 'triangles' ], 1 ) );
 			geometry.setAttribute( 'position', new BufferAttribute( meshData[ 'vertices' ], 3 ) );
 
-			const material = new MeshPhongMaterial( { color: 0xffffff, flatShading: true } );
+			const material = new MeshPhongMaterial( {
+				name: Loader.DEFAULT_MATERIAL_NAME,
+				color: 0xffffff,
+				flatShading: true
+			} );
 
 			const mesh = new Mesh( geometry, material );
 

+ 5 - 1
examples/jsm/loaders/AMFLoader.js

@@ -432,7 +432,11 @@ class AMFLoader extends Loader {
 		}
 
 		const sceneObject = new Group();
-		const defaultMaterial = new MeshPhongMaterial( { color: 0xaaaaff, flatShading: true } );
+		const defaultMaterial = new MeshPhongMaterial( {
+			name: Loader.DEFAULT_MATERIAL_NAME,
+			color: 0xaaaaff,
+			flatShading: true
+		} );
 
 		sceneObject.name = amfName;
 		sceneObject.userData.author = amfAuthor;

+ 4 - 1
examples/jsm/loaders/ColladaLoader.js

@@ -3710,7 +3710,10 @@ class ColladaLoader extends Loader {
 
 		}
 
-		const fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );
+		const fallbackMaterial = new MeshBasicMaterial( {
+			name: Loader.DEFAULT_MATERIAL_NAME,
+			color: 0xff00ff
+		} );
 
 		function resolveMaterialBinding( keys, instanceMaterials ) {
 

+ 9 - 2
examples/jsm/loaders/FBXLoader.js

@@ -1270,7 +1270,10 @@ class FBXTreeParser {
 
 		} else {
 
-			material = new MeshPhongMaterial( { color: 0xcccccc } );
+			material = new MeshPhongMaterial( { 
+				name: Loader.DEFAULT_MATERIAL_NAME,
+				color: 0xcccccc
+			} );
 			materials.push( material );
 
 		}
@@ -1311,7 +1314,11 @@ class FBXTreeParser {
 		}, null );
 
 		// FBX does not list materials for Nurbs lines, so we'll just put our own in here.
-		const material = new LineBasicMaterial( { color: 0x3300ff, linewidth: 1 } );
+		const material = new LineBasicMaterial( {
+			name: Loader.DEFAULT_MATERIAL_NAME,
+			color: 0x3300ff,
+			linewidth: 1
+		} );
 		return new Line( geometry, material );
 
 	}

+ 3 - 6
examples/jsm/loaders/LDrawLoader.js

@@ -1903,12 +1903,9 @@ class LDrawLoader extends Loader {
 		this.partsLibraryPath = '';
 
 		// Material assigned to not available colors for meshes and edges
-		this.missingColorMaterial = new MeshStandardMaterial( { color: 0xFF00FF, roughness: 0.3, metalness: 0 } );
-		this.missingColorMaterial.name = 'Missing material';
-		this.missingEdgeColorMaterial = new LineBasicMaterial( { color: 0xFF00FF } );
-		this.missingEdgeColorMaterial.name = 'Missing material - Edge';
-		this.missingConditionalEdgeColorMaterial = new LDrawConditionalLineMaterial( { fog: true, color: 0xFF00FF } );
-		this.missingConditionalEdgeColorMaterial.name = 'Missing material - Conditional Edge';
+		this.missingColorMaterial = new MeshStandardMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF, roughness: 0.3, metalness: 0 } );
+		this.missingEdgeColorMaterial = new LineBasicMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF } );
+		this.missingConditionalEdgeColorMaterial = new LDrawConditionalLineMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, fog: true, color: 0xFF00FF } );
 		this.missingColorMaterial.userData.edgeMaterial = this.missingEdgeColorMaterial;
 		this.missingEdgeColorMaterial.userData.conditionalEdgeMaterial = this.missingConditionalEdgeColorMaterial;
 

+ 16 - 4
examples/jsm/loaders/VRMLLoader.js

@@ -960,7 +960,10 @@ class VRMLLoader extends Loader {
 
 			// if the appearance field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)
 
-			let material = new MeshBasicMaterial( { color: 0x000000 } );
+			let material = new MeshBasicMaterial( { 
+				name: Loader.DEFAULT_MATERIAL_NAME,
+				color: 0x000000
+			} );
 			let geometry;
 
 			for ( let i = 0, l = fields.length; i < l; i ++ ) {
@@ -1007,7 +1010,10 @@ class VRMLLoader extends Loader {
 
 				if ( type === 'points' ) { // points
 
-					const pointsMaterial = new PointsMaterial( { color: 0xffffff } );
+					const pointsMaterial = new PointsMaterial( {
+						name: Loader.DEFAULT_MATERIAL_NAME,
+						color: 0xffffff
+					} );
 
 					if ( geometry.attributes.color !== undefined ) {
 
@@ -1029,7 +1035,10 @@ class VRMLLoader extends Loader {
 
 				} else if ( type === 'line' ) { // lines
 
-					const lineMaterial = new LineBasicMaterial( { color: 0xffffff } );
+					const lineMaterial = new LineBasicMaterial( {
+						name: Loader.DEFAULT_MATERIAL_NAME,
+						color: 0xffffff
+					} );
 
 					if ( geometry.attributes.color !== undefined ) {
 
@@ -1116,7 +1125,10 @@ class VRMLLoader extends Loader {
 
 							// if the material field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)
 
-							material = new MeshBasicMaterial( { color: 0x000000 } );
+							material = new MeshBasicMaterial( {
+								name: Loader.DEFAULT_MATERIAL_NAME,
+								color: 0x000000
+							} );
 
 						}
 

+ 2 - 0
src/loaders/Loader.js

@@ -67,4 +67,6 @@ class Loader {
 
 }
 
+Loader.DEFAULT_MATERIAL_NAME = '__DEFAULT';
+
 export { Loader };