2

各メッシュには 1 つのテクスチャがあるため、異なるジオメトリを持つ複数のメッシュを作成するループがあります。

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 つだけ作成できれば、より良い結果が得られると思います。しかし、メッシュごとに 1 つのジオメトリを作成し、各メッシュに異なるテクスチャを持たせる方法がわかりません。

4

1 に答える 1

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

于 2012-11-13T20:31:37.013 に答える