シーンを作成しています & ブール関数を使用して壁に穴を開けました。ただし、照明により、結果として得られる形状の顔が台無しになっていることがわかります。断片化して照明を後方に表示するのではなく、表面を 1 つの固体のように見せたいと考えています。私のジオメトリで何がうまくいかないのか誰か知っていますか?
オブジェクトをブーリアン化するコードは次のとおりです。
//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;
};
シーンには 2 つのライトがあります。
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; を使用して。ブール演算の後、壁の面が結合されていないことがわかります。それらをマージする方法はありますか?