After many problems, we wrote a small hack in ColladaLoader.js, taking the idea with @gaitat the witch basically replaces the old path with textures from images, passes some new ones in the array and uses regular expressions to parse xml for .png or .jpg under the image tag . Not sure if there is an easier way, but since support was limited, we had to come up with some kind of solution
function parse( doc, imageReplace, callBack, url ) { COLLADA = doc; callBack = callBack || readyCallbackFunc; if ( url !== undefined ) { var parts = url.split( '/' ); parts.pop(); baseUrl = ( parts.length < 1 ? '.' : parts.join( '/' ) ) + '/'; } parseAsset(); setUpConversion(); images = parseLib( "//dae:library_images/dae:image", _Image, "image" ); for(var i in imageReplace) { var iR = imageReplace[i]; for(var i in images) { var image = images[i]; var patt=new RegExp('[a-zA-Z0-9\-\_]*\/'+iR.name,'g'); //if(image.id==iR.id) if(patt.test(image.init_from)) image.init_from = iR.new_image; }//for } materials = parseLib( "//dae:library_materials/dae:material", Material, "material" ); effects = parseLib( "//dae:library_effects/dae:effect", Effect, "effect" ); geometries = parseLib( "//dae:library_geometries/dae:geometry", Geometry, "geometry" ); cameras = parseLib( ".//dae:library_cameras/dae:camera", Camera, "camera" ); controllers = parseLib( "//dae:library_controllers/dae:controller", Controller, "controller" ); animations = parseLib( "//dae:library_animations/dae:animation", Animation, "animation" ); visualScenes = parseLib( ".//dae:library_visual_scenes/dae:visual_scene", VisualScene, "visual_scene" ); morphs = []; skins = []; daeScene = parseScene(); scene = new THREE.Object3D(); for ( var i = 0; i < daeScene.nodes.length; i ++ ) { scene.add( createSceneGraph( daeScene.nodes[ i ] ) ); } // unit conversion scene.position.multiplyScalar(colladaUnit); scene.scale.multiplyScalar(colladaUnit); createAnimations(); var result = { scene: scene, morphs: morphs, skins: skins, animations: animData, dae: { images: images, materials: materials, cameras: cameras, effects: effects, geometries: geometries, controllers: controllers, animations: animations, visualScenes: visualScenes, scene: daeScene } }; if ( callBack ) { callBack( result ); } return result; };
psychok7
source share