我想知道在给定三个.js中的3D点阵列的情况下,生成自定义3D多边形的最佳方法是什么。它是一个没有孔的简单多边形。这些点是有序的,因此它们代表相邻的顶点。I can do it in 2D, but I don't want the vertices to be coplanar. 谢谢你的帮助!
答案 0 :(得分:1)
这里的主要问题是如何从一堆点创建3D网格。换句话说:你需要弄清楚应该连接哪个顶点以形成一个三角形。
这是一个令人惊讶的复杂事情(好吧,至少我很惊讶)并且有大量科学论文,图书馆等等。
然而,在你的情况下,它有点简单,因为你已经大致知道顶点应该如何连接。我建议您查看earcut-library或libtess.js,这两者都应该能够创建您需要的三角测量。
完成后,您可以大致按照@lior-trau's建议,了解如何根据结果创建几何体。
答案 1 :(得分:0)
var geo = new THREE.Geometry();
var mat = new THREE.MeshBasicMaterial();
var middlePoint = new THREE.Vector3();
for(var i=0;i<dots.length;i++){
middlePoint.add(dots[i].position)
geo.vertices.push(new THREE.Vector3(dots[i].x,dots[i].y,dots[i].z));
}
middlePoint.divideScalar(dots.length);
geo.vertices.push(middlePoint);
for(var i=0;i<dots.length;i++){
middlePoint.add(dots[i].position)
if(i >0){
geo.faces.push(new THREE.Face3( geo.vertices.length-1,dots[i],dots[i-1]));
}
}
var mesh = new THREE.Mesh(geo,mat);