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

Example of generating a triangulation from a contour.

Example of Fusion.

  • C++
    #include <MRMesh/MRPointsLoad.h>
    #include <MRMesh/MRPointCloud.h>
    #include "MRMesh/MRBox.h"
    #include <MRMesh/MRMeshSave.h>
    #include <MRMesh/MRMesh.h>
    #include <iostream>
    int main()
    {
    // load points
    auto loadRes = MR::PointsLoad::fromAnySupportedFormat( "Points.ply" );
    if ( !loadRes.has_value() )
    {
    std::cerr << loadRes.error() << "\n";
    return 1; // error while loading file
    }
    params.voxelSize = loadRes->computeBoundingBox().diagonal() * 1e-2f;
    params.sigma = std::max( params.voxelSize, MR::findAvgPointsRadius( *loadRes, 50 ) );
    params.minWeight = 1.0f;
    auto fusionRes = MR::pointsToMeshFusion( *loadRes, params );
    if ( !fusionRes.has_value() )
    {
    std::cerr << fusionRes.error() << "\n";
    return 1; // error while saving file
    }
    auto saveRes = MR::MeshSave::toAnySupportedFormat( *fusionRes, "Mesh.ctm" );
    if ( !saveRes.has_value() )
    {
    std::cerr << saveRes.error() << "\n";
    return 1; // error while saving file
    }
    return 0;
    }
    MRMESH_API Expected< PointCloud > fromAnySupportedFormat(const std::filesystem::path &file, const PointsLoadSettings &settings={})
    MRMESH_API float findAvgPointsRadius(const PointCloud &pointCloud, int avgPoints, int samples=1024)
    MRVOXELS_API Expected< Mesh > pointsToMeshFusion(const PointCloud &cloud, const PointsToMeshParameters &params)
  • Python
    from meshlib import mrmeshpy as mm
    points = mm.loadPoints("Points.ply")
    params = mm.PointsToMeshParameters()
    params.voxelSize = points.computeBoundingBox().diagonal()*1e-2
    params.sigma = max(params.voxelSize,mm.findAvgPointsRadius(points,50))
    params.minWeight = 1
    mesh = mm.pointsToMeshFusion(points,params)
    mm.saveMesh(mesh,"Mesh.ctm")