2017-05-02 37 views
0

私は、地上レーザースキャナを使用して取得した入力点のリストから3D Delaunay三角形分割を生成するためにVTKを使用しています。これまでのところ、3D三角形分割を生成し、.vtkまたは.vtuファイル形式で保存しました。ただし、.ply、.stl、.obj、.wrlなどの一般的な形式の1つとして保存する必要があります。これらのフォーマットのいずれかで3D三角測量を保存するにはどうすればいいですか?私の他の質問は、setAlphaとsetToleranceのパラメータについてですが、これらのパラメータについて詳しく説明してください。事前に おかげvtkDelaunay3Dセマンティック三角形分割

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

答えて

0

は、あなたは正しい、スキャンした地形から三角形の表面を計算してみてください? 2.5D Delaunayの代わりに四面体を作成する3D Delaunayを使用する理由はありますか?あなたは私のFade2.5Dライブラリを見ているかもしれませんが、無料の学生版があります。 2.5Dの制限は、垂直壁を表すことができないため、建物は直接サポートされていません。

enter image description here

+0

私のデータは地形ではありません。それは様々な建築面で構成されています。 – user887912

関連する問題