|
Blender V4.3
|
Classes | |
| struct | BasisCache |
Functions | |
| bool | check_valid_num_and_order (int points_num, int8_t order, bool cyclic, KnotsMode knots_mode) |
| int | calculate_evaluated_num (int points_num, int8_t order, bool cyclic, int resolution, KnotsMode knots_mode) |
| int | knots_num (int points_num, int8_t order, bool cyclic) |
| void | calculate_knots (int points_num, KnotsMode mode, int8_t order, bool cyclic, MutableSpan< float > knots) |
| void | calculate_basis_cache (int points_num, int evaluated_num, int8_t order, bool cyclic, Span< float > knots, BasisCache &basis_cache) |
| void | interpolate_to_evaluated (const BasisCache &basis_cache, int8_t order, Span< float > control_weights, GSpan src, GMutableSpan dst) |
| static void | calculate_basis_for_point (const float parameter, const int points_num, const int degree, const Span< float > knots, MutableSpan< float > r_weights, int &r_start_index) |
| template<typename T > | |
| static void | interpolate_to_evaluated (const BasisCache &basis_cache, const int8_t order, const Span< T > src, MutableSpan< T > dst) |
| template<typename T > | |
| static void | interpolate_to_evaluated_rational (const BasisCache &basis_cache, const int8_t order, const Span< float > control_weights, const Span< T > src, MutableSpan< T > dst) |
| void blender::bke::curves::nurbs::calculate_basis_cache | ( | int | points_num, |
| int | evaluated_num, | ||
| int8_t | order, | ||
| bool | cyclic, | ||
| Span< float > | knots, | ||
| BasisCache & | basis_cache ) |
Based on the knots, the order, and other properties of a NURBS curve, calculate a cache that can be used to more simply interpolate attributes to the evaluated points later. The cache includes two pieces of information for every evaluated point: the first control point that influences it, and a weight for each control point.
Definition at line 152 of file curve_nurbs.cc.
References BLI_assert, calculate_basis_for_point(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), blender::bke::curves::segments_num(), blender::MutableSpan< T >::slice(), blender::bke::curves::nurbs::BasisCache::start_indices, and blender::bke::curves::nurbs::BasisCache::weights.
|
static |
Definition at line 99 of file curve_nurbs.cc.
References blender::Array< T, InlineBufferCapacity, Allocator >::as_mutable_span(), blender::Array< T, InlineBufferCapacity, Allocator >::as_span(), blender::MutableSpan< T >::copy_from(), and blender::Span< T >::size().
Referenced by calculate_basis_cache().
| int blender::bke::curves::nurbs::calculate_evaluated_num | ( | int | points_num, |
| int8_t | order, | ||
| bool | cyclic, | ||
| int | resolution, | ||
| KnotsMode | knots_mode ) |
Calculate the standard evaluated size for a NURBS curve, using the standard that the resolution is multiplied by the number of segments between the control points.
Definition at line 35 of file curve_nurbs.cc.
References check_valid_num_and_order(), and blender::bke::curves::segments_num().
| void blender::bke::curves::nurbs::calculate_knots | ( | int | points_num, |
| KnotsMode | mode, | ||
| int8_t | order, | ||
| bool | cyclic, | ||
| MutableSpan< float > | knots ) |
Calculate the knots for a curve given its properties, based on built-in standards defined by KnotsMode.
Definition at line 55 of file curve_nurbs.cc.
References BLI_assert, ELEM, knots_num(), min_ii(), NURBS_KNOT_MODE_BEZIER, NURBS_KNOT_MODE_ENDPOINT, NURBS_KNOT_MODE_ENDPOINT_BEZIER, blender::MutableSpan< T >::size(), and UNUSED_VARS_NDEBUG.
Referenced by blender::io::usd::populate_curve_props_for_nurbs().
| bool blender::bke::curves::nurbs::check_valid_num_and_order | ( | int | points_num, |
| int8_t | order, | ||
| bool | cyclic, | ||
| KnotsMode | knots_mode ) |
Checks the conditions that a NURBS curve needs to evaluate.
Definition at line 16 of file curve_nurbs.cc.
References ELEM, NURBS_KNOT_MODE_BEZIER, and NURBS_KNOT_MODE_ENDPOINT_BEZIER.
Referenced by calculate_evaluated_num().
|
static |
Definition at line 191 of file curve_nurbs.cc.
References blender::MutableSpan< T >::index_range(), and blender::threading::parallel_for().
| void blender::bke::curves::nurbs::interpolate_to_evaluated | ( | const BasisCache & | basis_cache, |
| int8_t | order, | ||
| Span< float > | control_weights, | ||
| GSpan | src, | ||
| GMutableSpan | dst ) |
Using a "basis cache" generated by #BasisCache, interpolate attribute values to the evaluated points. The number of evaluated points is determined by the #basis_cache argument.
| control_weights | An optional span of control point weights, which must have the same size as the number of control points in the curve if provided. Using this argument gives a NURBS curve the "Rational" behavior that's part of its acronym; otherwise it is a NUBS. |
Definition at line 233 of file curve_nurbs.cc.
References BLI_assert, blender::GMutableSpan::copy_from(), blender::bke::curves::nurbs::BasisCache::invalid, blender::GMutableSpan::size(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::bke::curves::nurbs::BasisCache::start_indices, and blender::GSpan::type().
|
static |
Definition at line 211 of file curve_nurbs.cc.
References blender::MutableSpan< T >::index_range(), and interpolate_to_evaluated_rational().
Referenced by interpolate_to_evaluated_rational().
Calculate the length of the knot vector for a NURBS curve with the given properties. The knots must be longer for a cyclic curve, for example, in order to provide weights for the last evaluated points that are also influenced by the first control points.
Definition at line 47 of file curve_nurbs.cc.
Referenced by calculate_knots(), and blender::io::usd::populate_curve_props_for_nurbs().