¿Hay alguna forma de restar geometrías?
Tengo el contorno de un edificio y el contorno de un patio interior. Extruí el contorno del edificio por la altura para crear un sólido para el edificio, pero ahora necesito quitar el patio del medio.
Gracias
He encontrado la respuesta, no estoy seguro de si es la mejor manera, pero funciona.
Agrego la geometría exterior en el sentido de las agujas del reloj y luego los bits para eliminar en el sentido contrario a las agujas del reloj a una ruta antes de convertirla en una forma para extruir.
var path = new THREE.Path();
// outer clockwise
path.moveTo(-10, 10);
path.lineTo(10, 10);
path.lineTo(10, -10);
path.lineTo(-10, -10);
path.lineTo(-10, 10);
// inner anti-clockwise
path.moveTo(-5, 5);
path.lineTo(-5, -5);
path.lineTo(-2, -5);
path.lineTo(-2, 5);
path.lineTo(-5, 5);
// inner anti-clockwise
path.moveTo(2, 5);
path.lineTo(2, -5);
path.lineTo(5, -5);
path.lineTo(5, 5);
path.lineTo(2, 5);
var height = 20;
var shapes = path.toShapes();
var solid = new THREE.ExtrudeGeometry(shapes, { amount: height, bevelEnabled: false });
var mesh = new THREE.Mesh(solid, materials['building']);
mesh.position.y = height;
mesh.rotation.x = 90 * Math.PI * 2 / 360;
scene.add(mesh);
También puedes usar esto:
http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/
Comentario más útil
También puedes usar esto:
http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/