使用Threejs扭曲网格

时间:2018-08-17 14:08:06

标签: graphics three.js mesh

嗨,我正在尝试用Threejs绘制模型。
我尝试用产生a correct representation of the bim model的线对其进行绘制。
使用网格进行绘制会导致a distorted model

我用网格绘制它的方法是

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

1 个答案:

答案 0 :(得分:0)

作为免责声明,我一般对ThreeJS或JS没有任何经验。

首先,您不应该将所有零件的所有顶点合并为一个顶点阵列。 为每个零件甚至每个多面体分别制作数组。

话虽如此,从文档来看,似乎ShapeUtils.triangulateShape仅适用于点的2D集合。如果我正确地解释了您的第一张照片,则您的要点实际上是3D。 https://threejs.org/docs/#api/extras/ShapeUtils.triangulateShape

Triangulation of 3D points with K vertices per face 该线程可能会给您一些有关如何将每个面缩小为2D的想法。

但是,您是否尝试直接将具有点的点作为面推入,为每个零件创建网格?