基本上,
这工作:
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