diff --git a/src/materials/MeshFaceMaterial.js b/src/materials/MeshFaceMaterial.js index 1ece481c643f66cffb95d2dc3c1a8faa3b5701ef..030ce51164c5ddb48c652d29f8adbcb537f7e1f6 100644 --- a/src/materials/MeshFaceMaterial.js +++ b/src/materials/MeshFaceMaterial.js @@ -2,7 +2,12 @@ * @author mrdoob / http://mrdoob.com/ */ -THREE.MeshFaceMaterial = function () {}; +THREE.MeshFaceMaterial = function (materials) { + + this.useGeometryMaterial = !materials; + this.materials = materials !== undefined ? materials : []; + +}; THREE.MeshFaceMaterial.prototype.clone = function () { diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 9dc0e580d16f26502447c490c0674029880ac0ab..bd8668985fd4e319382bece2f9e7b3e7d3e99b40 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -894,9 +894,17 @@ THREE.WebGLRenderer = function ( parameters ) { return object.material; - } else if ( geometryGroup.materialIndex >= 0 ) { + } else if ( geometryGroup.materialIndex >= 0 ) { // what does this line prevent?? - return object.geometry.materials[ geometryGroup.materialIndex ]; + if (object.material instanceof THREE.MeshFaceMaterial && !object.material.useGeometryMaterial){ + + return object.material.materials[ geometryGroup.materialIndex ]; + + } else { + + return object.geometry.materials[ geometryGroup.materialIndex ]; + + } } @@ -4159,9 +4167,16 @@ THREE.WebGLRenderer = function ( parameters ) { materialIndex = buffer.materialIndex; if ( materialIndex >= 0 ) { - - material = object.geometry.materials[ materialIndex ]; - + + if (meshMaterial.useGeometryMaterial){ + + material = object.geometry.materials[ materialIndex ]; + + } else { + + material = meshMaterial.materials[ materialIndex ]; + + } if ( material.transparent ) { globject.transparent = material;