我需要通过更改纹理中图像的来源来更新项目中网格的纹理。代码如下:
mesh.material.map.image.src= "path/to/image";
mesh.material.map.texture.needsUpdate = true;
图像已完全加载。它适用于chrome,但不适用于firefox,浏览器不会立即呈现新纹理,我通过以下方式修复它:
setTimeout( function(){ mesh.material.map.texture.needsUpdate = true; }, 100);
我不知道为什么它不能立即在firefox中更新,有没有人遇到过这个问题?
答案 0 :(得分:1)
由于超时修复了问题,在纹理加载
之前,needsUpdate标志被设置回false你应该使用加载器来获取纹理
var texture = THREE.ImageUtils.loadTexture("path/to/image");
它还有一个回调加载纹理时会发生什么
var texture = THREE.ImageUtils.loadTexture("path/to/image", THREE.UVMapping, onLoadCallback);
回调将纹理加载为参数,因此您可以在加载后将其添加到材质,但加载器将纹理needsUpdate标志设置为true本身如此简单
var texture = THREE.ImageUtils.loadTexture("path/to/image");
mesh.material.map = texture;
应该足够了