我正在将带有材质文件 (MTL) 的 OBJ 对象加载到场景中,效果很好。 MTL 文件指向对象的 JPG 纹理,我在运行时对其进行了可视化修改。
现在我想用新材料(修改后的 JPG)重新加载对象。我可以移除整个对象并将其添加到场景中,但这在性能方面并不是最佳的。
有没有办法只重新渲染具有新纹理的对象或重新附加更新的 MTL?
mtlLoader.load("material.mtl", function (materials) {
materials.preload();
objLoader.setMaterials(materials);
objLoader.setPath("static/models/");
objLoader.load("object.obj", function (object) {
scene.add(object);
});
答案 0 :(得分:1)
一旦对象已经在您的场景中,您就不需要重新加载它。只需找到材料,然后change its .map property
var textureLoader = new THREE.TextureLoader();
var newTexture = textureLoader.load('./path/to/new/image.png');
object.material.map = newTexture;
您可以使用内置的 TextureLoader
class 加载新纹理。