Я загружаю obj & файл mtl с помощью OBJMTLLoader. В объекте есть несколько материалов. Я хочу применить текстуру к определенному материалу внутри объекта.Три js, загрузка текстуры только для определенного mtl
Например. У меня есть объект Bag, и у него есть Handle, Brand name, Wheels как другой материал. Я хочу добавить разные текстуры каждому из них. Текстуры не будут присутствовать в материальном файле. Я хочу добавить его только с помощью кода.
<pre>
var loader = new THREE.OBJMTLLoader();
loader.load('obj/Test.obj', 'obj/Test.mtl', function (object) {
var tex = new THREE.MeshLambertMaterial({map:THREE.ImageUtils.loadTexture( 'obj/texture.png')});
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
// apply custom material
child.material = tex;
// enable casting shadows
child.castShadow = true;
child.receiveShadow = true;
}
});
</pre>
Чтобы сделать это, я бы сначала загрузить текстуру, а затем модель (т.е. поставить функцию loader.load в обратный вызов loadTexture). Также вам нужен тест (ваш код будет применяться ко всем сеткам). Но для уникального файла я бы просто добавил текстуру в .MTL (просто добавьте «map_Ka path/textureimage.jpg» в определение материала), по крайней мере, если мне не нужно управлять параметрами wrap ... – jeum