2017-05-02 4 views
0

J'utilise VTK pour générer une triangulation Delaunay 3D à partir d'une liste de points d'entrée obtenus à l'aide d'un scanner laser terrestre. Jusqu'à présent, j'ai généré avec succès quelques triangulations 3D et les ai sauvegardées dans des formats de fichier .vtk ou .vtu. Cependant, j'ai besoin de les enregistrer comme l'un des formats populaires tels que .ply, .stl, .obj ou .wrl. Pourriez-vous s'il vous plaît me dire comment puis-je sauvegarder la triangulation 3D dans l'un de ces formats? Mon autre question concerne les paramètres setAlpha et setTolerance, pourriez-vous m'expliquer ces paramètres en détail? Merci à l'avancevtkDelaunay3D Enregistrer la triangulation

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

Répondre

0

Vous essayez de calculer une surface triangulaire d'un terrain balayé, non? Y at-il une bonne raison d'utiliser 3D Delaunay qui crée des tétraèdres au lieu de Delaunay 2.5D? Vous pouvez jeter un oeil à ma bibliothèque Fade2.5D, il y a une version gratuite pour les étudiants. Une limitation de 2.5D est cependant que vous ne pouvez pas représenter des murs verticaux et ainsi les bâtiments ne sont pas directement pris en charge.

enter image description here

+0

Mes données ne sont pas scannées. Il est composé de divers façades de bâtiment. – user887912