Modelos Three.js / 3D - calculando poucos volumes de objeto

Trabalho em um projeto no Three.js e devo resolver um problema o mais rápido possível. Preciso calcular alguns volumes de um objeto 3D.

Primeiro o que eu preciso é exatamente o mesmo que aqui:Como calcular o volume de um objeto de malha 3D cuja superfície é composta por triângulos

E eu calculo da mesma maneira. Este é um volume inteiro do objeto.

Isso é suficiente se o objeto não precisar de um material adicional quando ele entrar na impressão 3D. Por exemplo, se for um copo (um cilindro aberto), preciso calcular um volume de material adicional, que será usado na impressão deste modelo. Esse material estará "dentro" do vidro e impedirá que um piso de vidro caia dentro do modelo.

Não sei como calcular isso, acho muito menos conhecimento de matemática. Existe uma maneira de calcular isso? Ou talvez exista uma maneira de calcular um "volume de malha fechada", mesmo quando este é aberto (como vidro)?

Edição: Eu não tenho um modelo de vidro, mas eu tenho um modelo de uma caixa. A caixa será impressa com o lado aberto na parte inferior. Eu preciso conhecer o volume "interno".

Desculpe pelo meu inglês, espero que seja compreensível.

Aqui está como eu calculo o volume do objeto (exatamente como no link no 1º post):

function volumeOfT(p1, p2, p3){
    var v321 = p3.x*p2.y*p1.z;
    var v231 = p2.x*p3.y*p1.z;
    var v312 = p3.x*p1.y*p2.z;
    var v132 = p1.x*p3.y*p2.z;
    var v213 = p2.x*p1.y*p3.z;
    var v123 = p1.x*p2.y*p3.z;
    return (-v321 + v231 + v312 - v132 - v213 + v123)/6.0;
}

function calculateVolume(object){
    var volumes = 0.0;

    for(var i = 0; i < object.geometry.faces.length; i++){
        var Pi = object.geometry.faces[i].a;
        var Qi = object.geometry.faces[i].b;
        var Ri = object.geometry.faces[i].c;

        var P = new THREE.Vector3(object.geometry.vertices[Pi].x, object.geometry.vertices[Pi].y, object.geometry.vertices[Pi].z);
        var Q = new THREE.Vector3(object.geometry.vertices[Qi].x, object.geometry.vertices[Qi].y, object.geometry.vertices[Qi].z);
        var R = new THREE.Vector3(object.geometry.vertices[Ri].x, object.geometry.vertices[Ri].y, object.geometry.vertices[Ri].z);
        volumes += volumeOfT(P, Q, R);
    }

    loadedObjectVolume = Math.abs(volumes);
}

Eu verifiquei em outro software e o volume do objeto está correto.

Aqui está como eu tentei criar um ConvexGeometry:

var geometry = new THREE.STLLoader().parse( contents );
geometry.sourceType = "stl";
geometry.sourceFile = file.name;

geometry.computeFaceNormals();
geometry.computeVertexNormals();

var convexGeometry = THREE.ConvexGeometry(geometry.vertices);

var material = new THREE.MeshLambertMaterial({
    color: 0xff0000,
    emissive: 0x000000,
    shading: THREE.FlatShading
});

var mesh = new THREE.Mesh( geometry, material );

Conectadosvar convexGeometry = THREE.ConvexGeometry(geometry.vertices); navegador trava. Somente modelos com vértices baixas podem passar por isso (cubo por exemplo).

questionAnswers(0)

yourAnswerToTheQuestion