Three.js: Como subtrair geometria?

Criado em 7 dez. 2011  ·  2Comentários  ·  Fonte: mrdoob/three.js

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

Question

Comentários muito úteis

Todos 2 comentários

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);
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Horray picture Horray  ·  3Comentários

fuzihaofzh picture fuzihaofzh  ·  3Comentários

donmccurdy picture donmccurdy  ·  3Comentários

konijn picture konijn  ·  3Comentários

Bandit picture Bandit  ·  3Comentários