在外部加载的Collada文件中动态更改Three.js纹理

时间:2015-08-19 17:20:05

标签: javascript three.js

我正在使用three.js collada加载程序导入一个带有纹理(.png)图像的.dae文件。我需要使用新纹理覆盖.png文件,并使用导出为.png格式的canvas元素创建此纹理。如果我清除缓存,它将改变纹理(我将导出的“new”.png纹理命名为与.dae文件中引用的原始.png纹理相同的文件名)。

如何在不让用户清除缓存的情况下确保识别/渲染新纹理?示例:用户创建一个新纹理,并将其导出原始纹理,并在用户单击按钮以渲染框后重新渲染collada文件。

1 个答案:

答案 0 :(得分:2)

在内存中有Javascript Image对象后,无论源是什么,都可以通过.image属性将其分配给对象的材质纹理。你需要让THRE.js知道改变绑定。例如,如果您有一个名为img的新图像和一个名为mesh的网格,其中包含典型材质:

mesh.material.map.image = img;
mesh.material.map.needsUpdate = true;

应该做的伎俩。无需将DOM elemetn作为.png发送到磁盘,只需使用它即可。