无法克隆()纹理

Lor*_* V. 5 webgl three.js

基本上,

这工作:

var expl1 = new THREE.ImageUtils.loadTexture( 'images/explodes/expl1.png' );
this.material = new THREE.MeshBasicMaterial({ map: expl1, transparent:true, blending:THREE.AdditiveBlending });
Run Code Online (Sandbox Code Playgroud)

这不......

var expl1 = new THREE.ImageUtils.loadTexture( 'images/explodes/expl1.png' );
this.material = new THREE.MeshBasicMaterial({ map: expl1.clone(), transparent:true, blending:THREE.AdditiveBlending });
Run Code Online (Sandbox Code Playgroud)

问题是,我有这个纹理的多个对象.我希望能够更改其中一个对象的纹理偏移,而不会更改其他对象的纹理偏移.这就是我需要克隆的原因,但克隆的纹理似乎是空的.

var expl1 = new THREE.ImageUtils.loadTexture( 'images/explodes/expl1.png' );
Run Code Online (Sandbox Code Playgroud)

这只在全局变量中加载一次.我每次创建一个新对象时都可以加载一个新纹理,但因为它是700KB,所以在加载图像时会产生延迟.

Wes*_*ley 17

编辑:THREE.ImageUtils.loadTexture()已被取代loader = new THREE.TextureLoader(); loader.load().


这可能是因为为您new THREE.TextureLoader().load()设置了needsUpdate标志,而克隆则没有.

相反,这样做

var texture2 = texture1.clone();
texture2.needsUpdate = true;
material = new THREE.MeshBasicMaterial( { map: texture2, ... } );
Run Code Online (Sandbox Code Playgroud)

three.js r.75