259 mutable bool auto_handles_dirty_ =
true;
264 mutable bool offset_cache_dirty_ =
true;
269 mutable bool position_cache_dirty_ =
true;
274 mutable bool mapping_cache_dirty_ =
true;
282 positions_(other.positions_),
283 radii_(other.radii_),
284 tilts_(other.tilts_),
285 resolution_(other.resolution_),
286 handle_types_left_(other.handle_types_left_),
287 handle_types_right_(other.handle_types_right_),
288 handle_positions_left_(other.handle_positions_left_),
289 handle_positions_right_(other.handle_positions_right_)
429 void correct_end_tangents() const
final;
480 mutable bool knots_dirty_ =
true;
485 mutable bool basis_cache_dirty_ =
true;
493 mutable bool position_cache_dirty_ =
true;
501 knots_mode(other.knots_mode),
502 positions_(other.positions_),
503 radii_(other.radii_),
504 tilts_(other.tilts_),
505 weights_(other.weights_),
506 resolution_(other.resolution_),
527 blender::Span<
float> knots() const;
529 blender::MutableSpan<
float> weights();
530 blender::Span<
float> weights() const;
540 void correct_end_tangents() const
final;
568 positions_(other.positions_),
569 radii_(other.radii_),
598 void correct_end_tangents() const
final;
623 this->add_spline(spline->copy());
669 float total_length()
const;
670 int total_control_point_num()
const;
681 void assert_valid_point_attributes()
const;
std::unique_ptr< Spline > SplinePtr
std::unique_ptr< CurveEval > curve_eval_from_dna_curve(const Curve &curve, const ListBase &nurbs_list)
std::unique_ptr< CurveEval > curves_to_curve_eval(const Curves &curves)
Curves * curve_eval_to_curves(const CurveEval &curve_eval)
@ NORMAL_MODE_MINIMUM_TWIST
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to curves
blender::MutableSpan< float > tilts() final
blender::Span< blender::float3 > handle_positions_right() const
bool segment_is_vector(int start_index) const
blender::Span< float > evaluated_mappings() const
void resize(int size) final
blender::Span< blender::float3 > handle_positions_left() const
void set_handle_position_left(int index, const blender::float3 &value)
void transform(const blender::float4x4 &matrix) override
void evaluate_segment(int index, int next_index, blender::MutableSpan< blender::float3 > positions) const
InsertResult calculate_segment_insertion(int index, int next_index, float parameter)
int evaluated_points_num() const final
blender::Span< int8_t > handle_types_left() const
void ensure_auto_handles() const
InterpolationData interpolation_data_from_index_factor(float index_factor) const
blender::Span< int > control_point_offsets() const
void translate(const blender::float3 &translation) override
virtual blender::GVArray interpolate_to_evaluated(const blender::GVArray &src) const override
bool point_is_sharp(int index) const
void mark_cache_invalid() final
BezierSpline(const BezierSpline &other)
void set_resolution(int value)
blender::Span< int8_t > handle_types_right() const
blender::Span< blender::float3 > evaluated_positions() const final
void set_handle_position_right(int index, const blender::float3 &value)
void reverse_impl() override
blender::MutableSpan< blender::float3 > positions() final
blender::MutableSpan< float > radii() final
NURBSpline(const NURBSpline &other)
PolySpline(const PolySpline &other)
LookupResult lookup_evaluated_factor(float factor) const
virtual blender::Span< float > tilts() const =0
std::mutex tangent_cache_mutex_
virtual void translate(const blender::float3 &translation)
virtual blender::MutableSpan< blender::float3 > positions()=0
std::mutex length_cache_mutex_
virtual blender::MutableSpan< float > tilts()=0
virtual void resize(int size)=0
int evaluated_edges_num() const
blender::Span< float > evaluated_lengths() const
void sample_with_index_factors(const blender::VArray< T > &src, blender::Span< float > index_factors, blender::MutableSpan< T > dst) const
SplinePtr copy_without_attributes() const
bool tangent_cache_dirty_
blender::Array< float > sample_uniform_index_factors(int samples_num) const
void set_cyclic(bool value)
virtual void transform(const blender::float4x4 &matrix)
void bounds_min_max(blender::float3 &min, blender::float3 &max, bool use_evaluated) const
blender::Vector< blender::float3 > evaluated_tangents_cache_
std::mutex normal_cache_mutex_
blender::Vector< float > evaluated_lengths_cache_
virtual int size() const =0
virtual int evaluated_points_num() const =0
virtual blender::Span< float > radii() const =0
LookupResult lookup_data_from_index_factor(float index_factor) const
virtual void reverse_impl()=0
blender::Vector< blender::float3 > evaluated_normals_cache_
blender::VArray< T > interpolate_to_evaluated(blender::Span< T > data) const
Spline(const CurveType type)
blender::Span< blender::float3 > evaluated_normals() const
blender::bke::CustomDataAttributes attributes
void sample_with_index_factors(const blender::GVArray &src, blender::Span< float > index_factors, blender::GMutableSpan dst) const
static void copy_base_settings(const Spline &src, Spline &dst)
virtual blender::MutableSpan< float > radii()=0
void sample_with_index_factors(blender::Span< T > src, blender::Span< float > index_factors, blender::MutableSpan< T > dst) const
virtual void mark_cache_invalid()=0
virtual blender::GVArray interpolate_to_evaluated(const blender::GVArray &src) const =0
virtual ~Spline()=default
virtual void copy_settings(Spline &dst) const =0
virtual blender::Span< blender::float3 > evaluated_positions() const =0
LookupResult lookup_evaluated_length(float length) const
blender::Span< blender::float3 > evaluated_tangents() const
SplinePtr copy_only_settings() const
virtual void correct_end_tangents() const =0
virtual blender::Span< blender::float3 > positions() const =0
virtual void copy_data(Spline &dst) const =0
VArray< T > typed() const
SyclQueue void void * src
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
bool check_valid_num_and_order(int points_num, int8_t order, bool cyclic, KnotsMode knots_mode)
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)
int knots_num(int points_num, int8_t order, bool cyclic)
blender::float3 right_handle
blender::float3 left_handle
blender::float3 handle_prev
blender::float3 handle_next
int next_control_point_index
blender::Span< SplinePtr > splines() const
blender::bke::CustomDataAttributes attributes
CurveEval(const CurveEval &other)
blender::Vector< int > start_indices
blender::Vector< float > weights