ThreeJS: расчет площади трехмерного объекта (триангулированный)

Мне нужно рассчитать площадь / поверхность всего объекта в трехJS. Вот что у меня есть:

    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;
    }

Результаты вроде как неправильные. Я получаю плавающее значение, хорошо, но сравнивая очень маленький объект с большим объектом. Меньший может иметь большую поверхность с предоставленным кодом. Я проверил много разных объектов и получил нереальные значения, сравнивая их.

На самом деле объекты, имеющие самые большие грани, но являющиеся наименьшими в общей поверхности, по-видимому, имеют самые высокие значения в текущей версии кода.

Я надеюсь, что кто-то может взглянуть на код и увидеть, что не так. Очень ценится!

Ответы на вопрос(1)

Ваш ответ на вопрос