|
Blender V5.0
|
#include "DNA_curve_types.h"#include "BLI_heap.h"#include "BLI_math_vector.h"#include "MEM_guardedalloc.h"#include "BKE_curve.hh"#include "curve_fit_nd.h"#include <cstring>#include "BLI_strict_flags.h"Go to the source code of this file.
Classes | |
| struct | Knot |
| struct | Removal |
Macros | |
| #define | HANDLE_UPDATE(a, b) |
| #define | SELECT 1 |
Functions | |
| static float | knot_remove_error_value (const float tan_l[3], const float tan_r[3], const float(*points)[3], const uint points_len, float r_handle_factors[2]) |
| static void | knot_remove_error_recalculate (Heap *heap, const float(*points)[3], const uint points_len, Knot *k, const float error_sq_max) |
| static void | curve_decimate (const float(*points)[3], const uint points_len, Knot *knots, const uint knots_len, float error_sq_max, const uint error_target_len) |
| uint | BKE_curve_decimate_bezt_array (BezTriple *bezt_array, const uint bezt_array_len, const uint resolu, const bool is_cyclic, const char flag_test, const char flag_set, const float error_sq_max, const uint error_target_len) |
| void | BKE_curve_decimate_nurb (Nurb *nu, const uint resolu, const float error_sq_max, const uint error_target_len) |
| #define HANDLE_UPDATE | ( | a, | |
| b ) |
Referenced by BKE_curve_decimate_bezt_array().
| #define SELECT 1 |
Definition at line 304 of file curve_decimate.cc.
Referenced by act_markers_make_local_exec(), blender::ed::transform::ActionFCurveToTransData(), actkeys_find_key_in_list_element(), actkeys_select_leftright(), add_marker_to_cfra_elem(), adduplicateflagNurb(), anim_channels_select_set(), anim_channels_selection_flag_for_toggle(), ANIM_fcurve_equalize_keyframes_loop(), animchan_sync_fcurve_scene(), blender::ed::space_node::best_socket_output(), bezier_isfree(), bezt_calc_average(), blender::ed::transform::bezt_select_to_transform_triple_flag(), bezt_to_cfraelem(), blender::draw::beztriple_vflag_get(), BKE_curve_decimate_nurb(), BKE_curve_nurb_vert_active_validate(), BKE_curve_nurbs_vert_coords_apply(), BKE_curve_nurbs_vert_coords_apply_with_mat4(), BKE_fcurve_active_keyframe_index(), BKE_fcurve_delete_keys_selected(), BKE_fcurve_handles_recalc(), BKE_fcurve_has_selected_control_points(), BKE_lattice_is_any_selected(), BKE_mask_clipboard_copy_from_layer(), BKE_mask_point_select_set(), BKE_mask_point_select_set_handle(), BKE_mball_deselect_all(), BKE_mball_is_any_selected(), BKE_mball_is_any_unselected(), BKE_mball_select_all(), BKE_mball_select_count(), BKE_mball_select_swap(), BKE_mesh_to_curve_nurblist(), BKE_nurb_handle_calc(), BKE_nurb_handles_calc(), BKE_nurb_handles_test(), BKE_nurbList_handles_set(), BKE_object_defgroup_clear(), BKE_scene_orientation_slot_get(), BKE_scene_set_background(), BKE_tracking_plane_tracks_deselect_all(), BKE_tracking_track_deselect(), BKE_tracking_track_select(), BKE_tracking_tracks_deselect_all(), blend_to_default_fcurve(), box_select_exec(), box_select_exec(), bpoint_select_set(), blender::draw::bpoint_vflag_get(), blender::ed::object::calc_active_center_for_editmode(), blender::ed::transform::cancelTransTracking(), circle_select_exec(), clean_fcurve(), clean_tracks_exec(), clear_tilt_exec(), clip_tracking_clear_invisible_track_selection(), blender::ed::transform::count_fcurve_keys(), create_plane_track_tracks_exec(), create_primitive_from_points(), blender::ed::transform::create_trans_seq_clamp_data(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransCurveVerts(), blender::ed::transform::createTransLatticeVerts(), blender::ed::transform::createTransMaskingData(), blender::ed::transform::createTransMBallVerts(), blender::ed::transform::createTransPaintCurveVerts(), blender::ed::transform::createTransSeqImageData(), curve_decimate_exec(), curve_delete_segments(), curve_draw_exec(), curve_extrude_exec(), curve_normals_make_consistent_exec(), curve_nurb_select_similar_type(), curve_nurb_selected_type_get(), curve_pen_invoke(), curve_pick_vert__do_closest(), curve_select_less(), curve_select_more(), curve_select_random_exec(), curve_select_shortest_path_curve(), curve_select_shortest_path_surf(), curve_smooth_value(), curve_split_exec(), curve_toggle_cyclic(), curvemap_buttons_layout(), CurveProfile_buttons_layout(), decimate_fcurve_segment(), delete_feather_points(), delete_metaelems_exec(), deselect_all_center_vertices(), deselect_markers(), blender::ed::space_node::detach_links_exec(), detect_retrieve_libmv_features(), do_circle_select_mball__doSelectElem(), do_lasso_select_curve(), do_lasso_select_curve__doSelect(), do_lasso_select_lattice__doSelect(), do_lasso_select_marker(), do_lasso_select_mball__doSelectElem(), blender::ed::vse::do_lasso_select_preview(), blender::ed::vse::do_lasso_select_timeline(), do_lattice_box_select__doSelect(), do_meta_box_select(), do_nurbs_box_select(), do_nurbs_box_select__doSelect(), do_version_layers_to_collections(), draw_fcurve_active_handle_vertices(), draw_fcurve_active_vertex(), draw_fcurve_handles(), draw_fcurve_selected_handle_vertices(), draw_fcurve_selected_keyframe_vertices(), blender::ed::vse::draw_handle_transform_text(), draw_keylist_keys(), draw_marker(), draw_marker_areas(), draw_marker_slide_zones(), blender::ed::vse::draw_multicam_highlight(), draw_plane_marker_ex(), draw_spline_curve(), draw_spline_points(), blender::ed::vse::draw_strip_offsets(), duplicate_exec(), duplicate_fcurve_keys(), duplicate_metaelems_exec(), ED_clip_select_all(), ED_curve_add_nurbs_primitive(), ed_curve_delete_selected(), ED_curve_editnurb_select_pick(), ED_curve_nurb_deselect_all(), ED_curve_nurb_select_all(), ED_curve_nurb_select_check(), ED_curve_nurb_select_count(), ED_curve_nurb_vert_selected_find(), ED_curve_pick_vert_ex(), ED_curve_select_swap(), ed_editcurve_addvert(), ed_editcurve_extrude(), ed_editnurb_spin(), ED_keyframes_add(), ED_keylist_selected_keys_frame_range(), ed_lattice_select_mirrored(), ED_lattice_select_pick(), ed_marker_add_exec(), ed_marker_box_select_exec(), ed_marker_camera_bind_exec(), ed_marker_delete_exec(), ed_marker_duplicate_apply(), ed_marker_make_links_scene_exec(), ed_marker_move_apply(), ed_marker_move_init(), ed_marker_move_update_header(), ed_marker_select(), ED_markers_deselect_all(), ED_markers_draw(), ED_markers_get_first_selected(), ED_markers_get_minmax(), ED_markers_post_apply_transform(), ED_mask_select_flush_all(), ED_mask_selected_minmax(), ED_mask_spline_select_set(), ED_mball_add_primitive(), ED_mball_editmball_make(), ed_mball_findnearest_metaelem(), ED_mball_select_pick(), ed_surf_delete_selected(), ed_tracking_deselect_all_plane_tracks(), ed_tracking_deselect_all_tracks(), ED_transverts_create_from_obedit(), ED_transverts_update_obedit(), ED_view3d_minmax_verts(), blender::draw::overlay::Metaballs::edit_object_sync(), blender::ed::vse::element_already_selected(), extrude_vertices_from_selected_endpoints(), find_fcurve_segment(), blender::ed::vse::find_neighboring_strip(), blender::ed::vse::find_next_prev_strip(), findnearestLattvert__doClosest(), blender::ed::transform::flushTransSeq(), blender::ed::space_node::frame_node_draw_outline(), get_first_selected_point(), get_selected_center(), blender::ed::space_node::get_selected_node_for_insertion(), blender::ed::greasepencil::get_selected_object_keyframes(), blender::ed::vse::get_strip_text_color(), blender::ed::transform::getTransformOrientation_ex(), blender::ed::transform::gizmo2d_calc_bounds(), blender::ed::transform::gizmo2d_calc_rotation(), blender::ed::transform::gizmo2d_calc_transform_orientation(), blender::ed::transform::gizmo2d_calc_transform_pivot(), blender::ed::transform::gizmo_3d_foreach_selected(), blender::ed::transform::graph_bezt_get_transform_selection(), graphedit_activekey_handles_cb(), graphedit_activekey_left_handle_coord_cb(), graphedit_activekey_right_handle_coord_cb(), graphkeys_mselect_column(), hide_exec(), hide_metaelems_exec(), hide_tracks_exec(), init_unbaked_bezt_data(), blender::animrig::initialize_bezt(), insert_bp_to_nurb(), is_u_selected(), blender::draw::lattice_batch_cache_create_overlay_batches(), lattice_select_all_exec(), lattice_select_more_less(), lattice_select_ungrouped_exec(), latticecurve_circle_doSelect(), make_segment_exec(), blender::ed::object::make_single_user_exec(), blender::ed::transform::mark_children(), marker_color_get(), marker_get_icon_id(), markers_select_leftright(), mask_duplicate_exec(), mask_has_selection(), blender::ed::transform::MaskPointToTransData(), material_slot_de_select(), mball_select_similar_exec(), mball_select_similar_type(), mball_select_similar_type_get(), merge_2_nurb(), mirror_bezier_cframe(), mirror_bezier_marker(), mirror_bezier_time(), mirror_bezier_value(), mirror_bezier_xaxis(), mirror_bezier_yaxis(), mouse_graph_keys(), move_all_selected_points(), nalloc_ak_bezt(), nalloc_ak_cel(), nalloc_ak_gpframe(), nalloc_ak_masklayshape(), nalloc_ak_seqframe(), blender::ed::space_node::node_active_link_viewer_exec(), blender::ed::space_node::node_clipboard_copy_exec(), blender::ed::space_node::node_delete_exec(), blender::ed::space_node::node_delete_reconnect_exec(), blender::ed::space_node::node_deselect_all_input_sockets(), blender::ed::space_node::node_deselect_all_output_sockets(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::node_draw_sockets(), blender::ed::space_node::node_duplicate_reparent_recursive(), blender::ed::space_node::node_flag_toggle_exec(), blender::ed::space_node::node_header_color_get(), blender::ed::space_node::node_mouse_select(), blender::ed::space_node::node_mute_exec(), blender::ed::space_node::node_select_all_exec(), blender::ed::space_node::node_select_grouped_color(), blender::ed::space_node::node_select_grouped_name(), blender::ed::space_node::node_select_grouped_type(), blender::ed::space_node::node_socket_deselect(), blender::ed::space_node::node_socket_draw(), blender::ed::space_node::node_socket_select(), blender::ed::space_node::node_socket_toggle(), blender::ed::space_node::node_socket_toggle_exec(), nupdate_ak_bezt(), nupdate_ak_cel(), nupdate_ak_gpframe(), nupdate_ak_masklayshape(), nupdate_ak_seqframe(), nurbList_handles_swap_select(), nurbscurve_circle_select(), blender::ed::object::object_convert_exec(), blender::ed::outliner::outliner_select_sync_from_strip(), blender::ed::outliner::outliner_select_sync_to_strip(), outside_lattice(), paintcurve_point_add(), paintcurve_point_select(), paintcurve_point_side_index(), blender::ed::transform::PaintCurvePointToTransData(), blender::ed::animation::paste_animedit_keys_fcurve(), blender::ed::transform::posttrans_action_clean(), blender::seq::query_right_side_strips(), blender::seq::query_selected_strips(), blender::ed::transform::query_selected_strips_no_handles(), blender::ed::transform::query_snap_sources_preview(), blender::ed::transform::query_snap_targets_preview(), blender::ed::transform::query_snap_targets_timeline(), blender::seq::query_unselected_strips(), blender::io::alembic::AbcNurbsReader::readObjectData(), blender::ed::vse::recurs_sel_strip(), report_copy_exec(), report_delete_exec(), report_line_data(), report_replay_exec(), reports_select_all(), blender::ed::vse::retime_speed_text_draw(), blender::ed::object::return_editcurve_indexar(), blender::ed::object::return_editlattice_indexar(), reveal_exec(), reveal_metaelems_exec(), rna_def_beztriple(), rna_def_bpoint(), rna_def_fkeyframe(), rna_def_latticepoint(), rna_def_maskSplinePoint(), rna_def_maskSplinePointUW(), rna_def_node(), rna_def_strip(), rna_def_trackingPlaneTrack(), rna_def_trackingTrack(), rna_def_transform_orientation_slot(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_editable_strips(), screen_ctx_selected_strips(), blender::seq::select_active_get_pair(), blender::ed::vse::select_active_side(), blender::ed::vse::select_active_side_range(), select_adjacent_cp(), select_anim_channel_keys(), select_bezier_add(), select_bezier_invert(), select_bezier_subtract(), blender::ed::object::select_editcurve_hook(), blender::ed::object::select_editlattice_hook(), select_exec(), select_exec(), blender::ed::vse::select_grouped_data(), blender::ed::vse::select_grouped_effect(), blender::ed::vse::select_grouped_effect_link(), select_grouped_exec(), blender::ed::vse::select_grouped_time_overlap(), blender::ed::vse::select_grouped_type(), blender::ed::vse::select_grouped_type_basic(), blender::ed::vse::select_grouped_type_effect(), blender::ed::vse::select_linked_internal(), select_linked_pick_invoke(), blender::ed::vse::select_linked_time_strip(), select_marker_camera_switch(), blender::ed::vse::select_more_less_impl(), select_next_exec(), select_nth_bezt(), select_nth_bp(), select_previous_exec(), select_random_metaelems_exec(), select_report_pick_exec(), select_row_exec(), select_sliding_point(), blender::ed::vse::select_strip_single(), blender::ed::vse::select_surrounding_handles(), blender::ed::vse::selected_strips_from_context(), selectend_nurb(), separate_exec(), blender::ed::vse::seq_box_select_strip_from_preview(), blender::ed::vse::seq_circle_select_strip_from_preview(), blender::ed::transform::seq_get_strip_pivot_median(), blender::ed::vse::seq_load_apply_generic_options(), blender::ed::vse::seq_load_apply_generic_options_only_test_overlap(), blender::ed::vse::seq_proxy_build_job(), blender::seq::seqbase_dupli_recursive(), blender::ed::transform::SeqToTransData(), blender::ed::transform::SeqToTransData_build(), blender::ed::transform::SeqTransInfo(), blender::ed::outliner::sequence_fn(), blender::ed::vse::sequencer_box_select_exec(), blender::ed::vse::sequencer_clipboard_copy_exec(), blender::ed::vse::sequencer_de_select_all_exec(), blender::ed::vse::sequencer_draw_get_transform_preview(), blender::ed::vse::sequencer_enable_proxies_exec(), blender::ed::vse::sequencer_lock_exec(), blender::ed::vse::sequencer_meta_separate_exec(), blender::ed::vse::sequencer_meta_toggle_exec(), blender::ed::vse::sequencer_mute_exec(), blender::ed::vse::sequencer_offset_clear_exec(), blender::ed::vse::sequencer_rebuild_proxy_exec(), blender::ed::vse::sequencer_reload_exec(), blender::ed::vse::sequencer_retiming_data_hide_selection(), blender::ed::vse::sequencer_retiming_data_show_selection(), blender::ed::vse::sequencer_select_exec(), blender::ed::vse::sequencer_select_grouped_exec(), blender::ed::vse::sequencer_select_handles_exec(), blender::ed::vse::sequencer_select_inverse_exec(), blender::ed::vse::sequencer_select_linked_handle(), blender::ed::vse::sequencer_select_linked_pick_invoke(), blender::ed::vse::sequencer_select_side_exec(), blender::ed::vse::sequencer_select_side_of_frame(), blender::ed::vse::sequencer_select_side_of_frame_exec(), blender::ed::vse::sequencer_select_strip_impl(), blender::ed::vse::sequencer_separate_images_exec(), blender::ed::vse::sequencer_set_range_to_strips_exec(), blender::ed::vse::sequencer_snap_exec(), blender::ed::vse::sequencer_split_exec(), blender::ed::vse::sequencer_strip_color_tag_set_exec(), blender::ed::vse::sequencer_strip_transform_clear_exec(), blender::ed::vse::sequencer_strip_transform_fit_exec(), blender::ed::vse::sequencer_unlock_exec(), blender::ed::vse::sequencer_unmute_exec(), set_bezier_align(), set_bezier_auto(), set_bezier_auto_clamped(), set_bezier_free(), set_bezier_vector(), set_bezt_back(), set_bezt_bezier(), set_bezt_bounce(), set_bezt_circle(), set_bezt_constant(), set_bezt_cubic(), set_bezt_elastic(), set_bezt_expo(), set_bezt_linear(), set_bezt_quad(), set_bezt_quart(), set_bezt_quint(), set_bezt_sine(), blender::io::fbx::set_curve_sample(), set_easingtype_easeauto(), set_easingtype_easein(), set_easingtype_easeinout(), set_easingtype_easeout(), blender::io::usd::set_fcurve_sample(), set_goal_weight_exec(), set_handle_type_exec(), set_keytype_breakdown(), set_keytype_extreme(), set_keytype_generated(), set_keytype_jitter(), set_keytype_keyframe(), set_keytype_moving_hold(), set_radius_exec(), skip_fcurve_selected_data(), slide_spline_curvature_customdata(), smooth_exec(), snap_action_keys(), snap_bezier_cframe(), snap_bezier_horizontal(), snap_bezier_nearest(), snap_bezier_nearestsec(), snap_bezier_nearmarker(), snap_bezier_time(), snap_bezier_value(), blender::ed::transform::snapCurve(), blender::ed::space_node::snode_autoconnect(), blender::ed::transform::special_aftertrans_update__actedit(), spline_under_mouse_get(), stabilize_2d_rotation_select_exec(), stabilize_2d_select_exec(), stats_object_edit(), blender::seq::strip_alloc(), blender::ed::vse::strip_data_handle_flags_set(), blender::ed::vse::strip_data_highlight_flags_set(), blender::ed::vse::strip_data_outline_params_set(), blender::ed::vse::strip_draw_image_origin_and_outline(), blender::ed::vse::strip_select_from_preview(), subdividenurb(), swap_selection_beztriple(), swap_selection_bpoint(), blender::bke::tests::TEST(), blender::bke::tests::TEST(), blender::bke::tests::TEST(), blender::seq::time_find_next_prev_edit(), blender::ed::transform::TimeToTransData(), toggle_select_bp(), blender::ed::transform::trackToTransData(), blender::seq::transform_seqbase_shuffle_time(), blender::ed::curves::transverts_from_curves_positions_create(), blender::ed::outliner::tree_element_strip_activate(), blender::ed::outliner::tree_element_strip_dup_state_get(), blender::ed::outliner::tree_element_strip_state_get(), v3d_editvertex_buts(), blender::ed::object::vertex_parent_set_exec(), blender::ed::object::vgroup_assign_verts(), blender::ed::object::vgroup_mirror(), blender::ed::object::vgroup_parray_alloc(), blender::ed::object::vgroup_select_verts(), view3d_userdata_boxselect_init(), view3d_userdata_circleselect_init(), view3d_userdata_lassoselect_init(), and blender::ed::vse::vse_circle_select_exec().
| uint BKE_curve_decimate_bezt_array | ( | BezTriple * | bezt_array, |
| const uint | bezt_array_len, | ||
| const uint | resolu, | ||
| const bool | is_cyclic, | ||
| const char | flag_test, | ||
| const char | flag_set, | ||
| const float | error_sq_max, | ||
| const uint | error_target_len ) |
Definition at line 187 of file curve_decimate.cc.
References BKE_curve_calc_coords_axis(), BKE_curve_calc_coords_axis_len(), BLI_assert, Knot::can_remove, Knot::co, curve_decimate(), equals_v3v3(), BezTriple::f2, float, HANDLE_UPDATE, handles, Knot::handles, Knot::heap_node, i, is_cyclic(), Knot::is_removed, Knot::knot_index, madd_v3_v3v3fl(), MEM_freeN(), MEM_malloc_arrayN(), Knot::next, normalize_v3(), Knot::point_index, Knot::prev, sub_v3_v3v3(), tan, and BezTriple::vec.
Referenced by BKE_curve_decimate_nurb(), and decimate_fcurve_segment().
| void BKE_curve_decimate_nurb | ( | Nurb * | nu, |
| const uint | resolu, | ||
| const float | error_sq_max, | ||
| const uint | error_target_len ) |
Definition at line 306 of file curve_decimate.cc.
References Nurb::bezt, BEZT_FLAG_TEMP_TAG, BKE_curve_decimate_bezt_array(), CU_NURB_CYCLIC, Nurb::flagu, MEM_freeN(), MEM_malloc_arrayN(), Nurb::pntsu, and SELECT.
Referenced by curve_decimate_exec().
|
static |
Definition at line 133 of file curve_decimate.cc.
References BLI_heap_free(), BLI_heap_is_empty(), BLI_heap_new_ex(), BLI_heap_pop_min(), Knot::can_remove, Knot::handles, Removal::handles, Knot::heap_node, i, Knot::is_removed, Removal::knot_index, knot_remove_error_recalculate(), MEM_freeN(), Knot::next, and Knot::prev.
Referenced by BKE_curve_decimate_bezt_array().
|
static |
Definition at line 80 of file curve_decimate.cc.
References BLI_assert, BLI_heap_insert_or_update(), BLI_heap_node_ptr(), BLI_heap_remove(), Knot::can_remove, Knot::co, copy_v2_v2(), equals_v3v3(), float, handles, Removal::handles, Knot::heap_node, Knot::knot_index, Removal::knot_index, knot_remove_error_value(), MEM_freeN(), MEM_mallocN(), Knot::next, Knot::point_index, Knot::prev, and Knot::tan.
Referenced by curve_decimate().
|
static |
Definition at line 47 of file curve_decimate.cc.
References dot_v3v3(), FLT_MAX, and sub_v3_v3().
Referenced by knot_remove_error_recalculate().