ThreeJS: 3D-Objektflächenberechnung (Trianguliert)

Ich muss die Fläche / Oberfläche eines ganzen Objekts in dreiJS berechnen. Das habe ich:

    var _len = object.geometry.faces.length,
        _area = 0.0;

    if (!_len) return 0.0;

    for (var i = 0; i < _len; i++) {
        var va = object.geometry.vertices[object.geometry.faces[i].a];
        var vb = object.geometry.vertices[object.geometry.faces[i].b];
        var vc = object.geometry.vertices[object.geometry.faces[i].c];

        var ab = vb.clone().sub(va);
        var ac = vc.clone().sub(va);

        var cross = new THREE.Vector3();
        cross.crossVectors( ab, ac );

        _area += cross.lengthSq() / 2;
    }

Die Ergebnisse sind irgendwie falsch. Ich erhalte einen schwebenden Wert, aber ich vergleiche ein sehr kleines Objekt mit einem großen Objekt. Der kleinere könnte mit dem bereitgestellten Code eine größere Oberfläche haben. Ich habe viele verschiedene Objekte überprüft und beim Vergleich unrealistische Werte erhalten.

Tatsächlich scheinen die Objekte mit den größten Flächen, aber der kleinsten Gesamtfläche, mit der aktuellen Version des Codes die höchsten Werte zu haben.

Ich hoffe, jemand konnte sich den Code ansehen und sehen, was falsch ist. Sehr geschätzt!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage