嗨,我正在尝试用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);
答案 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的想法。
但是,您是否尝试直接将具有点的点作为面推入,为每个零件创建网格?