17 positions_per_attribute.
append(
curves.positions_for_write());
19 positions_per_attribute.
append(
curves.handle_positions_left_for_write());
20 positions_per_attribute.
append(
curves.handle_positions_right_for_write());
22 return positions_per_attribute;
30 positions_per_attribute.
append(
curves.handle_positions_left());
31 positions_per_attribute.
append(
curves.handle_positions_right());
33 return positions_per_attribute;
38 const bool skip_handles)
43 std::array<IndexMask, 3> selection;
54 const int size = selection[0].size() + selection[1].size() + selection[2].size();
64 for (
const int attribute_i : positions.
index_range()) {
67 tv.
loc = positions[attribute_i][
i];
72 offset += selection[attribute_i].size();
83 return reinterpret_cast<float(*)[3]
>(
data);
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 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)
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