ファイルを参照するファイルを読み込み、テクスチャイメージ*.png
(all resources)を使用したいとします。 1つではなく複数のmtlをロードする理由は、同じジオメトリで異なる材料を動的にロードできることです。Three.jsに複数の '.mtl'ファイルを含む '.obj'をロードする方法
私は、このような例を見つけることができませんでしたが、私はMultiMaterial
を作成し、すべてのMTLのをロードすることによってMultiMaterialドキュメントとwebgl_loader_obj_mtlに例をミックスしようとした、およびロード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);
});
しかし、これは動作しません、例外はあります投げられた:
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)
私は間違っていますか、正しく行う方法は?