Javascript ThreeJS:运行期间的材质更新
我正在将一个带有材质文件(MTL)的OBJ对象加载到场景中,效果非常好。MTL文件指向对象的JPG纹理,我在运行时对其进行了可视化修改 现在我想用新材质(修改的JPG)重新加载对象。我可以移除整个对象并将其添加到场景中,但就性能而言,这并不是最优的 有没有办法只重新渲染带有新纹理的对象或重新附加更新的MTLJavascript ThreeJS:运行期间的材质更新,javascript,three.js,3d,Javascript,Three.js,3d,我正在将一个带有材质文件(MTL)的OBJ对象加载到场景中,效果非常好。MTL文件指向对象的JPG纹理,我在运行时对其进行了可视化修改 现在我想用新材质(修改的JPG)重新加载对象。我可以移除整个对象并将其添加到场景中,但就性能而言,这并不是最优的 有没有办法只重新渲染带有新纹理的对象或重新附加更新的MTL mtlLoader.load("material.mtl", function (materials) { materials.preload(); objLoader.
mtlLoader.load("material.mtl", function (materials) {
materials.preload();
objLoader.setMaterials(materials);
objLoader.setPath("static/models/");
objLoader.load("object.obj", function (object) {
scene.add(object);
});
一旦对象已经在场景中,就不需要重新加载该对象。只要找到材料,然后
var textureLoader=new THREE.textureLoader();
var newTexture=textureLoader.load('./path/to/new/image.png');
object.material.map=newTexture;
您可以使用内置加载新纹理。到目前为止,这是可行的,但我遇到了一个问题,因为它会覆盖整个纹理。我有不同的模型(OBJ和MTL)以不同的方式共享相同的JPG纹理文件。材质文件和JPG保持不变,只是JPG会有视觉变化。有没有办法重新加载/刷新对象的材质?我不知道你想做什么。可以使用
object.material.property=newValue
更新对象的材质,也可以使用object.material=new THREE.MeshXXXMaterial()指定新材质代码>你选择的材料类型取决于你,有基本的、标准的、Phong的、卡通的等等……让我简化一下。我有一个3D obj模型,在我的本地主机网站上加载了一个材质文件和一个jpg纹理,可以正常工作。现在,我在Photoshop中将一个徽标添加到jpg纹理ie中,并将其保存在同一文件下。我现在如何更新模型并查看更新后的jpg纹理?我非常感谢您的反馈。快速提问,这可能会解决我的问题。如何在之后(即,在对象已加载到场景中之后)将材质(MTL)应用于对象?