18 positions_per_attribute.
append(
curves.positions_for_write());
20 positions_per_attribute.
append(
curves.handle_positions_left_for_write());
21 positions_per_attribute.
append(
curves.handle_positions_right_for_write());
23 return positions_per_attribute;
30 const std::optional<Span<float3>> handles_left =
curves.handle_positions_left();
31 const std::optional<Span<float3>> handles_right =
curves.handle_positions_right();
32 if (handles_left && handles_right) {
33 positions_per_attribute.
append(*handles_left);
34 positions_per_attribute.
append(*handles_right);
36 return positions_per_attribute;
41 const bool skip_handles)
46 std::array<IndexMask, 3> selection;
47 if (selection_names.
size() == 1) {
56 curves, selection_names[
i], bezier_points, memory);
66 const int size = selection[0].size() + selection[1].size() + selection[2].size();
76 for (
const int attribute_i : positions.
index_range()) {
79 tv.
loc = positions[attribute_i][
i];
84 offset += selection[attribute_i].size();
95 return reinterpret_cast<float (*)[3]
>(
data);
Low-level operations for curves.
Low-level operations for curves.
MINLINE void copy_v3_v3(float r[3], const float a[3])
Object is a sort of wrapper for general info.
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static IndexMask from_difference(const IndexMask &mask_a, const IndexMask &mask_b, IndexMaskMemory &memory)
constexpr int64_t size() const
constexpr IndexRange index_range() const
void append(const T &value)
IndexRange index_range() const
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
IndexMask curve_type_point_selection(const bke::CurvesGeometry &curves, CurveType curve_type, IndexMaskMemory &memory)
void curves_normals_point_domain_calc(const CurvesGeometry &curves, MutableSpan< float3 > normals)
void transverts_from_curves_positions_create(bke::CurvesGeometry &curves, TransVertStore *tvs, const bool skip_handles)
Vector< Span< float3 > > get_curves_positions(const bke::CurvesGeometry &curves)
float(* point_normals_array_create(const Curves *curves_id))[3]
Vector< MutableSpan< float3 > > get_curves_positions_for_write(bke::CurvesGeometry &curves)
Span< StringRef > get_curves_selection_attribute_names(const bke::CurvesGeometry &curves)
IndexMask retrieve_selected_points(const bke::CurvesGeometry &curves, IndexMaskMemory &memory)
VecBase< float, 3 > float3