По примеру здесь:
http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/
И используя Three.js с https://github.com/chandlerprall/ThreeCSG, я пытаюсь для выполнения трехмерных логических операций над узлами модели. Например, если у меня есть стена с окном, я хочу сделать invert()
на ней, чтобы получить только окно.
У меня есть функция, которая возвращает все вершины полигонов узла, вот пример вершин объекта без отверстий https://pastebin.com/8dhYzPwE.
Я использую ThreeCSG следующим образом:
const geometryThree = new THREE.Geometry();
geometryThree.vertices.push(
...vertices
);
const geometryCsg = new ThreeBSP(geometryThree);
Но вот что я получаю в geometryCsg
:
"{
"matrix": {
"elements": {
"0": 1,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 1,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 1,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 1
}
},
"tree": {
"polygons": []
}
}"
Я думаю, это потому, что значение geometry.faces.length
равно 0.
Как я могу сделать массив вершин правильным Three.Geometry
, чтобы грани не были пустыми? Geometry.elementsNeedsUpdate не работает...
Есть ли пример, в котором многоугольники формы используются как массив Vector3 и преобразуются в csg?