diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index dfdf43e94bd9c5a75f8f2882f0a2fff3c3bb3eea..260b20b7a60185f57aa08157da20943906090065 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1434,33 +1434,35 @@ function WebGLRenderer( parameters ) { var groups = geometry.groups; var materials = material.materials; - if ( groups.length === 0 ) { + if ( groups.length > 0 ) { - console.warn( 'THREE.WebGLRenderer: MultiMaterial can not be used without groups.' ); - - } + // push a render item for each group of the geometry - // push a render item for each group of the geometry + for ( var i = 0, l = groups.length; i < l; i ++ ) { - for ( var i = 0, l = groups.length; i < l; i ++ ) { + var group = groups[ i ]; + var groupMaterial = materials[ group.materialIndex ]; - var group = groups[ i ]; - var groupMaterial = materials[ group.materialIndex ]; + if ( groupMaterial === undefined ) { - if ( groupMaterial === undefined ) { + console.warn( 'THREE.WebGLRenderer: MultiMaterial has insufficient amount of materials for geometry. %i material(s) expected but only %i provided.', groups.length, materials.length ); - console.warn( 'THREE.WebGLRenderer: MultiMaterial has insufficient amount of materials for geometry. %i material(s) expected but only %i provided.', groups.length, materials.length ); + } else { - } else { + if ( groupMaterial.visible === true ) { - if ( groupMaterial.visible === true ) { + pushRenderItem( object, geometry, groupMaterial, _vector3.z, group ); - pushRenderItem( object, geometry, groupMaterial, _vector3.z, group ); + } } } + } else { + + console.warn( 'THREE.WebGLRenderer: MultiMaterial can not be used without groups.' ); + } } else {