我正在创建一个场景并使用布尔函数在我的墙上切出洞。然而,照明显示最终的形状已经弄乱了面孔。我希望表面看起来像一个实心件,而不是碎片化并向后显示照明。有谁知道我的几何可能出了什么问题?
布尔对象的代码如下:
//boolean subtract two shapes, convert meshes to bsps, subtract, then convert back to mesh
var booleanSubtract = function (Mesh1, Mesh2, material) {
//Mesh1 conversion
var mesh1BSP = new ThreeBSP( Mesh1 );
//Mesh2 conversion
var mesh2BSP = new ThreeBSP( Mesh2 );
var subtract_bsp = mesh1BSP.subtract( mesh2BSP );
var result = subtract_bsp.toMesh( material );
result.geometry.computeVertexNormals();
return result;
};
我在场景中有两盏灯:
var light = new THREE.DirectionalLight( 0xffffff, 0.75 );
light.position.set( 0, 0, 1 );
scene.add( light );
//create a point light
var pointLight = new THREE.PointLight(0xFFFFFF);
// set its position
pointLight.position.x = 10;
pointLight.position.y = 50;
pointLight.position.z = 130;
// add to the scene
scene.add(pointLight);
编辑:使用 WestLangley 的建议,我能够部分修复墙壁渲染。通过使用 material.wireframe=true; 我可以看到在布尔运算之后我的墙壁没有合并。有没有办法合并它们?