Blender V4.3
blender::bke::curves Namespace Reference

Namespaces

namespace  bezier
 
namespace  catmull_rom
 
namespace  nurbs
 
namespace  poly
 

Classes

struct  CurvePoint
 
struct  CurveSegment
 
class  IndexRangeCyclic
 

Functions

Inline Curve Methods
int segments_num (const int points_num, const bool cyclic)
 
float2 encode_surface_bary_coord (const float3 &v)
 
float3 decode_surface_bary_coord (const float2 &v)
 
IndexRange per_curve_point_offsets_range (const IndexRange points, const int curve_index)
 
Utility Functions
void fill_points (OffsetIndices< int > points_by_curve, const IndexMask &curve_selection, GPointer value, GMutableSpan dst)
 
template<typename T >
void fill_points (const OffsetIndices< int > points_by_curve, const IndexMask &curve_selection, const T &value, MutableSpan< T > dst)
 
bke::CurvesGeometry copy_only_curve_domain (const bke::CurvesGeometry &src_curves)
 
IndexMask indices_for_type (const VArray< int8_t > &types, const std::array< int, CURVE_TYPES_NUM > &type_counts, const CurveType type, const IndexMask &selection, IndexMaskMemory &memory)
 
void foreach_curve_by_type (const VArray< int8_t > &types, const std::array< int, CURVE_TYPES_NUM > &type_counts, const IndexMask &selection, FunctionRef< void(IndexMask)> catmull_rom_fn, FunctionRef< void(IndexMask)> poly_fn, FunctionRef< void(IndexMask)> bezier_fn, FunctionRef< void(IndexMask)> nurbs_fn)
 

Function Documentation

◆ copy_only_curve_domain()

CurvesGeometry blender::bke::curves::copy_only_curve_domain ( const bke::CurvesGeometry & src_curves)

Create new curves with the same number of curves as the input, but no points. Copy all curve domain attributes to the new curves, except the offsets encoding the size of each curve.

Used for operations that change the number of points but not the number of curves, allowing creation of the new offsets directly inside the new array.

Warning
The returned curves have invalid offsets!

Definition at line 27 of file curves_utils.cc.

References CD_MASK_ALL, CurvesGeometry::curve_data, blender::bke::CurvesGeometry::curves_num(), CustomData_init_from(), and CurvesGeometry::runtime.

Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::ed::greasepencil::curves_merge_by_distance(), blender::geometry::extend_curves(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), and blender::ed::curves::resize_curves().

◆ decode_surface_bary_coord()

float3 blender::bke::curves::decode_surface_bary_coord ( const float2 & v)
inline

Definition at line 505 of file BKE_curves.hh.

References v.

◆ encode_surface_bary_coord()

float2 blender::bke::curves::encode_surface_bary_coord ( const float3 & v)
inline

Definition at line 499 of file BKE_curves.hh.

References BLI_assert, and v.

◆ fill_points() [1/2]

template<typename T >
void blender::bke::curves::fill_points ( const OffsetIndices< int > points_by_curve,
const IndexMask & curve_selection,
const T & value,
MutableSpan< T > dst )

Definition at line 479 of file BKE_curves_utils.hh.

References fill_points().

◆ fill_points() [2/2]

◆ foreach_curve_by_type()

void blender::bke::curves::foreach_curve_by_type ( const VArray< int8_t > & types,
const std::array< int, CURVE_TYPES_NUM > & type_counts,
const IndexMask & selection,
FunctionRef< void(IndexMask)> catmull_rom_fn,
FunctionRef< void(IndexMask)> poly_fn,
FunctionRef< void(IndexMask)> bezier_fn,
FunctionRef< void(IndexMask)> nurbs_fn )

◆ indices_for_type()

IndexMask blender::bke::curves::indices_for_type ( const VArray< int8_t > & types,
const std::array< int, CURVE_TYPES_NUM > & type_counts,
const CurveType type,
const IndexMask & selection,
IndexMaskMemory & memory )

◆ per_curve_point_offsets_range()

IndexRange blender::bke::curves::per_curve_point_offsets_range ( const IndexRange points,
const int curve_index )
inline

Return a range used to retrieve values from an array of values stored per point, but with an extra element at the end of each curve. This is useful for offsets within curves, where it is convenient to store the first 0 and have the last offset be the total result curve size, using the same rules as #OffsetIndices.

Definition at line 516 of file BKE_curves.hh.

References blender::IndexRange::start().

Referenced by blender::bke::CurvesGeometry::bezier_evaluated_offsets_for_curve(), blender::geometry::calculate_result_offsets(), blender::geometry::calculate_result_offsets(), blender::geometry::duplicate_fillet_point_data(), and blender::geometry::subdivide_attribute_linear().

◆ segments_num()

int blender::bke::curves::segments_num ( const int points_num,
const bool cyclic )
inline

The number of segments between control points, accounting for the last segment of cyclic curves. The logic is simple, but this function should be used to make intentions clearer.

Definition at line 493 of file BKE_curves.hh.

References BLI_assert.

Referenced by blender::bke::curves::nurbs::calculate_basis_cache(), blender::bke::curves::catmull_rom::calculate_evaluated_num(), blender::bke::curves::nurbs::calculate_evaluated_num(), blender::draw::curve_eval_render_wire_verts_edges_len_get(), blender::bke::fill_mesh_topology(), blender::bke::curves::bezier::has_vector_handles(), and blender::bke::segments_num_no_duplicate_edge().