diff --git a/src/extras/loaders/ColladaLoader.js b/src/extras/loaders/ColladaLoader.js index 18b1d98a07cf8e4fca197e5b962b9e5559c670c8..1aa5f22231cba33492cd913b32540c709ef42f99 100644 --- a/src/extras/loaders/ColladaLoader.js +++ b/src/extras/loaders/ColladaLoader.js @@ -594,6 +594,7 @@ THREE.ColladaLoader = function () { var instance_materials = instance_geometry.instance_material; var geometry = geometries[instance_geometry.url]; var used_materials = {}; + var used_materials_array = []; var num_materials = 0; var first_material; @@ -619,7 +620,8 @@ THREE.ColladaLoader = function () { var shader = effects[effect_id].shader; shader.material.opacity = !shader.material.opacity ? 1 : shader.material.opacity; - used_materials[inst_material.symbol] = shader.material; + used_materials[inst_material.symbol] = num_materials; + used_materials_array.push(shader.material) first_material = shader.material; num_materials ++; @@ -634,11 +636,12 @@ THREE.ColladaLoader = function () { if ( num_materials > 1 ) { material = new THREE.MeshFaceMaterial(); - + geom.materials = used_materials_array; + for ( j = 0; j < geom.faces.length; j ++ ) { var face = geom.faces[ j ]; - face.materials = [ used_materials[ face.daeMaterial ] ]; + face.materialIndex = used_materials[ face.daeMaterial ] }