0

VTK を使用して、地上レーザー スキャナーを使用して取得した入力ポイントのリストから 3D Delaunay 三角形分割を生成しています。これまでのところ、いくつかの 3D 三角形分割を正常に生成し、それらを .vtk または .vtu ファイル形式で保存しました。ただし、.ply、.stl、.obj、.wrl などの一般的な形式のいずれかで保存する必要があります。これらの形式のいずれかで 3D 三角測量を保存する方法を教えてください。もう 1 つの質問は、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;
}
4

1 に答える 1