MeshLib Documentation
Loading...
Searching...
No Matches
Terrain Triangulation Example

Example of generating a triangulation from a terrain scan (specific pointcloud).

  • C++
    #include <MRMesh/MRPointsLoad.h>
    #include <MRMesh/MRPointCloud.h>
    #include <MRMesh/MRMeshSave.h>
    #include <MRMesh/MRColor.h>
    #include <iostream>
    int main()
    {
    // load points
    MR::VertColors colors;
    pls.colors = &colors;
    auto loadRes = MR::PointsLoad::fromAnySupportedFormat( "TerrainPoints.ply", pls );
    if ( !loadRes.has_value() )
    {
    std::cerr << loadRes.error() << "\n";
    return 1; // error while loading file
    }
    auto triangulationRes = MR::terrainTriangulation( loadRes->points.vec_ );
    if ( !triangulationRes.has_value() )
    {
    std::cerr << triangulationRes.error() << "\n";
    return 1; // error while triangulating
    }
    if ( loadRes->points.vec_.size() == colors.size() )
    ss.colors = &colors;
    auto saveRes = MR::MeshSave::toAnySupportedFormat( *triangulationRes, "TerrainMesh.ctm", ss );
    if ( !saveRes.has_value() )
    {
    std::cerr << saveRes.error() << "\n";
    return 1; // error while saving file
    }
    return 0;
    }
    int main()
    Definition LaplacianDeformation.cpp:4
    MRMESH_API Expected< PointCloud > fromAnySupportedFormat(const std::filesystem::path &file, const PointsLoadSettings &settings={})
    MRMESH_API Expected< void > toAnySupportedFormat(const Mesh &mesh, const std::filesystem::path &file, const SaveSettings &settings={})
    MRMESH_API Expected< Mesh > terrainTriangulation(std::vector< Vector3f > points, ProgressCallback cb={})
  • Python
    from meshlib import mrmeshpy as mm
    from pathlib import Path
    colors = mm.VertColors()
    lps = mm.PointsLoadSettings()
    lps.colors = colors
    pc = mm.loadPoints("TerrainPoints.ply",lps)
    terrain_mesh = mm.terrainTriangulation(pc.points.vec)
    mss = mm.SaveSettings()
    if (pc.points.vec.size() == colors.size()):
    mss.colors = colors
    mm.saveMesh(terrain_mesh, "TerrainMesh.ctm",mss)