Blender V5.0
BKE_curve.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include <optional>
12
13#include "BLI_array.hh"
14#include "BLI_bounds_types.hh"
17#include "BLI_span.hh"
18#include "BLI_sys_types.h"
19
20#include "DNA_listBase.h"
21
22struct BezTriple;
23struct BezTriple;
24struct BMEditMesh;
25struct BPoint;
26struct Curve;
27struct Depsgraph;
28struct GHash;
29struct ListBase;
30struct Main;
31struct MDeformVert;
32struct Nurb;
33struct Object;
34struct rctf;
35struct TextBox;
36
38
39struct CurveCache {
43 /* This array contains the accumulative length of the curve segments.
44 * So you can see this as a "total distance traveled" along the curve.
45 * The first entry is the length between point 0 and 1 while the last is the
46 * total length of the curve.
47 *
48 * Used by #BKE_where_on_path. */
50};
51
52/* Definitions needed for shape keys */
58
73
74#define KNOTSU(nu) \
75 ((nu)->orderu + (nu)->pntsu + (((nu)->flagu & CU_NURB_CYCLIC) ? ((nu)->orderu - 1) : 0))
76#define KNOTSV(nu) \
77 ((nu)->orderv + (nu)->pntsv + (((nu)->flagv & CU_NURB_CYCLIC) ? ((nu)->orderv - 1) : 0))
78
79/* Non cyclic nurbs have 1 less segment */
80#define SEGMENTSU(nu) (((nu)->flagu & CU_NURB_CYCLIC) ? (nu)->pntsu : (nu)->pntsu - 1)
81#define SEGMENTSV(nu) (((nu)->flagv & CU_NURB_CYCLIC) ? (nu)->pntsv : (nu)->pntsv - 1)
82
83#define CU_DO_RADIUS(cu, nu) \
84 ((((cu)->flag & (CU_PATH_RADIUS | CU_3D)) || (cu)->bevobj || (cu)->extrude != 0.0f || \
85 (cu)->bevel_radius != 0.0f) ? \
86 1 : \
87 0)
88
89#define CU_IS_2D(cu) (((cu)->flag & CU_3D) == 0)
90
91/* not 3d and not unfilled */
92#define CU_DO_2DFILL(cu) (CU_IS_2D(cu) && (((cu)->flag & (CU_FRONT | CU_BACK)) != 0))
93
94/* ** Curve ** */
99void BKE_curve_init(Curve *cu, short curve_type);
100Curve *BKE_curve_add(Main *bmain, const char *name, int type);
101void BKE_curve_type_test(Object *ob, bool dimension_update);
103
106
107/* Basic vertex data functions. */
108
109std::optional<blender::Bounds<blender::float3>> BKE_curve_minmax(const Curve *cu, bool use_radius);
110bool BKE_curve_center_median(Curve *cu, float cent[3]);
112 Curve *cu, const float mat[4][4], bool do_keys, bool do_props, float unit_scale);
113void BKE_curve_transform(Curve *cu, const float mat[4][4], bool do_keys, bool do_props);
114void BKE_curve_translate(Curve *cu, const float offset[3], bool do_keys);
115void BKE_curve_material_index_remove(Curve *cu, int index);
116bool BKE_curve_material_index_used(const Curve *cu, int index);
119void BKE_curve_material_remap(Curve *cu, const unsigned int *remap, unsigned int remap_len);
120
121void BKE_curve_smooth_flag_set(Curve *cu, bool use_smooth);
122
128
129int BKE_curve_nurb_vert_index_get(const Nurb *nu, const void *vert);
130void BKE_curve_nurb_active_set(Curve *cu, const Nurb *nu);
139void BKE_curve_nurb_vert_active_set(Curve *cu, const Nurb *nu, const void *vert);
143bool BKE_curve_nurb_vert_active_get(Curve *cu, Nurb **r_nu, void **r_vert);
145
149
153 bool constrain_2d);
154
156 const blender::Span<blender::float3> vert_coords,
157 bool constrain_2d);
158
160 const float *key);
161void BKE_curve_nurbs_key_vert_tilts_apply(ListBase *lb, const float *key);
162
163void BKE_curve_editNurb_keyIndex_delCV(GHash *keyindex, const void *cv);
171
173void BKE_curve_bevelList_make(Object *ob, const ListBase *nurbs, bool for_render);
175
180 float q0, float q1, float q2, float q3, float *p, int it, int stride);
185 float q0, float q1, float q2, float q3, float *p, int it, int stride);
186
187void BKE_curve_rect_from_textbox(const Curve *cu, const TextBox *tb, rctf *r_rect);
188
193void BKE_curve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2]);
194
195/* ** Nurbs ** */
196
197bool BKE_nurbList_index_get_co(ListBase *nurb, int index, float r_co[3]);
198
199int BKE_nurbList_verts_count(const ListBase *nurb);
201
203void BKE_nurbList_duplicate(ListBase *lb1, const ListBase *lb2);
213void BKE_nurbList_handles_set(ListBase *editnurb, eNurbHandleTest_Mode handle_mode, char code);
214void BKE_nurbList_handles_recalculate(ListBase *editnurb, bool calc_length, uint8_t flag);
215
216void BKE_nurbList_handles_autocalc(ListBase *editnurb, uint8_t flag);
217void BKE_nurbList_flag_set(ListBase *editnurb, uint8_t flag, bool set);
221bool BKE_nurbList_flag_set_from_flag(ListBase *editnurb, uint8_t from_flag, uint8_t flag);
222
223void BKE_nurb_free(Nurb *nu);
224Nurb *BKE_nurb_duplicate(const Nurb *nu);
228Nurb *BKE_nurb_copy(Nurb *src, int pntsu, int pntsv);
229
230void BKE_nurb_project_2d(Nurb *nu);
231float BKE_nurb_calc_length(const Nurb *nu, int resolution);
232
236void BKE_nurb_makeFaces(const Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv);
242void BKE_nurb_makeCurve(const Nurb *nu,
243 float *coord_array,
244 float *tilt_array,
245 float *radius_array,
246 float *weight_array,
247 int resolu,
248 int stride);
249
253unsigned int BKE_curve_calc_coords_axis_len(unsigned int bezt_array_len,
254 unsigned int resolu,
255 bool is_cyclic,
256 bool use_cyclic_duplicate_endpoint);
263void BKE_curve_calc_coords_axis(const BezTriple *bezt_array,
264 unsigned int bezt_array_len,
265 unsigned int resolu,
266 bool is_cyclic,
267 bool use_cyclic_duplicate_endpoint,
268 /* Array parameters. */
269 unsigned int axis,
270 unsigned int stride,
271 float *r_points);
273void BKE_nurb_knot_calc_u(Nurb *nu);
274void BKE_nurb_knot_calc_v(Nurb *nu);
275
276/* nurb checks if they can be drawn, also clamp order func */
277bool BKE_nurb_check_valid_u(const Nurb *nu);
278bool BKE_nurb_check_valid_v(const Nurb *nu);
279bool BKE_nurb_check_valid_uv(const Nurb *nu);
280bool BKE_nurb_valid_message(int pnts,
281 short order,
282 short flag,
283 short type,
284 bool is_surf,
285 int dir,
286 char *message_dst,
287 size_t maxncpy);
288
291
296bool BKE_nurb_type_convert(Nurb *nu, short type, bool use_handles, const char **r_err_msg);
297
301void BKE_nurb_points_add(Nurb *nu, int number);
302void BKE_nurb_bezierPoints_add(Nurb *nu, int number);
303
304int BKE_nurb_index_from_uv(Nurb *nu, int u, int v);
305void BKE_nurb_index_to_uv(Nurb *nu, int index, int *r_u, int *r_v);
306
311
312void BKE_nurb_bezt_calc_normal(Nurb *nu, BezTriple *bezt, float r_normal[3]);
313void BKE_nurb_bezt_calc_plane(Nurb *nu, BezTriple *bezt, float r_plane[3]);
314
315void BKE_nurb_bpoint_calc_normal(Nurb *nu, BPoint *bp, float r_normal[3]);
316void BKE_nurb_bpoint_calc_plane(Nurb *nu, BPoint *bp, float r_plane[3]);
317
323 BezTriple *bezt, BezTriple *prev, BezTriple *next, bool is_fcurve, char smoothing);
332 BezTriple *prev,
334 eBezTriple_Flag__Alias handle_sel_flag,
335 bool is_fcurve,
336 char smoothing);
342
343void BKE_nurb_handle_smooth_fcurve(BezTriple *bezt, int total, bool cyclic);
344
346void BKE_nurb_handles_autocalc(Nurb *nu, uint8_t flag);
347
353 const eBezTriple_Flag__Alias sel_flag,
354 const eNurbHandleTest_Mode handle_mode);
355
368 eBezTriple_Flag__Alias sel_flag,
369 const eNurbHandleTest_Mode handle_mode,
370 bool use_around_local);
371void BKE_nurb_handles_test(Nurb *nu, eNurbHandleTest_Mode handle_mode, bool use_around_local);
372
373/* **** Depsgraph evaluation **** */
374
375void BKE_curve_eval_geometry(Depsgraph *depsgraph, Curve *curve);
376
377/* Draw Cache */
378enum {
381};
382void BKE_curve_batch_cache_dirty_tag(Curve *cu, int mode);
384
385extern void (*BKE_curve_batch_cache_dirty_tag_cb)(Curve *cu, int mode);
386extern void (*BKE_curve_batch_cache_free_cb)(Curve *cu);
387
388/* -------------------------------------------------------------------- */
393
394unsigned int BKE_curve_decimate_bezt_array(BezTriple *bezt_array,
395 unsigned int bezt_array_len,
396 unsigned int resolu,
397 bool is_cyclic,
398 char flag_test,
399 char flag_set,
400 float error_sq_max,
401 unsigned int error_target_len);
402
404 unsigned int resolu,
405 float error_sq_max,
406 unsigned int error_target_len);
407
409
410/* -------------------------------------------------------------------- */
413
414void BKE_curve_deform_coords(const Object *ob_curve,
415 const Object *ob_target,
416 float (*vert_coords)[3],
417 int vert_coords_len,
418 const MDeformVert *dvert,
419 int defgrp_index,
420 short flag,
421 short defaxis);
422
424 const Object *ob_target,
425 float (*vert_coords)[3],
426 int vert_coords_len,
427 int defgrp_index,
428 short flag,
429 short defaxis,
430 const BMEditMesh *em_target);
431
438void BKE_curve_deform_co(const Object *ob_curve,
439 const Object *ob_target,
440 const float orco[3],
441 float vec[3],
442 int no_rot_axis,
443 float r_mat[3][3]);
444
446
447/* `curve_convert.cc` */
448
449/* Create a new curve from the given object at its current state. This only works for curve and
450 * text objects, otherwise NULL is returned.
451 *
452 * If apply_modifiers is true and the object is a curve one, then spline deform modifiers are
453 * applied on the control points of the splines.
454 */
455Curve *BKE_curve_new_from_object(Object *object, Depsgraph *depsgraph, bool apply_modifiers);
eNurbHandleTest_Mode
Definition BKE_curve.hh:59
@ NURB_HANDLE_TEST_EACH
Definition BKE_curve.hh:61
@ NURB_HANDLE_TEST_KNOT_OR_EACH
Definition BKE_curve.hh:66
@ NURB_HANDLE_TEST_KNOT_ONLY
Definition BKE_curve.hh:71
bool BKE_nurb_type_convert(Nurb *nu, short type, bool use_handles, const char **r_err_msg)
Definition curve.cc:4814
void BKE_nurb_handles_autocalc(Nurb *nu, uint8_t flag)
Definition curve.cc:4105
void BKE_nurb_handle_calc_simple_auto(Nurb *nu, BezTriple *bezt)
Definition curve.cc:3996
bool BKE_nurbList_flag_set_from_flag(ListBase *editnurb, uint8_t from_flag, uint8_t flag)
Definition curve.cc:4376
blender::Array< blender::float3 > BKE_curve_nurbs_key_vert_coords_alloc(const ListBase *lb, const float *key)
Definition curve.cc:4633
void BKE_nurbList_handles_set(ListBase *editnurb, eNurbHandleTest_Mode handle_mode, char code)
Definition curve.cc:4193
void BKE_nurb_handle_calc_simple(Nurb *nu, BezTriple *bezt)
Definition curve.cc:3987
void BKE_curve_batch_cache_dirty_tag(Curve *cu, int mode)
Definition curve.cc:5502
void BKE_nurb_index_to_uv(Nurb *nu, int index, int *r_u, int *r_v)
Definition curve.cc:912
void BKE_nurb_handles_calc(Nurb *nu)
Definition curve.cc:3957
const ListBase * BKE_curve_editNurbs_get_for_read(const Curve *cu)
Definition curve.cc:428
void BKE_curve_init(Curve *cu, short curve_type)
Definition curve.cc:368
void BKE_curve_translate(Curve *cu, const float offset[3], bool do_keys)
Definition curve.cc:5232
void BKE_curve_deform_coords(const Object *ob_curve, const Object *ob_target, float(*vert_coords)[3], int vert_coords_len, const MDeformVert *dvert, int defgrp_index, short flag, short defaxis)
void BKE_curve_editNurb_free(Curve *cu)
Definition curve.cc:358
bool BKE_curve_center_median(Curve *cu, float cent[3])
Definition curve.cc:5117
void BKE_nurb_makeFaces(const Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv)
Definition curve.cc:1275
int eBezTriple_Flag__Alias
Definition BKE_curve.hh:37
void BKE_curve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
Definition curve.cc:5430
blender::Array< blender::float3 > BKE_curve_nurbs_vert_coords_alloc(const ListBase *lb)
Definition curve.cc:4555
void BKE_nurb_project_2d(Nurb *nu)
Definition curve.cc:684
void BKE_curve_deform_co(const Object *ob_curve, const Object *ob_target, const float orco[3], float vec[3], int no_rot_axis, float r_mat[3][3])
void BKE_curve_texspace_ensure(Curve *cu)
Definition curve.cc:502
void BKE_curve_nurbs_vert_coords_apply_with_mat4(ListBase *lb, const blender::Span< blender::float3 >, const blender::float4x4 &transform, bool constrain_2d)
void BKE_nurb_bpoint_calc_plane(Nurb *nu, BPoint *bp, float r_plane[3])
Definition curve.cc:1082
void BKE_nurbList_handles_autocalc(ListBase *editnurb, uint8_t flag)
Definition curve.cc:4186
void BKE_curve_material_remap(Curve *cu, const unsigned int *remap, unsigned int remap_len)
Definition curve.cc:5365
void BKE_curve_decimate_nurb(Nurb *nu, unsigned int resolu, float error_sq_max, unsigned int error_target_len)
void BKE_nurb_free(Nurb *nu)
Definition curve.cc:571
void BKE_curve_bevelList_free(ListBase *bev)
Definition curve.cc:2516
ListBase * BKE_curve_nurbs_get(Curve *cu)
Definition curve.cc:4958
void BKE_curve_nurb_active_set(Curve *cu, const Nurb *nu)
Definition curve.cc:4976
void BKE_curve_texspace_calc(Curve *cu)
Definition curve.cc:468
Nurb * BKE_curve_nurb_active_get(Curve *cu)
Definition curve.cc:4988
const ListBase * BKE_curve_nurbs_get_for_read(const Curve *cu)
Definition curve.cc:4967
short BKE_nurb_bezt_handle_test_calc_flag(const BezTriple *bezt, const eBezTriple_Flag__Alias sel_flag, const eNurbHandleTest_Mode handle_mode)
Definition curve.cc:4015
bool BKE_nurb_check_valid_uv(const Nurb *nu)
Definition curve.cc:4782
void(* BKE_curve_batch_cache_free_cb)(Curve *cu)
Definition curve.cc:5500
Curve * BKE_curve_new_from_object(Object *object, Depsgraph *depsgraph, bool apply_modifiers)
void BKE_curve_batch_cache_free(Curve *cu)
Definition curve.cc:5508
void BKE_nurb_makeCurve(const Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride)
Definition curve.cc:1467
float BKE_nurb_calc_length(const Nurb *nu, int resolution)
Definition curve.cc:762
void BKE_curve_editNurb_keyIndex_free(GHash **keyindex)
Definition curve.cc:349
void BKE_curve_nurbs_vert_coords_get(const ListBase *lb, blender::MutableSpan< blender::float3 > vert_coords)
void BKE_nurbList_handles_recalculate(ListBase *editnurb, bool calc_length, uint8_t flag)
Definition curve.cc:4284
void BKE_curve_nurb_vert_active_set(Curve *cu, const Nurb *nu, const void *vert)
Definition curve.cc:5014
void BKE_nurb_knot_calc_u(Nurb *nu)
Definition curve.cc:1189
void BKE_nurb_handle_smooth_fcurve(BezTriple *bezt, int total, bool cyclic)
Definition curve.cc:3891
void BKE_nurb_handles_test(Nurb *nu, eNurbHandleTest_Mode handle_mode, bool use_around_local)
Definition curve.cc:4084
void BKE_curve_calc_coords_axis(const BezTriple *bezt_array, unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, bool use_cyclic_duplicate_endpoint, unsigned int axis, unsigned int stride, float *r_points)
Definition curve.cc:1613
void BKE_curve_dimension_update(Curve *cu)
Definition curve.cc:437
void BKE_curve_nurbs_key_vert_tilts_apply(ListBase *lb, const float *key)
Definition curve.cc:4665
void BKE_nurbList_duplicate(ListBase *lb1, const ListBase *lb2)
Definition curve.cc:674
std::optional< blender::Bounds< blender::float3 > > BKE_curve_minmax(const Curve *cu, bool use_radius)
Definition curve.cc:5097
void * BKE_curve_vert_active_get(Curve *cu)
Definition curve.cc:4994
ListBase BKE_curve_bevel_make(const Curve *curve)
bool BKE_nurb_order_clamp_u(Nurb *nu)
Definition curve.cc:4794
unsigned int BKE_curve_calc_coords_axis_len(unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, bool use_cyclic_duplicate_endpoint)
Definition curve.cc:1603
void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride)
Definition curve.cc:1669
void BKE_curve_smooth_flag_set(Curve *cu, bool use_smooth)
Definition curve.cc:5407
void BKE_nurbList_free(ListBase *lb)
Definition curve.cc:597
void BKE_curve_editfont_free(Curve *cu)
Definition curve.cc:316
ListBase * BKE_curve_editNurbs_get(Curve *cu)
Definition curve.cc:419
void BKE_nurb_handle_calc(BezTriple *bezt, BezTriple *prev, BezTriple *next, bool is_fcurve, char smoothing)
Definition curve.cc:3940
bool BKE_nurb_check_valid_v(const Nurb *nu)
Definition curve.cc:4774
int BKE_nurbList_verts_count(const ListBase *nurb)
Definition curve.cc:537
void BKE_curve_material_index_remove(Curve *cu, int index)
Definition curve.cc:5278
int BKE_nurb_index_from_uv(Nurb *nu, int u, int v)
Definition curve.cc:890
void BKE_nurb_bezt_handle_test(BezTriple *bezt, eBezTriple_Flag__Alias sel_flag, const eNurbHandleTest_Mode handle_mode, bool use_around_local)
Definition curve.cc:4048
void BKE_curve_forward_diff_tangent_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride)
Definition curve.cc:1697
@ BKE_CURVE_BATCH_DIRTY_SELECT
Definition BKE_curve.hh:380
@ BKE_CURVE_BATCH_DIRTY_ALL
Definition BKE_curve.hh:379
void BKE_nurb_bezt_calc_normal(Nurb *nu, BezTriple *bezt, float r_normal[3])
Definition curve.cc:1007
void BKE_nurb_knot_calc_v(Nurb *nu)
Definition curve.cc:1194
Curve * BKE_curve_add(Main *bmain, const char *name, int type)
Definition curve.cc:407
void(* BKE_curve_batch_cache_dirty_tag_cb)(Curve *cu, int mode)
Definition curve.cc:5499
bool BKE_curve_material_index_used(const Curve *cu, int index)
Definition curve.cc:5297
void BKE_nurb_direction_switch(Nurb *nu)
Definition curve.cc:4407
void BKE_curve_nurb_vert_active_validate(Curve *cu)
Definition curve.cc:5058
void BKE_curve_material_index_clear(Curve *cu)
Definition curve.cc:5318
void BKE_curve_eval_geometry(Depsgraph *depsgraph, Curve *curve)
Definition curve.cc:5483
bool BKE_curve_nurb_vert_active_get(Curve *cu, Nurb **r_nu, void **r_vert)
Definition curve.cc:5031
BPoint * BKE_nurb_bpoint_get_prev(Nurb *nu, BPoint *bp)
Definition curve.cc:985
bool BKE_nurb_check_valid_u(const Nurb *nu)
Definition curve.cc:4766
void BKE_nurb_bezierPoints_add(Nurb *nu, int number)
Definition curve.cc:876
void BKE_curve_transform(Curve *cu, const float mat[4][4], bool do_keys, bool do_props)
Definition curve.cc:5226
void BKE_curve_nurbs_vert_coords_apply(ListBase *lb, const blender::Span< blender::float3 > vert_coords, bool constrain_2d)
BPoint * BKE_nurb_bpoint_get_next(Nurb *nu, BPoint *bp)
Definition curve.cc:942
void BKE_nurbList_flag_set(ListBase *editnurb, uint8_t flag, bool set)
Definition curve.cc:4341
BezTriple * BKE_nurb_bezt_get_next(Nurb *nu, BezTriple *bezt)
Definition curve.cc:921
void BKE_nurb_bpoint_calc_normal(Nurb *nu, BPoint *bp, float r_normal[3])
Definition curve.cc:1059
Nurb * BKE_nurb_duplicate(const Nurb *nu)
Definition curve.cc:609
bool BKE_nurb_order_clamp_v(Nurb *nu)
Definition curve.cc:4804
void BKE_curve_transform_ex(Curve *cu, const float mat[4][4], bool do_keys, bool do_props, float unit_scale)
Definition curve.cc:5154
void BKE_nurb_knot_alloc_u(Nurb *nu)
Definition curve.cc:1184
unsigned int BKE_curve_decimate_bezt_array(BezTriple *bezt_array, unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, char flag_test, char flag_set, float error_sq_max, unsigned int error_target_len)
void BKE_curve_rect_from_textbox(const Curve *cu, const TextBox *tb, rctf *r_rect)
Definition curve.cc:5421
void BKE_curve_editNurb_keyIndex_delCV(GHash *keyindex, const void *cv)
Definition curve.cc:343
int BKE_nurbList_verts_count_without_handles(const ListBase *nurb)
Definition curve.cc:553
bool BKE_nurbList_index_get_co(ListBase *nurb, int index, float r_co[3])
Definition curve.cc:511
Nurb * BKE_nurb_copy(Nurb *src, int pntsu, int pntsv)
Definition curve.cc:649
void BKE_curve_bevelList_make(Object *ob, const ListBase *nurbs, bool for_render)
Definition curve.cc:2534
int BKE_curve_nurb_vert_index_get(const Nurb *nu, const void *vert)
Definition curve.cc:5003
void BKE_nurb_handle_calc_ex(BezTriple *bezt, BezTriple *prev, BezTriple *next, eBezTriple_Flag__Alias handle_sel_flag, bool is_fcurve, char smoothing)
Definition curve.cc:3946
void BKE_curve_type_test(Object *ob, bool dimension_update)
Definition curve.cc:454
void BKE_nurb_bezt_calc_plane(Nurb *nu, BezTriple *bezt, float r_plane[3])
Definition curve.cc:1022
bool BKE_nurb_valid_message(int pnts, short order, short flag, short type, bool is_surf, int dir, char *message_dst, size_t maxncpy)
Definition curve.cc:4722
BezTriple * BKE_nurb_bezt_get_prev(Nurb *nu, BezTriple *bezt)
Definition curve.cc:963
void BKE_curve_deform_coords_with_editmesh(const Object *ob_curve, const Object *ob_target, float(*vert_coords)[3], int vert_coords_len, int defgrp_index, short flag, short defaxis, const BMEditMesh *em_target)
bool BKE_curve_material_index_validate(Curve *cu)
Definition curve.cc:5333
void BKE_nurb_points_add(Nurb *nu, int number)
Definition curve.cc:863
These structs are the foundation for all linked lists in the library system.
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
BPy_StructRNA * depsgraph
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
static bool is_cyclic(const Nurb *nu)
static ulong * next
MatBase< float, 4, 4 > float4x4
const char * name
int key_index
Definition BKE_curve.hh:55
int vertex_index
Definition BKE_curve.hh:55
void * orig_cv
Definition BKE_curve.hh:54
bool switched
Definition BKE_curve.hh:56
ListBase bev
Definition BKE_curve.hh:41
ListBase disp
Definition BKE_curve.hh:40
ListBase deformed_nurbs
Definition BKE_curve.hh:42
const float * anim_path_accum_length
Definition BKE_curve.hh:49
uint8_t flag
Definition wm_window.cc:145