Graphics 三轴扭曲网格

Graphics 三轴扭曲网格,graphics,three.js,mesh,Graphics,Three.js,Mesh,嗨,我正试图画一个三合一的模型。 我试着用线条画它,结果是 使用网格绘制它会导致 我用网格绘制它的方法是 let vertices = []; for (let part of this.BUILDINGINFORMATION) { for (let point of part.Polyhedron.Points) { vertices.push(point); } } let holes = []; let triangles, mesh; this.GEOMETRY= new

嗨,我正试图画一个三合一的模型。
我试着用线条画它,结果是 使用网格绘制它会导致

我用网格绘制它的方法是

let vertices = [];
for (let part of this.BUILDINGINFORMATION) {
  for (let point of part.Polyhedron.Points) {
    vertices.push(point);
  }
}
let holes = [];
let triangles, mesh;
this.GEOMETRY= new THREE.Geometry();
this.GEOMETRY.vertices = vertices;
triangles = new THREE.ShapeUtils.triangulateShape(vertices, holes);
for (let i = 0; i < triangles.length; i++) {
  this.GEOMETRY.faces.push(new THREE.Face3(triangles[i][0], triangles[i][1], triangles[i][2]));
}
let material = new THREE.MeshBasicMaterial();
let mesh = new THREE.Mesh(this.GEOMETRY, material);
让顶点=[];
为了(让我们分享一下这个。BUILDINGINFORMATION){
对于(零件的let点。多面体。点){
顶点。推(点);
}
}
让孔=[];
让三角形,网格;
this.GEOMETRY=新的三个.GEOMETRY();
this.GEOMETRY.vertices=顶点;
三角形=新的三个.ShapeUtils.triangulateShape(顶点、孔);
for(设i=0;i
作为免责声明,我没有任何使用threeJS或一般JS的经验

首先,不应将所有零件的所有顶点合并到一个顶点数组中。 为每个零件,甚至每个多面体制作单独的阵列

尽管如此,从文档来看,ShapeUtils.triangulateShape似乎只适用于二维点集合。如果我正确地解释了你的第一张图片,你的点实际上是3D的。

此线程可能会为您提供一些如何将每个面减少为2D的想法


但是,您是否尝试将点直接作为面推送,为每个零件创建网格

谢谢你的回答!我获取数据的方式是,例如,有一堵墙,我获取它的所有顶点。问题是我没有关于元素的形状的信息,因此我无法在不假定其形状的情况下安全地将顶点指定给面。我发现的一个解决方法是创建一个凸面外壳并通过它获得面,但我不知道如何做到这一点