2012-08-07 51 views
1

我需要添加到相同的场景几何体中多个体素(立方体等于),但每个都具有不同的纹理。具有不同纹理的多个体素。性能

我有超过500体素的性能严重错误。

这是我的代码:

texture = crearTextura(voxel.text,color,voxelSize); 
material = new THREE.MeshBasicMaterial({ map: texture });  
mesh = new THREE.Mesh(new THREE.CubeGeometry(voxelSize, voxelSize, voxelSize, 1, 1, 1,material),faceMaterial); 
scene.add(mesh); 

回答

0

最后我创建了一个geoemtry与所有多维数据集合并。

在此更改之前,我曾在多维数据集中用鼠标点击相交。

我tryed解决这个问题,但没有奏效:

代码添加几何合并和阵列的所有网:

var geometry = new THREE.Geometry(); 
for(var i = 0; i < voxels.length; i++){ 
    var voxel = voxels[i]; 
    color = voxel.color; 
    texture = textPlaneTexture(voxel.text,color,voxelSize); 
    material = new THREE.MeshBasicMaterial({ map: texture });    
    mesh = new THREE.Mesh(new THREE.CubeGeometry(voxelSize, voxelSize, voxelSize, 1, 1, 1, material)); 

    mesh.name = voxel.name; 
    mesh.position.x = voxel.x * voxelSize + offset_x; 
    mesh.position.y = voxel.y * voxelSize + offset_y; 
    mesh.position.z = voxel.z * voxelSize + offset_z; 

    // 
    objects.push(mesh); 

    THREE.GeometryUtils.merge(geometry, mesh); 
} 

//Add geometry to scene 
mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial()); 
scene.add(mesh);  
... 

鼠标双击事件

function onDocumentMouseDoubleClick(event) { 
    if (event.target instanceof HTMLCanvasElement) { 
    event.preventDefault(); 

    mouse2D.x = (event.clientX/widthChart) * 2 - 1; 
    mouse2D.y = - ((parseInt(event.clientY) - offset_mouse_y)/heightChart) * 2 + 1;  

    mouse3D = projector.unprojectVector(mouse2D.clone(), camera); 
      ray.direction = mouse3D.subSelf(camera.position).normalize(); 
    var intersects = ray.intersectObjects(objects); 

    if (intersects.length > 0) { 
     if ((intersects[ 0 ].object.name != 'undefined') && (intersects[ 0 ].object.name != '')) { 
     //Object clicked 
     }; 
    };  
    }; 
}; 
相关问题