chciałbym załadować cube.obj
plik, który odwołuje się do wielu cube_*.mtl
plików, który z kolei obrazy użycie tekstury *.png
(all resources). Powodem załadowania wielu mtl zamiast jednego jest możliwość dynamicznego ładowania obiektów o tej samej geometrii, ale różnych materiałach.Jak załadować „.obj” z wielu plików „.mtl” w Three.js
nie mogłem znaleźć takich przykładów tak próbowałem mieszać przykłady w MultiMaterial dokumentacji i webgl_loader_obj_mtl ładując wszystkie MTL, tworząc MultiMaterial
i ładowanie obj:
var resources = 'cube/';
var materialsToLoad = [
'cube_red.mtl',
'cube_green.mtl',
'cube_blue.mtl'
];
var loadedMaterials = [];
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(resources);
for (var i = 0; i < materialsToLoad.length; i++) {
mtlLoader.load(materialsToLoad[i], function(materials) {
materials.preload();
loadedMaterials.push(materials);
});
}
var multi = new THREE.MultiMaterial(loadedMaterials);
var objLoader = new THREE.OBJLoader();
objLoader.setPath(resources);
objLoader.setMaterials(multi); // #1
objLoader.load('cube.obj', function (object) {
scene.add(object);
});
Ale to nie zadziała, to wyjątek wyrzucony:
Uncaught TypeError: this.materials.create is not a function
at THREE.OBJLoader.parse (OBJLoader.js:684)
at OBJLoader.js:50
at XMLHttpRequest.<anonymous> (three.min.js:619)
Co robię źle i jak to zrobić właściwie?