Несколько сеток с одной геометрией и разными текстурами

У меня есть цикл, в котором я создаю несколько мешей с разной геометрией, потому что каждый меш имеет одну текстуру.

for( var i = 0; i < voxels.length; i++ ){
  texture = almacen.textPlaneTexture(voxel.texto,color,voxelSize);
  material = new THREE.MeshBasicMaterial({ map: texture });                       
  object = new THREE.Mesh(new THREE.CubeGeometry(voxelSize, voxelSize, voxelSize, 1, 1, 1, new THREE.MeshBasicMaterial() ), material);
}

У меня проблема с производительностью, и я думаю, что если я смогу создать только одну геометрию, у меня будут лучшие результаты. Но я не знаю, как мне создать одну геометрию для каждой сетки и иметь каждую сетку с другой текстурой.


person user1821834    schedule 13.11.2012    source источник
comment
Я пытаюсь использовать уникальную геометрию, но не знаю, как обновить текстуру для каждой сетки.   -  person user1821834    schedule 14.11.2012


Ответы (1)


Все ваши сетки могут иметь общую геометрию, например:

var geometry = new THREE.CubeGeometry( 10, 10, 10 );

for( var i = 0; i < N; i++ ) {

    texture = new THREE.Texture( ... );

    material = new THREE.MeshBasicMaterial( { map: texture } );   

    mesh = new THREE.Mesh( geometry, material );

    scene.add( mesh );

}

Затем, если вы хотите изменить текстуру, вы делаете что-то вроде этого:

var texture = new THREE.Texture( ... );
texture.needsUpdate = true;

mesh.material.map = texture;

три.js р.52

person WestLangley    schedule 13.11.2012