|
Blender V4.3
|
#include <BKE_curves.hh>
Inherits CurvesGeometry.
Classes | |
| struct | BlendWriteData |
#CurvesGeometry Inline Methods | |
| int | points_num () const |
| int | curves_num () const |
| IndexRange | points_range () const |
| IndexRange | curves_range () const |
| OffsetIndices< int > | points_by_curve () const |
| bool | has_curve_with_type (CurveType type) const |
| bool | has_curve_with_type (Span< CurveType > types) const |
| bool | is_single_type (CurveType type) const |
| const std::array< int, CURVE_TYPES_NUM > & | curve_type_counts () const |
| int | evaluated_points_num () const |
| Span< int > | bezier_evaluated_offsets_for_curve (int curve_index) const |
| Span< float > | evaluated_lengths_for_curve (int curve_index, bool cyclic) const |
| float | evaluated_length_total_for_curve (int curve_index, bool cyclic) const |
Evaluation | |
| IndexMask | indices_for_curve_type (CurveType type, IndexMaskMemory &memory) const |
| IndexMask | indices_for_curve_type (CurveType type, const IndexMask &selection, IndexMaskMemory &memory) const |
| Array< int > | point_to_curve_map () const |
| OffsetIndices< int > | evaluated_points_by_curve () const |
| Span< float3 > | evaluated_positions () const |
| Span< float3 > | evaluated_tangents () const |
| Span< float3 > | evaluated_normals () const |
| void | ensure_evaluated_lengths () const |
| void | ensure_can_interpolate_to_evaluated () const |
| void | interpolate_to_evaluated (int curve_index, GSpan src, GMutableSpan dst) const |
| void | interpolate_to_evaluated (GSpan src, GMutableSpan dst) const |
Additional Inherited Members | |
Public Attributes inherited from CurvesGeometry | |
| int * | curve_offsets |
| CustomData | point_data |
| CustomData | curve_data |
| int | point_num |
| int | curve_num |
| ListBase | vertex_group_names |
| int | vertex_group_active_index |
| int | attributes_active_index |
| CurvesGeometryRuntimeHandle * | runtime |
A C++ class that wraps the DNA struct for better encapsulation and ease of use. It inherits directly from the struct rather than storing a pointer to avoid more complicated ownership handling.
Definition at line 135 of file BKE_curves.hh.
| CurvesGeometry::CurvesGeometry | ( | ) |
Definition at line 58 of file curves_geometry.cc.
Referenced by operator=(), and operator=().
Create curves with the given size. Only the position attribute is created, along with the offsets.
Definition at line 60 of file curves_geometry.cc.
References blender::bke::MutableAttributeAccessor::add(), attributes_for_write(), BLI_listbase_clear(), CurvesGeometry::curve_data, CurvesGeometry::curve_num, CurvesGeometry::curve_offsets, CURVE_TYPE_CATMULL_ROM, CustomData_reset(), blender::MutableSpan< T >::fill(), blender::implicit_sharing::info_for_mem_free(), MEM_malloc_arrayN, offsets_for_write(), blender::bke::Point, CurvesGeometry::point_data, CurvesGeometry::point_num, CurvesGeometry::runtime, and CurvesGeometry::vertex_group_names.
| CurvesGeometry::CurvesGeometry | ( | const CurvesGeometry & | other | ) |
Definition at line 93 of file curves_geometry.cc.
References CurvesGeometry::attributes_active_index, BKE_defgroup_copy_list(), CD_MASK_ALL, CurvesGeometry::curve_num, CurvesGeometry::curve_offsets, blender::bke::CurvesGeometryRuntime::curve_offsets_sharing_info, CustomData_init_from(), CurvesGeometry::point_num, CurvesGeometry::runtime, CurvesGeometry::vertex_group_active_index, and CurvesGeometry::vertex_group_names.
| CurvesGeometry::CurvesGeometry | ( | CurvesGeometry && | other | ) |
Definition at line 141 of file curves_geometry.cc.
References CurvesGeometry::attributes_active_index, BLI_listbase_clear(), CurvesGeometry::curve_data, CurvesGeometry::curve_num, CurvesGeometry::curve_offsets, CustomData_reset(), CurvesGeometry::point_data, CurvesGeometry::point_num, CurvesGeometry::runtime, CurvesGeometry::vertex_group_active_index, and CurvesGeometry::vertex_group_names.
| CurvesGeometry::~CurvesGeometry | ( | ) |
Definition at line 181 of file curves_geometry.cc.
References BLI_freelistN(), CurvesGeometry::curve_data, CurvesGeometry::curve_num, CurvesGeometry::curve_offsets, CustomData_free(), blender::implicit_sharing::free_shared_data(), CurvesGeometry::point_data, CurvesGeometry::point_num, CurvesGeometry::runtime, and CurvesGeometry::vertex_group_names.
Referenced by blender::bke::greasepencil::Drawing::~Drawing().
| GVArray CurvesGeometry::adapt_domain | ( | const GVArray & | varray, |
| AttrDomain | from, | ||
| AttrDomain | to ) const |
Definition at line 1542 of file curves_geometry.cc.
References blender::bke::adapt_curve_domain_curve_to_point(), blender::bke::adapt_curve_domain_point_to_curve(), BLI_assert_unreachable, BUFFER_FOR_CPP_TYPE_VALUE, blender::GVArray::ForSingle(), blender::GVArrayCommon::get_internal_single(), blender::GVArrayCommon::is_empty(), blender::GVArrayCommon::is_single(), and blender::GVArrayCommon::type().
Referenced by adapt_domain(), and blender::bke::get_curves_accessor_functions().
|
inline |
Definition at line 420 of file BKE_curves.hh.
References adapt_domain(), and blender::GVArray::typed().
| AttributeAccessor CurvesGeometry::attributes | ( | ) | const |
Definition at line 719 of file geometry_component_curves.cc.
References blender::bke::get_curves_accessor_functions_ref().
Referenced by blender::ed::greasepencil::apply_color_operation_for_mode(), attr_create_generic(), blender::ed::greasepencil::bake_grease_pencil_animation_exec(), BKE_grease_pencil_material_index_used(), blender::bke::build_mesh_positions(), blender::ed::spreadsheet::GreasePencilLayerCurvesDomainViewItem::build_row(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::nodes::node_geo_duplicate_elements_cc::copy_curve_attributes_without_id(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_curves(), blender::ed::greasepencil::create_curves_outline(), blender::create_dashes(), blender::create_envelope_strokes(), blender::ed::greasepencil::curves_geometry_is_equal(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_CurvesGeometry(), blender::ed::sculpt_paint::AddOperationExecutor::execute(), blender::ed::sculpt_paint::CombOperationExecutor::execute(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), blender::ed::sculpt_paint::PinchOperationExecutor::execute(), blender::ed::sculpt_paint::PuffOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), blender::ed::sculpt_paint::SmoothOperationExecutor::execute(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::execute(), export_hair_curves(), export_hair_curves_motion(), blender::geometry::extend_curves(), blender::geometry::extract_curves(), blender::geometry::extract_curves_points(), blender::geometry::extract_greasepencil_layer_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::ed::greasepencil::fill_strokes(), blender::geometry::fillet_curves(), blender::geometry::gather_curve_attributes_to_interpolate(), blender::geometry::gather_point_attributes_to_interpolate(), blender::geometry::gather_point_attributes_to_interpolate(), blender::ed::greasepencil::get_boundary_bounds(), blender::bke::AttributeExistsFieldInput::get_varray_for_context(), blender::ed::greasepencil::get_visible_boundary_strokes(), blender::io::grease_pencil::get_visible_strokes(), blender::ed::sculpt_paint::grease_pencil_apply_fill(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_attributes(), blender::geometry::join_curves_ranges(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), blender::nodes::node_geo_instance_on_points_cc::node_geo_exec(), OVERLAY_grease_pencil_material_names(), blender::geometry::reorder_and_flip_curves(), blender::geometry::reorder_curves_exec(), blender::reorder_cyclic_curve_points(), blender::draw::request_attribute(), blender::geometry::retrieve_attribute_spans(), blender::geometry::retrieve_attribute_spans(), blender::geometry::separate_curves_selection(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser(), blender::geometry::subdivide_curves(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), and blender::geometry::trim_curves().
| MutableAttributeAccessor CurvesGeometry::attributes_for_write | ( | ) |
Definition at line 724 of file geometry_component_curves.cc.
References blender::bke::get_curves_accessor_functions_ref().
Referenced by blender::ed::object::apply_eval_grease_pencil_data(), blender::nodes::ForeachElementComponent::attributes_for_write(), BKE_grease_pencil_material_index_remove(), BKE_grease_pencil_material_remap(), blender::build_concurrent(), blender::build_sequential(), blender::ed::greasepencil::clipboard_paste_strokes(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::nodes::node_geo_duplicate_elements_cc::copy_curve_attributes_without_id(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_curves(), blender::create_array_copies(), blender::create_dashes(), blender::create_envelope_strokes(), blender::nodes::node_geo_curves_to_grease_pencil_cc::curve_instances_to_grease_pencil_layers(), blender::bke::curves_copy_curve_selection(), CurvesGeometry(), blender::deform_drawing(), blender::ed::sculpt_paint::AddOperationExecutor::execute(), blender::geometry::execute_realize_curve_tasks(), blender::geometry::execute_realize_grease_pencil_task(), blender::geometry::extend_curves(), blender::geometry::extract_greasepencil_layer_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::ed::greasepencil::extrude_grease_pencil_curves(), fill_curve_types(), blender::geometry::fillet_curves(), blender::geometry::gather_point_attributes_to_interpolate(), blender::generate_curves(), blender::bke::get_attribute_accessor_for_write(), blender::ed::sculpt_paint::grease_pencil_apply_fill(), blender::ed::greasepencil::grease_pencil_vertex_paint_set_exec(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_attributes(), blender::geometry::join_curves_ranges(), MOD_lineart_gpencil_generate_v3(), blender::modify_fill_color(), blender::ed::sculpt_paint::greasepencil::PaintOperation::on_stroke_done(), blender::ed::greasepencil::remove_points_and_split(), blender::geometry::reorder_and_flip_curves(), blender::geometry::reorder_curves_exec(), blender::geometry::reorder_curves_geometry(), blender::reorder_cyclic_curve_points(), blender::ed::curves::resize_curves(), blender::geometry::retrieve_attribute_spans(), blender::geometry::retrieve_attribute_spans(), blender::nodes::node_geo_set_material_index_cc::set_material_index_in_grease_pencil(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser(), blender::nodes::node_geo_interpolate_curves_cc::store_output_attributes(), blender::geometry::subdivide_curves(), and blender::geometry::trim_curves().
Retrieve offsets into a Bezier curve's evaluated points for each control point. Stored in the same format as #OffsetIndices. Call evaluated_points_by_curve() first to ensure that the evaluated offsets cache is current.
Definition at line 929 of file BKE_curves.hh.
References blender::Span< T >::data(), offsets(), blender::bke::curves::per_curve_point_offsets_range(), points_by_curve(), CurvesGeometry::runtime, and blender::Span< T >::slice().
Referenced by blender::geometry::lookup_point_bezier().
| void CurvesGeometry::blend_read | ( | BlendDataReader & | reader | ) |
Definition at line 1578 of file curves_geometry.cc.
References BLO_read_int32_array(), BLO_read_shared(), BLO_read_struct_list, blender::bke::CurvesGeometryRuntime::curve_offsets_sharing_info, CustomData_blend_read(), and blender::implicit_sharing::info_for_mem_free().
| void CurvesGeometry::blend_write | ( | BlendWriter & | writer, |
| ID & | id, | ||
| const BlendWriteData & | write_data ) |
Definition at line 1607 of file curves_geometry.cc.
References BKE_defbase_blend_write(), BLO_write_shared(), CD_MASK_ALL, blender::bke::CurvesGeometryRuntime::curve_offsets_sharing_info, and CustomData_blend_write().
| CurvesGeometry::BlendWriteData CurvesGeometry::blend_write_prepare | ( | ) |
This function needs to be called before blend_write and before the CurvesGeometry struct is written because it can mutate the CustomData struct.
Definition at line 1599 of file curves_geometry.cc.
References CustomData_blend_write_prepare().
The largest and smallest position values of evaluated points.
Definition at line 1190 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::bounds_cache, and blender::bounds::min_max().
Referenced by blender::create_array_copies(), blender::io::grease_pencil::shift_to_bounds_center(), and blender::bke::tests::TEST().
| void CurvesGeometry::calculate_bezier_auto_handles | ( | ) |
Definition at line 1114 of file curves_geometry.cc.
References CURVE_TYPE_BEZIER, blender::threading::parallel_for(), range, and blender::MutableSpan< T >::slice().
Referenced by blender::geometry::convert_curves_to_bezier().
| void CurvesGeometry::count_memory | ( | MemoryCounter & | memory | ) | const |
Definition at line 1200 of file curves_geometry.cc.
References blender::memory_counter::MemoryCounter::add_shared(), blender::bke::CurvesGeometryRuntime::curve_offsets_sharing_info, and CustomData_count_memory().
|
inline |
Return the number of curves with each type.
Definition at line 903 of file BKE_curves.hh.
References BLI_assert, blender::bke::calculate_type_counts(), curve_types(), and CurvesGeometry::runtime.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::draw::DRW_curves_batch_cache_create_requested(), blender::geometry::gather_point_attributes_to_interpolate(), blender::geometry::gather_point_attributes_to_interpolate(), has_curve_with_type(), is_single_type(), blender::geometry::subdivide_curves(), and blender::geometry::trim_curves().
The type (CurveType) of each curve, or potentially a single if all are the same type.
Definition at line 272 of file curves_geometry.cc.
References blender::bke::ATTR_CURVE_TYPE, blender::bke::Curve, CURVE_TYPE_CATMULL_ROM, and blender::bke::get_varray_attribute().
Referenced by blender::geometry::convert_bezier_or_catmull_rom_to_poly_before_conversion_to_nurbs(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), curve_type_counts(), blender::draw::DRW_curves_batch_cache_create_requested(), fill_curve_types(), blender::geometry::resample_to_uniform(), blender::geometry::sample_curve_attribute(), blender::geometry::subdivide_curves(), and blender::geometry::trim_curves().
| MutableSpan< int8_t > CurvesGeometry::curve_types_for_write | ( | ) |
Mutable access to curve types. Call tag_topology_changed and update_curve_types after changing any type. Consider using the other methods to change types below.
Definition at line 278 of file curves_geometry.cc.
References blender::bke::ATTR_CURVE_TYPE, blender::bke::Curve, and blender::bke::get_mutable_attribute().
Referenced by fill_curve_types(), and fill_curve_types().
|
inline |
The number of curves in the data-block.
Definition at line 874 of file BKE_curves.hh.
References CurvesGeometry::curve_num.
Referenced by blender::ed::curves::append_primitive_curve(), blender::build_drawing(), blender::bke::calculate_result_offsets(), blender::ed::greasepencil::clipboard_paste_strokes(), blender::ed::greasepencil::compute_topology_change(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::bke::curves::copy_only_curve_domain(), blender::bke::create_attribute_providers_for_curve(), blender::create_envelope_strokes(), blender::nodes::node_geo_curve_fill_cc::curve_fill_calculate(), blender::bke::curves_copy_curve_selection(), blender::ed::curves::curves_draw_exec(), blender::ed::greasepencil::curves_geometry_is_equal(), blender::ed::greasepencil::curves_merge_by_distance(), blender::geometry::curves_merge_endpoints(), blender::ed::greasepencil::curves_merge_endpoints_by_distance(), curves_range(), blender::ed::sculpt_paint::AddOperationExecutor::ensure_curve_roots_kdtree(), blender::ed::sculpt_paint::CombOperationExecutor::execute(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), blender::ed::sculpt_paint::DeleteOperationExecutor::execute(), blender::ed::sculpt_paint::DensityAddOperationExecutor::execute(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::ed::sculpt_paint::PinchOperationExecutor::execute(), blender::ed::sculpt_paint::PuffOperationExecutor::execute(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), blender::ed::sculpt_paint::SmoothOperationExecutor::execute(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::execute(), blender::geometry::extend_curves(), blender::ed::curves::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), fill_curve_types(), blender::geometry::fillet_curves(), blender::ed::sculpt_paint::grease_pencil_apply_fill(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::ed::greasepencil::grease_pencil_paste_strokes_poll(), blender::geometry::interpolate_curves(), is_single_type(), blender::ed::greasepencil::join_curves(), blender::geometry::join_curves(), blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec(), blender::nodes::node_geo_instance_on_points_cc::node_geo_exec(), blender::nodes::node_geo_interpolate_curves_cc::parameterize_guide_curves(), blender::points_info_sequential(), blender::ed::sculpt_paint::DensityAddOperationExecutor::prepare_curve_roots_kdtrees(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_projected(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_spherical(), blender::reorder_cyclic_curve_points(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::ed::curves::resize_curves(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::stroke_eraser(), blender::geometry::subdivide_curves(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::trim_curves(), and blender::nodes::node_geo_curve_trim_cc::trim_curves().
|
inline |
Definition at line 882 of file BKE_curves.hh.
References curves_num().
Referenced by blender::ed::greasepencil::bake_grease_pencil_animation_exec(), blender::ed::greasepencil::compute_topology_change(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::create_envelope_strokes(), blender::ed::greasepencil::curves_merge_by_distance(), blender::ed::greasepencil::curves_merge_endpoints_by_distance(), blender::draw::DRW_curves_batch_cache_create_requested(), blender::ed::sculpt_paint::AddOperationExecutor::ensure_curve_roots_kdtree(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::ed::sculpt_paint::greasepencil::PaintOperationExecutor::execute(), blender::geometry::extend_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::nodes::node_geo_curve_fillet_cc::fillet_curve(), blender::geometry::fillet_curves(), blender::geometry::find_connected_ranges(), blender::ed::sculpt_paint::greasepencil::find_curve_mapping_from_index(), blender::ed::greasepencil::trim::get_intersections_of_curve_with_curves(), blender::ed::greasepencil::get_visible_boundary_strokes(), blender::io::grease_pencil::get_visible_strokes(), blender::ed::sculpt_paint::grease_pencil_apply_fill(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::hard_eraser(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_attributes(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_shapes(), blender::ed::sculpt_paint::greasepencil::PaintOperation::on_stroke_done(), OVERLAY_grease_pencil_material_names(), blender::nodes::node_geo_interpolate_curves_cc::parameterize_guide_curves(), blender::ed::sculpt_paint::DensityAddOperationExecutor::prepare_curve_roots_kdtrees(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_projected(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_spherical(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::geometry::resample_to_uniform(), blender::ed::greasepencil::retrieve_editable_strokes_by_material(), blender::ed::greasepencil::retrieve_visible_strokes(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser(), blender::nodes::node_geo_interpolate_curves_cc::store_output_attributes(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::stroke_eraser(), blender::geometry::subdivide_curves(), blender::nodes::node_geo_curve_subdivide_cc::subdivide_curves(), blender::subdivide_drawing(), blender::nodes::node_geo_curve_subdivide_cc::subdivide_grease_pencil_curves(), blender::ed::greasepencil::trim::trim_curve_segments(), and blender::geometry::trim_curves().
| VArray< bool > CurvesGeometry::cyclic | ( | ) | const |
Whether the curve loops around to connect to itself, on the curve domain.
Definition at line 379 of file curves_geometry.cc.
References blender::bke::ATTR_CYCLIC.
Referenced by blender::ed::greasepencil::compute_topology_change(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::create_dashes(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::curves_intersections_and_points_sides(), blender::ed::greasepencil::curves_merge_by_distance(), blender::geometry::curves_merge_endpoints(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::geometry::fillet_curves(), blender::ed::greasepencil::trim::get_intersections_of_curve_with_curves(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::hard_eraser(), blender::geometry::interpolate_curves(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::stroke_eraser(), blender::geometry::subdivide_curves(), blender::bke::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::trim_catmull_rom_curves(), and blender::ed::greasepencil::trim::trim_curve_segments().
| MutableSpan< bool > CurvesGeometry::cyclic_for_write | ( | ) |
Mutable access to curve cyclic values. Call tag_topology_changed after changes.
Definition at line 383 of file curves_geometry.cc.
References blender::bke::ATTR_CYCLIC.
Referenced by blender::geometry::curves_merge_endpoints(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::ed::space_node::node_draw_zones_and_frames(), and blender::ed::greasepencil::remove_points_and_split().
| Span< MDeformVert > CurvesGeometry::deform_verts | ( | ) | const |
Vertex group data, encoded as an array of indices and weights for every vertex.
Definition at line 488 of file curves_geometry.cc.
References CD_MDEFORMVERT, and CustomData_get_layer().
| MutableSpan< MDeformVert > CurvesGeometry::deform_verts_for_write | ( | ) |
Definition at line 498 of file curves_geometry.cc.
References CD_MDEFORMVERT, CD_SET_DEFAULT, CustomData_add_layer(), and CustomData_get_layer_for_write().
| void CurvesGeometry::ensure_can_interpolate_to_evaluated | ( | ) | const |
Definition at line 1033 of file curves_geometry.cc.
Referenced by blender::geometry::resample_to_evaluated().
| void CurvesGeometry::ensure_evaluated_lengths | ( | ) | const |
Calculates the data described by evaluated_lengths_for_curve if necessary.
Definition at line 1006 of file curves_geometry.cc.
References blender::length_parameterize::accumulate_lengths(), blender::bke::CurvesGeometryRuntime::evaluated_length_cache, blender::threading::parallel_for(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), blender::MutableSpan< T >::slice(), and blender::Span< T >::slice().
Referenced by blender::ed::greasepencil::curves_merge_by_distance(), blender::geometry::extend_curves(), blender::geometry::interpolate_curves(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), and blender::geometry::trim_curves().
|
inline |
Definition at line 954 of file BKE_curves.hh.
References evaluated_lengths_for_curve().
Referenced by blender::geometry::extend_curves(), and blender::geometry::resample_to_length().
|
inline |
Return a cache of accumulated lengths along the curve. Each item is the length of the subsequent segment (the first value is the length of the first segment rather than 0). This calculation is rather trivial, and only depends on the evaluated positions, but the results are used often, and it is necessarily single threaded per curve, so it is cached.
| cyclic | This argument is redundant with the data stored for the curve, but is passed for performance reasons to avoid looking up the attribute. |
Definition at line 947 of file BKE_curves.hh.
References CurvesGeometry::runtime.
Referenced by evaluated_length_total_for_curve(), blender::geometry::interpolate_curves(), and blender::geometry::resample_to_uniform().
Definition at line 865 of file curves_geometry.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::as_mutable_span(), blender::Vector< T, InlineBufferCapacity, Allocator >::as_span(), CURVE_TYPE_POLY, blender::bke::evaluate_generic_data_for_curve(), blender::bke::CurvesGeometryRuntime::evaluated_normal_cache, blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, blender::Span< T >::is_empty(), NORMAL_MODE_FREE, NORMAL_MODE_MINIMUM_TWIST, NORMAL_MODE_Z_UP, blender::bke::normalize_span(), blender::bke::CurvesGeometryRuntime::nurbs_basis_cache, blender::threading::parallel_for(), blender::Vector< T, InlineBufferCapacity, Allocator >::reinitialize(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), blender::bke::rotate_directions_around_axes(), blender::IndexRange::size(), blender::MutableSpan< T >::slice(), blender::Span< T >::slice(), and types.
Referenced by blender::bke::build_mesh_positions(), and blender::geometry::gather_point_attributes_to_interpolate().
| OffsetIndices< int > CurvesGeometry::evaluated_points_by_curve | ( | ) | const |
The offsets of every curve's evaluated points.
Definition at line 574 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::EvaluatedOffsets::all_bezier_offsets, blender::Vector< T, InlineBufferCapacity, Allocator >::clear_and_shrink(), CURVE_TYPE_BEZIER, CURVE_TYPE_POLY, blender::bke::CurvesGeometryRuntime::EvaluatedOffsets::evaluated_offsets, blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, and blender::Vector< T, InlineBufferCapacity, Allocator >::resize().
Referenced by blender::bke::calculate_result_offsets(), evaluated_points_num(), blender::bke::foreach_curve_combination(), grease_pencil_object_cache_populate(), OVERLAY_outline_grease_pencil(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), blender::geometry::sample_curve_attribute(), and blender::geometry::trim_evaluated_curves().
|
inline |
The total number of points in the evaluated poly curve. This can depend on the resolution attribute if it exists.
Definition at line 923 of file BKE_curves.hh.
References evaluated_points_by_curve().
Referenced by blender::ed::greasepencil::build_curves_2d_bvh_from_visible(), and blender::draw::grease_pencil_edit_batch_ensure().
Definition at line 667 of file curves_geometry.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::clear_and_shrink(), blender::array_utils::copy_group_to_group(), CURVE_TYPE_POLY, blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, blender::bke::CurvesGeometryRuntime::evaluated_position_cache, blender::Span< T >::is_empty(), blender::bke::CurvesGeometryRuntime::nurbs_basis_cache, blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), selection, blender::MutableSpan< T >::slice(), blender::Span< T >::slice(), and blender::Span< T >::slice_safe().
Referenced by blender::bke::build_mesh_positions(), blender::geometry::interpolate_curves(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), blender::geometry::trim_curves(), and blender::geometry::trim_evaluated_curves().
Definition at line 746 of file curves_geometry.cc.
References blender::math::almost_equal_relative(), CURVE_TYPE_BEZIER, blender::bke::CurvesGeometryRuntime::evaluated_tangent_cache, blender::index_mask::IndexMask::foreach_index(), blender::index_mask::IndexMask::is_empty(), blender::threading::parallel_for(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), blender::MutableSpan< T >::slice(), and blender::Span< T >::slice().
Referenced by blender::bke::build_mesh_positions(), blender::deform_drawing(), blender::geometry::gather_point_attributes_to_interpolate(), and blender::generate_curves().
Set the types for the curves in the selection and call update_curve_types.
Definition at line 298 of file curves_geometry.cc.
References curve_types(), curve_types_for_write(), fill_curve_types(), blender::index_mask::masked_fill(), tag_topology_changed(), and update_curve_types().
| void CurvesGeometry::fill_curve_types | ( | CurveType | type | ) |
Set all curve types to the value and call update_curve_types.
Definition at line 283 of file curves_geometry.cc.
References attributes_for_write(), CURVE_TYPE_CATMULL_ROM, curve_types_for_write(), curves_num(), blender::bke::MutableAttributeAccessor::remove(), CurvesGeometry::runtime, and tag_topology_changed().
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::geometry::convert_curves_trivial(), fill_curve_types(), blender::geometry::interpolate_curves(), MOD_lineart_gpencil_generate_v3(), blender::ed::space_node::node_draw_zones_and_frames(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), and blender::geometry::trim_curves().
The positions of Bezier curve handles. Though these are really control points for the Bezier segments, they are stored in separate arrays to better reflect user expectations. Note that values may be generated automatically based on the handle types. Call tag_positions_changed after changes.
Definition at line 433 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_LEFT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
| MutableSpan< float3 > CurvesGeometry::handle_positions_left_for_write | ( | ) |
Definition at line 437 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_LEFT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fill_bezier_data(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
Definition at line 442 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_RIGHT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
| MutableSpan< float3 > CurvesGeometry::handle_positions_right_for_write | ( | ) |
Definition at line 446 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_RIGHT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fill_bezier_data(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
Handle types for Bezier control points. Call tag_topology_changed after changes.
Definition at line 415 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_TYPE_LEFT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
| MutableSpan< int8_t > CurvesGeometry::handle_types_left_for_write | ( | ) |
Definition at line 419 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_TYPE_LEFT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fill_bezier_data(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
Definition at line 424 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_TYPE_RIGHT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
| MutableSpan< int8_t > CurvesGeometry::handle_types_right_for_write | ( | ) |
Definition at line 428 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_TYPE_RIGHT.
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::fill_bezier_data(), blender::geometry::fillet_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_bezier_curves().
|
inline |
Definition at line 892 of file BKE_curves.hh.
References curve_type_counts().
Referenced by blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::fill_bezier_data(), blender::geometry::fill_nurbs_data(), blender::geometry::fillet_curves(), and blender::geometry::trim_curves().
Definition at line 897 of file BKE_curves.hh.
| IndexMask CurvesGeometry::indices_for_curve_type | ( | CurveType | type, |
| const IndexMask & | selection, | ||
| IndexMaskMemory & | memory ) const |
Definition at line 609 of file curves_geometry.cc.
| IndexMask CurvesGeometry::indices_for_curve_type | ( | CurveType | type, |
| IndexMaskMemory & | memory ) const |
All of the curve indices for curves with a specific type.
Definition at line 603 of file curves_geometry.cc.
| void CurvesGeometry::interpolate_to_evaluated | ( | GSpan | src, |
| GMutableSpan | dst ) const |
Evaluate generic data for curve control points to the standard evaluated points of the curves.
Definition at line 980 of file curves_geometry.cc.
References blender::bke::evaluate_generic_data_for_curve(), blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, blender::bke::CurvesGeometryRuntime::nurbs_basis_cache, blender::threading::parallel_for(), blender::GMutableSpan::slice(), and blender::GSpan::slice().
| void CurvesGeometry::interpolate_to_evaluated | ( | int | curve_index, |
| GSpan | src, | ||
| GMutableSpan | dst ) const |
Evaluate a generic data to the standard evaluated points of a specific curve, defined by the resolution attribute or other factors, depending on the curve type.
Definition at line 960 of file curves_geometry.cc.
References BLI_assert, blender::bke::evaluate_generic_data_for_curve(), blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, blender::bke::CurvesGeometryRuntime::nurbs_basis_cache, blender::GMutableSpan::size(), and blender::GSpan::size().
Referenced by blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), and blender::geometry::sample_curve_attribute().
|
inline |
Return true if all of the curves have the provided type.
Definition at line 887 of file BKE_curves.hh.
References curve_type_counts(), and curves_num().
Referenced by blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec().
Which method to use for calculating the normals of evaluated points (NormalMode). Call tag_normals_changed after changes.
Definition at line 397 of file curves_geometry.cc.
References blender::bke::ATTR_NORMAL_MODE.
| MutableSpan< int8_t > CurvesGeometry::normal_mode_for_write | ( | ) |
Definition at line 401 of file curves_geometry.cc.
References blender::bke::ATTR_NORMAL_MODE.
The automatic generation mode for each NURBS curve's knots vector, on the curve domain. Call tag_topology_changed after changes.
Definition at line 469 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_KNOTS_MODE.
Referenced by blender::geometry::convert_curves_to_bezier().
| MutableSpan< int8_t > CurvesGeometry::nurbs_knots_modes_for_write | ( | ) |
Definition at line 473 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_KNOTS_MODE.
Referenced by blender::geometry::convert_curves_to_nurbs().
The order (degree plus one) of each NURBS curve, on the curve domain. Call tag_topology_changed after changes.
Definition at line 451 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_ORDER.
| MutableSpan< int8_t > CurvesGeometry::nurbs_orders_for_write | ( | ) |
Definition at line 455 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_ORDER.
Referenced by blender::geometry::convert_curves_to_nurbs().
The weight for each control point for NURBS curves. Call tag_positions_changed after changes.
Definition at line 460 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_WEIGHT.
Referenced by blender::geometry::convert_curves_to_nurbs().
| MutableSpan< float > CurvesGeometry::nurbs_weights_for_write | ( | ) |
Definition at line 464 of file curves_geometry.cc.
References blender::bke::ATTR_NURBS_WEIGHT.
Referenced by blender::geometry::convert_curves_to_nurbs(), and blender::geometry::fill_nurbs_data().
The index of the first point in every curve. The size of this span is one larger than the number of curves, but the spans will be empty if there are no curves/points.
Consider using points_by_curve rather than these offsets directly.
Definition at line 362 of file curves_geometry.cc.
Referenced by bezier_evaluated_offsets_for_curve(), blender::nodes::node_geo_interpolate_curves_cc::build_kdtrees_for_root_positions(), blender::create_envelope_strokes(), blender::ed::greasepencil::curves_geometry_is_equal(), blender::ed::sculpt_paint::AddOperationExecutor::ensure_curve_roots_kdtree(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::geometry::fillet_curves(), blender::ed::sculpt_paint::SlideOperationExecutor::find_curves_to_slide(), blender::ed::sculpt_paint::DensityAddOperationExecutor::prepare_curve_roots_kdtrees(), blender::geometry::reorder_and_flip_curves(), blender::geometry::reorder_curves_exec(), blender::ed::curves::resize_curves(), blender::geometry::subdivide_curves(), blender::bke::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), and blender::geometry::trim_curves().
| MutableSpan< int > CurvesGeometry::offsets_for_write | ( | ) |
Definition at line 369 of file curves_geometry.cc.
References blender::implicit_sharing::make_trivial_data_mutable().
Referenced by blender::build_concurrent(), blender::build_sequential(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::create_dashes(), blender::create_envelope_strokes(), blender::bke::curves_copy_curve_selection(), blender::ed::greasepencil::curves_merge_by_distance(), blender::bke::curves_new_nomain_single(), CurvesGeometry(), blender::geometry::execute_realize_curve_task(), blender::geometry::execute_realize_curve_tasks(), blender::geometry::extend_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::ed::curves::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::geometry::fillet_curves(), blender::nodes::node_geo_interpolate_curves_cc::generate_interpolated_curves(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::geometry::join_curves_ranges(), MOD_lineart_gpencil_generate_v3(), blender::ed::space_node::node_draw_zones_and_frames(), blender::ed::greasepencil::remove_points_and_split(), blender::geometry::reorder_and_flip_curves(), blender::geometry::reorder_curves_exec(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::ed::curves::resize_curves(), blender::geometry::subdivide_curves(), and blender::geometry::trim_curves().
| CurvesGeometry & CurvesGeometry::operator= | ( | const CurvesGeometry & | other | ) |
Definition at line 131 of file curves_geometry.cc.
References CurvesGeometry().
| CurvesGeometry & CurvesGeometry::operator= | ( | CurvesGeometry && | other | ) |
Definition at line 171 of file curves_geometry.cc.
References CurvesGeometry().
Definition at line 617 of file curves_geometry.cc.
References blender::offset_indices::build_reverse_map().
Referenced by blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_CurvesGeometry(), blender::geometry::extract_curves_points(), and blender::geometry::extract_greasepencil_layer_points().
|
inline |
The offsets of every curve into arrays on the points domain.
Definition at line 917 of file BKE_curves.hh.
References CurvesGeometry::curve_num, and CurvesGeometry::curve_offsets.
Referenced by bezier_evaluated_offsets_for_curve(), blender::geometry::calculate_result_offsets(), blender::ed::sculpt_paint::CombOperationExecutor::comb_projected(), blender::ed::sculpt_paint::CombOperationExecutor::comb_spherical(), blender::io::grease_pencil::compute_drawing_bounds(), blender::nodes::node_geo_interpolate_curves_cc::compute_point_counts_per_child(), blender::nodes::node_geo_interpolate_curves_cc::compute_points_per_curve_by_group(), blender::ed::greasepencil::compute_topology_change(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::nodes::node_geo_duplicate_elements_cc::copy_curve_attributes_without_id(), blender::geometry::copy_or_defaults_for_unselected_curves(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_curves(), blender::create_dashes(), blender::create_envelope_strokes(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::curves_intersections_and_points_sides(), blender::ed::greasepencil::curves_merge_by_distance(), blender::ed::greasepencil::curves_merge_endpoints_by_distance(), blender::deform_drawing(), blender::ed::sculpt_paint::DeleteOperationExecutor::delete_projected(), blender::ed::sculpt_paint::DeleteOperationExecutor::delete_spherical(), blender::ed::sculpt_paint::greasepencil::deselect_stroke(), blender::draw::DRW_curves_batch_cache_create_requested(), blender::ed::sculpt_paint::CombOperationExecutor::execute(), blender::ed::sculpt_paint::DeleteOperationExecutor::execute(), blender::ed::greasepencil::execute_trim_on_drawing(), blender::ed::greasepencil::trim::expand_trim_segment_direction(), export_hair_curves(), export_hair_curves_motion(), blender::geometry::extend_curves(), blender::geometry::extract_curves(), blender::geometry::extract_greasepencil_layer_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::geometry::fill_bezier_data(), blender::geometry::fill_nurbs_data(), blender::geometry::fillet_curves(), blender::ed::sculpt_paint::PuffOperationExecutor::find_curve_weights_projected(), blender::ed::sculpt_paint::PuffOperationExecutor::find_curves_weights_spherical(), blender::ed::sculpt_paint::SmoothOperationExecutor::find_projected_smooth_factors(), blender::ed::sculpt_paint::SmoothOperationExecutor::find_spherical_smooth_factors(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::gather_influences_projected(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::gather_influences_spherical(), blender::ed::greasepencil::get_boundary_bounds(), blender::ed::greasepencil::trim::get_intersections_of_curve_with_curves(), blender::ed::greasepencil::get_visible_boundary_strokes(), blender::io::grease_pencil::get_visible_strokes(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), blender::ed::greasepencil::grease_pencil_primitive_update_curves(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::hard_eraser(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_attributes(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_shapes(), blender::geometry::interpolate_curves(), blender::geometry::join_curves_ranges(), blender::ed::sculpt_paint::greasepencil::PaintOperation::on_stroke_done(), OVERLAY_grease_pencil_material_names(), blender::nodes::node_geo_interpolate_curves_cc::parameterize_guide_curves(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_projected(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_spherical(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::projected_snake_hook(), blender::ed::sculpt_paint::PuffOperationExecutor::puff(), blender::reorder_cyclic_curve_points(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::geometry::resample_to_uniform(), blender::ed::curves::resize_curves(), blender::geometry::sample_curve_attribute(), blender::ed::sculpt_paint::SlideOperationExecutor::slide(), blender::ed::sculpt_paint::SmoothOperationExecutor::smooth(), blender::ed::sculpt_paint::greasepencil::smooth_stroke(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::spherical_snake_hook(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::stroke_eraser(), blender::geometry::subdivide_curves(), blender::subdivide_drawing(), blender::geometry::trim_attribute_linear(), blender::geometry::trim_bezier_curves(), blender::geometry::trim_catmull_rom_curves(), blender::ed::greasepencil::trim::trim_curve_segments(), blender::geometry::trim_curves(), blender::ed::sculpt_paint::greasepencil::trim_end_points(), blender::geometry::trim_evaluated_curves(), and blender::geometry::trim_polygonal_curves().
|
inline |
The total number of control points in all curves.
Definition at line 870 of file BKE_curves.hh.
References CurvesGeometry::point_num.
Referenced by blender::ed::curves::append_primitive_curve(), BKE_grease_pencil_stroke_point_count(), blender::bke::build_mesh_positions(), blender::bke::create_attribute_providers_for_curve(), blender::create_envelope_strokes(), blender::ed::greasepencil::curves_geometry_is_equal(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::curves_intersections_and_points_sides(), blender::ed::greasepencil::curves_merge_by_distance(), blender::deform_drawing(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_CurvesGeometry(), blender::duplicate_strokes(), blender::ed::curves::subdivide::exec(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::execute(), blender::ed::sculpt_paint::SmoothOperationExecutor::execute(), blender::ed::greasepencil::execute_trim_on_drawing(), blender::geometry::extend_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::nodes::node_geo_curve_fillet_cc::fillet_curve(), blender::geometry::fillet_curves(), blender::geometry::fillet_curves_bezier(), blender::nodes::node_geo_curve_fillet_cc::fillet_grease_pencil(), blender::bke::get_curves_accessor_functions(), blender::bke::crazyspace::get_evaluated_curves_deformation(), blender::bke::crazyspace::get_evaluated_grease_pencil_drawing_deformation(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::draw::grease_pencil_edit_batch_ensure(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), blender::ed::greasepencil::grease_pencil_primitive_init_curves(), blender::draw::grease_pencil_weight_batch_ensure(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::hard_eraser(), blender::geometry::interpolate_curves(), blender::geometry::join_curves_ranges(), blender::ed::sculpt_paint::greasepencil::TintOperation::on_stroke_begin(), blender::ed::curves::point_normals_array_create(), points_range(), blender::bke::remember_deformed_curve_positions_if_necessary(), blender::bke::remember_deformed_grease_pencil_if_necessary(), blender::reorder_cyclic_curve_points(), blender::geometry::resample_to_uniform(), blender::nodes::node_geo_set_position_cc::set_position_in_grease_pencil(), blender::ed::sculpt_paint::greasepencil::simplify_stroke(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser(), blender::geometry::subdivide_curves(), blender::nodes::node_geo_curve_subdivide_cc::subdivide_curves(), blender::subdivide_drawing(), blender::nodes::node_geo_curve_subdivide_cc::subdivide_grease_pencil_curves(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::geometry::tests::TEST(), blender::ed::greasepencil::trim::trim_curve_segments(), and blender::ed::sculpt_paint::greasepencil::trim_stroke_ends().
|
inline |
Definition at line 878 of file BKE_curves.hh.
References points_num().
Referenced by blender::create_envelope_strokes(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::curves_intersections_and_points_sides(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::execute(), blender::ed::greasepencil::execute_trim_on_drawing(), blender::ed::object::object_convert_exec(), blender::ed::sculpt_paint::greasepencil::TintOperation::on_stroke_begin(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::paint_point_selection_projected(), blender::ed::greasepencil::retrieve_visible_points(), and blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::soft_eraser().
Definition at line 353 of file curves_geometry.cc.
References ATTR_POSITION.
Referenced by blender::nodes::node_geo_interpolate_curves_cc::build_kdtrees_for_root_positions(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::geometry::copy_or_defaults_for_unselected_curves(), blender::ed::greasepencil::create_curves_outline(), blender::ed::greasepencil::curves_merge_endpoints_by_distance(), blender::ed::sculpt_paint::AddOperationExecutor::ensure_curve_roots_kdtree(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), export_hair_curves(), export_hair_curves_motion(), blender::geometry::fillet_curves(), blender::bke::crazyspace::get_evaluated_curves_deformation(), blender::bke::crazyspace::get_evaluated_grease_pencil_drawing_deformation(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_shapes(), blender::ed::sculpt_paint::greasepencil::outline_stroke(), OVERLAY_grease_pencil_material_names(), blender::ed::sculpt_paint::DensityAddOperationExecutor::prepare_curve_roots_kdtrees(), blender::geometry::subdivide_curves(), blender::bke::tests::TEST(), blender::geometry::trim_bezier_curves(), blender::geometry::trim_catmull_rom_curves(), and blender::geometry::trim_polygonal_curves().
| MutableSpan< float3 > CurvesGeometry::positions_for_write | ( | ) |
Definition at line 357 of file curves_geometry.cc.
References ATTR_POSITION.
Referenced by blender::ed::sculpt_paint::CombOperationExecutor::comb_projected(), blender::ed::sculpt_paint::CombOperationExecutor::comb_spherical(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::geometry::copy_or_defaults_for_unselected_curves(), blender::deform_drawing(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), blender::geometry::execute_realize_curve_task(), blender::geometry::extend_curves(), blender::geometry::fillet_curves(), blender::generate_curves(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), blender::nodes::node_geo_interpolate_curves_cc::interpolate_curve_shapes(), blender::geometry::interpolate_curves(), MOD_lineart_gpencil_generate_v3(), blender::ed::space_node::node_draw_zones_and_frames(), blender::ed::object::object_convert_exec(), blender::ed::sculpt_paint::greasepencil::outline_stroke(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_projected(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_spherical(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::projected_snake_hook(), blender::ed::sculpt_paint::PuffOperationExecutor::puff(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), blender::ed::sculpt_paint::SlideOperationExecutor::slide(), blender::ed::sculpt_paint::SmoothOperationExecutor::smooth(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::spherical_snake_hook(), blender::geometry::subdivide_curves(), blender::subdivide_drawing(), blender::geometry::trim_bezier_curves(), blender::geometry::trim_catmull_rom_curves(), blender::geometry::trim_evaluated_curves(), and blender::geometry::trim_polygonal_curves().
| void CurvesGeometry::remove_attributes_based_on_types | ( | ) |
Remove any attributes that are unused based on the types in the curves.
Definition at line 1414 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_LEFT, blender::bke::ATTR_HANDLE_POSITION_RIGHT, blender::bke::ATTR_HANDLE_TYPE_LEFT, blender::bke::ATTR_HANDLE_TYPE_RIGHT, blender::bke::ATTR_NURBS_KNOTS_MODE, blender::bke::ATTR_NURBS_ORDER, blender::bke::ATTR_NURBS_WEIGHT, blender::bke::ATTR_RESOLUTION, CURVE_TYPE_BEZIER, CURVE_TYPE_CATMULL_ROM, and CURVE_TYPE_NURBS.
Referenced by blender::geometry::convert_curves_trivial(), blender::bke::curves_copy_curve_selection(), blender::ed::greasepencil::remove_points_and_split(), and blender::geometry::trim_curves().
| void CurvesGeometry::remove_curves | ( | const IndexMask & | curves_to_delete, |
| const AttributeFilter & | attribute_filter ) |
Definition at line 1314 of file curves_geometry.cc.
References blender::index_mask::IndexMask::complement(), blender::bke::curves_copy_curve_selection(), blender::index_mask::IndexMask::is_empty(), and blender::index_mask::IndexMask::size().
Referenced by blender::ed::greasepencil::grease_pencil_delete_exec(), blender::ed::greasepencil::grease_pencil_move_to_layer_exec(), blender::ed::greasepencil::grease_pencil_primitive_undo_curves(), blender::ed::greasepencil::grease_pencil_separate_layer(), blender::ed::greasepencil::grease_pencil_separate_material(), blender::ed::sculpt_paint::greasepencil::outline_stroke(), and blender::ed::sculpt_paint::greasepencil::trim_stroke_ends().
| void CurvesGeometry::remove_points | ( | const IndexMask & | points_to_delete, |
| const AttributeFilter & | attribute_filter ) |
Definition at line 1262 of file curves_geometry.cc.
References blender::index_mask::IndexMask::complement(), blender::bke::curves_copy_point_selection(), blender::index_mask::IndexMask::is_empty(), and blender::index_mask::IndexMask::size().
Referenced by blender::simplify_drawing(), and blender::ed::sculpt_paint::greasepencil::simplify_stroke().
Change the number of curves and/or points.
Definition at line 1045 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::curve_offsets_sharing_info, CustomData_realloc(), and blender::implicit_sharing::resize_trivial_array().
Referenced by blender::ed::greasepencil::compute_topology_change(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::bke::curves_copy_curve_selection(), blender::bke::curves_new_nomain(), blender::geometry::extend_curves(), blender::geometry::extract_greasepencil_layer_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::ed::curves::extrude_curves(), blender::geometry::fillet_curves(), blender::nodes::node_geo_interpolate_curves_cc::generate_interpolated_curves(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::bke::greasepencil::convert::legacy_gpencil_frame_to_grease_pencil_drawing(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::ed::curves::resize_curves(), blender::geometry::subdivide_curves(), blender::ed::greasepencil::tests::TEST(), and blender::geometry::trim_curves().
How many evaluated points to create for each segment when evaluating Bezier, Catmull Rom, and NURBS curves. On the curve domain. Values must be one or greater.
Definition at line 388 of file curves_geometry.cc.
References blender::bke::ATTR_RESOLUTION.
| MutableSpan< int > CurvesGeometry::resolution_for_write | ( | ) |
Mutable access to curve resolution. Call tag_topology_changed after changes.
Definition at line 392 of file curves_geometry.cc.
References blender::bke::ATTR_RESOLUTION.
| void CurvesGeometry::reverse_curves | ( | const IndexMask & | curves_to_reverse | ) |
Change the direction of selected curves (switch the start and end) without changing their shape.
Definition at line 1362 of file curves_geometry.cc.
References blender::bke::ATTR_HANDLE_POSITION_LEFT, blender::bke::ATTR_HANDLE_POSITION_RIGHT, blender::bke::ATTR_HANDLE_TYPE_LEFT, blender::bke::ATTR_HANDLE_TYPE_RIGHT, CD_PROP_STRING, blender::bke::AttributeIter::data_type, blender::bke::AttributeIter::domain, blender::bke::AttributeIter::name, and blender::bke::reverse_swap_curve_point_data().
Referenced by blender::ed::greasepencil::grease_pencil_stroke_switch_direction_exec().
UV coordinate for each curve that encodes where the curve is attached to the surface mesh.
Definition at line 478 of file curves_geometry.cc.
References blender::bke::ATTR_SURFACE_UV_COORDINATE.
Referenced by blender::ed::sculpt_paint::SlideOperationExecutor::execute(), and blender::ed::sculpt_paint::SlideOperationExecutor::find_curves_to_slide().
| MutableSpan< float2 > CurvesGeometry::surface_uv_coords_for_write | ( | ) |
Definition at line 483 of file curves_geometry.cc.
References blender::bke::ATTR_SURFACE_UV_COORDINATE.
Referenced by blender::ed::sculpt_paint::SlideOperationExecutor::slide().
| void CurvesGeometry::tag_normals_changed | ( | ) |
Call after changing the "tilt" or "up" attributes.
Definition at line 1080 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::evaluated_normal_cache.
Referenced by blender::bke::tag_component_normals_changed().
| void CurvesGeometry::tag_positions_changed | ( | ) |
Call after deforming the position attribute.
Definition at line 1065 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::bounds_cache, blender::bke::CurvesGeometryRuntime::evaluated_length_cache, blender::bke::CurvesGeometryRuntime::evaluated_normal_cache, blender::bke::CurvesGeometryRuntime::evaluated_position_cache, and blender::bke::CurvesGeometryRuntime::evaluated_tangent_cache.
Referenced by blender::ed::sculpt_paint::CombOperationExecutor::execute(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), blender::ed::sculpt_paint::PinchOperationExecutor::execute(), blender::ed::sculpt_paint::PuffOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), blender::ed::sculpt_paint::SmoothOperationExecutor::execute(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::execute(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_update(), and blender::bke::tag_component_positions_changed().
| void CurvesGeometry::tag_radii_changed | ( | ) |
Call when making manual changes to the "radius" attribute. The attribute API will also call this in #finish() calls.
Definition at line 1084 of file curves_geometry.cc.
Referenced by blender::bke::tag_component_radii_changed().
| void CurvesGeometry::tag_topology_changed | ( | ) |
Call after any operation that changes the topology (number of points, evaluated points, or the total count).
Definition at line 1073 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::check_type_counts, blender::bke::CurvesGeometryRuntime::evaluated_offsets_cache, and blender::bke::CurvesGeometryRuntime::nurbs_basis_cache.
Referenced by blender::ed::curves::append_primitive_curve(), fill_curve_types(), fill_curve_types(), blender::ed::sculpt_paint::grease_pencil_apply_fill(), blender::geometry::join_curves_ranges(), blender::geometry::reorder_and_flip_curves(), blender::geometry::reorder_curves_exec(), blender::bke::tag_component_topology_changed(), and blender::geometry::trim_curves().
The angle used to rotate evaluated normals around the tangents after their calculation. Call tag_normals_changed after changes.
Definition at line 406 of file curves_geometry.cc.
References blender::bke::ATTR_TILT.
| MutableSpan< float > CurvesGeometry::tilt_for_write | ( | ) |
Definition at line 410 of file curves_geometry.cc.
References blender::bke::ATTR_TILT.
| void CurvesGeometry::transform | ( | const float4x4 & | matrix | ) |
Definition at line 1173 of file curves_geometry.cc.
References blender::bke::transform_normals(), and transform_positions().
Referenced by blender::ed::greasepencil::join_curves(), blender::geometry::join_curves(), and blender::ed::greasepencil::join_object_with_active().
| void CurvesGeometry::translate | ( | const float3 & | translation | ) |
Definition at line 1146 of file curves_geometry.cc.
References blender::bke::CurvesGeometryRuntime::bounds_cache, blender::math::is_zero(), and translate_positions().
Referenced by blender::ed::object::object_origin_set_exec(), and blender::io::grease_pencil::shift_to_bounds_center().
| void CurvesGeometry::update_curve_types | ( | ) |
Update the cached count of curves of each type, necessary after curve_types_for_write.
Definition at line 348 of file curves_geometry.cc.
References blender::bke::calculate_type_counts().
Referenced by blender::build_concurrent(), blender::build_sequential(), blender::create_dashes(), blender::create_envelope_strokes(), blender::bke::curves_copy_curve_selection(), blender::geometry::extract_greasepencil_layer_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::ed::greasepencil::extrude_grease_pencil_curves(), fill_curve_types(), blender::ed::greasepencil::remove_points_and_split(), blender::ed::curves::resize_curves(), and blender::bke::tag_component_curve_types_changed().