如何在三个.js中从一系列 3D 点创建 3D 多边形



我想知道在三个.js中给定一个 3D 点数组的情况下生成自定义 3D 多边形的最佳方法是什么。它是一个没有孔的简单多边形。对点进行排序,以便它们表示相邻折点。我可以在 2D 中做到这一点,但我不希望顶点是共面的。感谢您的帮助!

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

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

但是,在您的情况下,它要简单一些,因为您已经大致知道顶点应该如何连接。我建议您查看耳切库或libtess.js,它们都应该能够创建您需要的三角测量。

一旦有了这个,你可以大致按照@lior-trau的建议,了解如何从结果中创建几何图形。

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

相关内容

  • 没有找到相关文章

最新更新