我正在为3D数据点创建表面可视化。我可以用球体在空间中绘制数据点。现在我要创建一个表面封面。这是jsfiddle:
https://jsfiddle.net/dnprock/b9xyfno5/10/
我尝试了三角测量,但它没有产生我想要的表面:
triangles = THREE.Shape.Utils.triangulateShape(vertices,holes);
for( var i = 0; i < triangles.length; i++ ){
geometry.faces.push( new THREE.Face3( triangles[i][0], triangles[i][1], triangles[i][2] ));
}
生成表面以覆盖点的方法是什么?
答案 0 :(得分:0)
face3获取已经在geometry.vertices 中的三个顶点的索引并生成一个面。在这里,您似乎正在尝试使用原始顶点坐标创建面,而不将它们包含在网格的几何体中。 假设三角形[i]是三个Vector3对象的数组:
for( var i = 0; i < triangles.length; i++ ){
var first_vertex_index= geometry.vertices.push(triangles[i][0])
var second_vertex_index= geometry.vertices.push(triangles[i][1])
var third_vertex_index= geometry.vertices.push(triangles[i][2])
geometry.faces.push( new THREE.Face3( first_vertex_index, second_vertex_index, third_vertex_index ));
}
如你所知,push方法返回数组中推送对象的索引,我们将索引放在Face3中而不是坐标。