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;
}
Результаты вроде как неправильные. Я получаю плавающее значение, хорошо, но сравнивая очень маленький объект с большим объектом. Меньший может иметь большую поверхность с предоставленным кодом. Я проверил много разных объектов и получил нереальные значения, сравнивая их.
На самом деле объекты, имеющие самые большие грани, но являющиеся наименьшими в общей поверхности, по-видимому, имеют самые высокие значения в текущей версии кода.
Я надеюсь, что кто-то может взглянуть на код и увидеть, что не так. Очень ценится!