ThreeJS:运行时的材料更新



我正在将带有材质文件(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);
});

一旦对象已经在场景中,就不需要重新加载对象。只需找到材料,并更改其.map属性

var textureLoader = new THREE.TextureLoader();
var newTexture = textureLoader.load('./path/to/new/image.png');
object.material.map = newTexture;

可以使用内置的TextureLoader类来加载新纹理。

最新更新