2013-05-23 3 views
4

поясню,Не удается клонировать() Текстура

это работает:

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 }); 

Проблема заключается в том, у меня есть несколько объектов с этой текстурой , Я хочу иметь возможность изменять смещения текстуры одного из объектов, не изменяя другие. Вот почему мне нужен клоун, но клонированная текстура кажется пустой.

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

Это загружается только один раз в глобальную переменную. Я могу загружать новую текстуру каждый раз, когда я создаю новый объект, но поскольку это 700 КБ, он создает лаг при загрузке изображения.

ответ

14

EDIT: 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

+0

Да, это была проблема. Но похоже, что клонирование - это то же самое, что и загрузка новой текстуры, она все еще лагги. Хорошо, я придумаю что-нибудь. Спасибо, что помогли мне здесь. –

Смежные вопросы