This adds three new nodes: * `Shortest Edge Paths`: Actually finds the shortest paths. * `Edge Paths to Curves`: Converts the paths to separate curves. This may generate a quadratic amount of data, making it slow for large meshes. * `Edge Paths to Selection`: Generates an edge selection that contains all edges that are part of a path. This can be used with the Separate Geometry node to only keep the edges that are part of a path. For large meshes, this approach can be much faster than the `Edge Paths to Curves` node, because less data is created. Differential Revision: https://developer.blender.org/D15274
30 lines
880 B
C++
30 lines
880 B
C++
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
#include "BLI_index_mask.hh"
|
|
|
|
#include "BKE_curves.hh"
|
|
|
|
struct Mesh;
|
|
|
|
/** \file
|
|
* \ingroup geo
|
|
*/
|
|
|
|
namespace blender::geometry {
|
|
|
|
/**
|
|
* Convert the mesh into one or many poly curves. Since curves cannot have branches,
|
|
* intersections of more than three edges will become breaks in curves. Attributes that
|
|
* are not built-in on meshes and not curves are transferred to the result curve.
|
|
*/
|
|
bke::CurvesGeometry mesh_to_curve_convert(const Mesh &mesh, const IndexMask selection);
|
|
|
|
bke::CurvesGeometry create_curve_from_vert_indices(const Mesh &mesh,
|
|
Span<int> vert_indices,
|
|
Span<int> curve_offsets,
|
|
IndexRange cyclic_curves);
|
|
|
|
} // namespace blender::geometry
|