我正在使用VTK从地面激光扫描仪获得的输入点列表生成3D Delaunay三角剖分。到目前为止,我成功地生成了一些3D三角剖分,并将它们保存为.vtk或.vtu文件格式。但是,我需要将它们保存为一种流行的格式,如.ply、.stl、.obj或.wrl。您能告诉我如何将3d三角测量保存为其中一种格式吗?我的另一个问题是关于setAlpha和setTolerance的参数,你能给我详细解释一下这些参数吗?提前感谢
int main( int argc, char* argv[] )
{
//load the point cloud
vtkSmartPointer<vtkSimplePointsReader> reader = vtkSmartPointer<vtkSimplePointsReader>::New();
reader->SetFileName("kucuk50k.xyz");
reader->Update();
vtkPolyData* polydata = reader->GetOutput();
std::cout << "The point cloud is loaded" << std::endl;
//end of point cloud loading
std::cout << "----------------------------------------------" << std::endl;
// Generate a mesh from the input points. If Alpha is non-zero, then
// tetrahedra, triangles, edges and vertices that lie within the
// alpha radius are output.
std::cout << "Start delaunay 3d triangulation" << std::endl;
vtkSmartPointer<vtkDelaunay3D> delaunay3DAlpha = vtkSmartPointer<vtkDelaunay3D>::New();
delaunay3DAlpha->SetInputConnection(reader->GetOutputPort());
delaunay3DAlpha->SetAlpha(0.01);
std::cout << "3d Delaunay computed" << std::endl;
std::cout << "----------------------------------------------" << std::endl;
std::cout << "Start writing the triangulation" << std::endl;
vtkSmartPointer<vtkXMLUnstructuredGridWriter> ugWriter = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
ugWriter->SetInputConnection(delaunay3DAlpha->GetOutputPort());
ugWriter->SetFileName("delaunayy_50k.vtk");
ugWriter->Write();
std::cout << "VTK file created" << std::endl;
return EXIT_SUCCESS;
}发布于 2017-05-03 15:24:37
您尝试从扫描的地形计算三角形曲面,对吗?有没有充分的理由使用3D Delaunay来创建四面体而不是2.5D Delaunay?你可以看看我的Fade2.5D库,里面有一个免费的学生版。然而,2.5D的限制是您不能表示垂直墙,因此不能直接支持建筑物。

https://stackoverflow.com/questions/43746388
复制相似问题