Existe alguma maneira de subtrair geometrias?
Tenho o contorno de um edifício e o contorno de um pátio interno. Expulsei o contorno do edifício pela altura para criar um sólido para o edifício, mas agora preciso remover o pátio do meio.
obrigado
Eu descobri a resposta - não tenho certeza se é a melhor maneira, mas funciona.
Eu adiciono a geometria externa no sentido horário e, em seguida, os bits para remover no sentido anti-horário a um caminho antes de converter em uma forma para extrusão.
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);
Você também pode usar isto:
http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/
Comentários muito úteis
Você também pode usar isto:
http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/