具有一个几何和不同纹理的多个网格

时间:2012-11-13 19:21:56

标签: geometry textures three.js mesh

我有一个循环,我创建了一个具有不同几何形状的多个网格,因为每个网格都有一个纹理。

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

我遇到了性能问题,我认为如果我只能创建一个几何体,我会得到更好的效果。但我不知道如何为每个网格创建一个几何体并使每个网格具有不同的纹理。

1 个答案:

答案 0 :(得分:0)

你的网格都可以像这样共享一个几何体:

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;

three.js r.52