From 86700091e48ed52e23a6e3ede8ba4e75c932d348 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Mon, 22 Jul 2013 13:07:10 +0200 Subject: [PATCH] MaterialLoader/MaterialExporter: Added blending and refactoring. --- examples/js/exporters/MaterialExporter.js | 5 ++ src/loaders/MaterialLoader.js | 84 +++-------------------- 2 files changed, 15 insertions(+), 74 deletions(-) diff --git a/examples/js/exporters/MaterialExporter.js b/examples/js/exporters/MaterialExporter.js index 8dd785042d..530b22825a 100644 --- a/examples/js/exporters/MaterialExporter.js +++ b/examples/js/exporters/MaterialExporter.js @@ -27,6 +27,7 @@ THREE.MaterialExporter.prototype = { output.type = 'MeshBasicMaterial'; output.color = material.color.getHex(); if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors; + if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending; output.opacity = material.opacity; output.transparent = material.transparent; output.wireframe = material.wireframe; @@ -38,6 +39,7 @@ THREE.MaterialExporter.prototype = { output.ambient = material.ambient.getHex(); output.emissive = material.emissive.getHex(); if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors; + if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending; output.opacity = material.opacity; output.transparent = material.transparent; output.wireframe = material.wireframe; @@ -51,6 +53,7 @@ THREE.MaterialExporter.prototype = { output.specular = material.specular.getHex(); output.shininess = material.shininess; if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors; + if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending; output.opacity = material.opacity; output.transparent = material.transparent; output.wireframe = material.wireframe; @@ -58,6 +61,7 @@ THREE.MaterialExporter.prototype = { } else if ( material instanceof THREE.MeshNormalMaterial ) { output.type = 'MeshNormalMaterial'; + if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending; output.opacity = material.opacity; output.transparent = material.transparent; output.wireframe = material.wireframe; @@ -65,6 +69,7 @@ THREE.MaterialExporter.prototype = { } else if ( material instanceof THREE.MeshDepthMaterial ) { output.type = 'MeshDepthMaterial'; + if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending; output.opacity = material.opacity; output.transparent = material.transparent; output.wireframe = material.wireframe; diff --git a/src/loaders/MaterialLoader.js b/src/loaders/MaterialLoader.js index ffa10cadd9..33e46f12de 100644 --- a/src/loaders/MaterialLoader.js +++ b/src/loaders/MaterialLoader.js @@ -34,82 +34,18 @@ THREE.MaterialLoader.prototype = { parse: function ( json ) { - var material; - - switch ( json.type ) { - - case 'MeshBasicMaterial': - - material = new THREE.MeshBasicMaterial( { - - color: json.color, - opacity: json.opacity, - transparent: json.transparent, - wireframe: json.wireframe - - } ); - - break; - - case 'MeshLambertMaterial': - - material = new THREE.MeshLambertMaterial( { - - color: json.color, - ambient: json.ambient, - emissive: json.emissive, - opacity: json.opacity, - transparent: json.transparent, - wireframe: json.wireframe - - } ); - - break; - - case 'MeshPhongMaterial': - - material = new THREE.MeshPhongMaterial( { - - color: json.color, - ambient: json.ambient, - emissive: json.emissive, - specular: json.specular, - shininess: json.shininess, - opacity: json.opacity, - transparent: json.transparent, - wireframe: json.wireframe - - } ); - - break; - - case 'MeshNormalMaterial': - - material = new THREE.MeshNormalMaterial( { - - opacity: json.opacity, - transparent: json.transparent, - wireframe: json.wireframe - - } ); - - break; - - case 'MeshDepthMaterial': - - material = new THREE.MeshDepthMaterial( { - - opacity: json.opacity, - transparent: json.transparent, - wireframe: json.wireframe - - } ); - - break; - - } + var material = new THREE[ json.type ]; + if ( json.color !== undefined ) material.color.setHex( json.color ); + if ( json.ambient !== undefined ) material.ambient.setHex( json.ambient ); + if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); + if ( json.specular !== undefined ) material.specular.setHex( json.specular ); + if ( json.shininess !== undefined ) material.shininess = json.shininess; if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; + if ( json.blending !== undefined ) material.blending = json.blending; + if ( json.opacity !== undefined ) material.opacity = json.opacity; + if ( json.transparent !== undefined ) material.transparent = json.transparent; + if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; return material; -- GitLab