如何从three.js中的一系列3D点创建3D多边形?

时间:2017-01-17 20:19:36

标签: javascript graphics 3d three.js

我想知道在给定三个.js中的3D点阵列的情况下,生成自定义3D多边形的最佳方法是什么。它是一个没有孔的简单多边形。这些点是有序的,因此它们代表相邻的顶点。I can do it in 2D, but I don't want the vertices to be coplanar. 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

这里的主要问题是如何从一堆点创建3D网格。换句话说:你需要弄清楚应该连接哪个顶点以形成一个三角形。

这是一个令人惊讶的复杂事情(好吧,至少我很惊讶)并且有大量科学论文,图书馆等等。

然而,在你的情况下,它有点简单,因为你已经大致知道顶点应该如何连接。我建议您查看earcut-librarylibtess.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);