8

基本的に、

これは機能します:

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

そして、これは...

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

問題は、このテクスチャを持つオブジェクトが複数あることです。他のオブジェクトも変更せずに、オブジェクトの 1 つのテクスチャ オフセットを変更できるようにしたいと考えています。そのため、クローンが必要ですが、クローンされたテクスチャは空のようです。

var expl1 = new THREE.ImageUtils.loadTexture( 'images/explodes/expl1.png' );

これは、グローバル変数に一度だけロードされます。新しいオブジェクトを作成するたびに新しいテクスチャをロードできましたが、700KB であるため、イメージのロード時に遅延が発生します。

4

1 に答える 1

19

編集: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, ... } );

three.js r.75

于 2013-05-23T06:46:43.493 に答える