| 246 | } // anonymous namespace |
| 247 | |
| 248 | std::optional<Mesh> triangulatePointCloud( const PointCloud& pointCloud, const TriangulationParameters& params /*= {} */, |
| 249 | const ProgressCallback& progressCb ) |
| 250 | { |
| 251 | MR_TIMER; |
| 252 | PointCloudTriangulator triangulator( pointCloud, params ); |
| 253 | const VertBitSet none; |
| 254 | if ( triangulator.triangulate( pointCloud.hasNormals() ? none : pointCloud.validPoints, progressCb ) ) |
| 255 | return triangulator.takeTargetMesh(); |
| 256 | return {}; |
| 257 | } |
| 258 | |
| 259 | bool triangulateHoles( Mesh & mesh, const TriangulateHolesParams& params, const ProgressCallback& progressCb ) |
| 260 | { |