|
Blender V5.0
|
support for deformation groups and hooks. More...
#include "BLI_math_vector_types.hh"#include "BLI_offset_indices.hh"#include "BLI_span.hh"#include "BLI_string_ref.hh"#include "BLI_virtual_array_fwd.hh"Go to the source code of this file.
Namespaces | |
| namespace | blender |
| namespace | blender::bke |
Macros | |
| #define | VERTEX_WEIGHT_LOCK_EPSILON 1e-6f |
support for deformation groups and hooks.
Definition in file BKE_deform.hh.
| #define VERTEX_WEIGHT_LOCK_EPSILON 1e-6f |
Definition at line 167 of file BKE_deform.hh.
Referenced by BKE_defvert_calc_lock_relative_weight(), do_weight_paint_normalize_all_locked(), do_weight_paint_vertex_single(), blender::ed::greasepencil::normalize_vertex_weights_try(), and wpaint_undo_lock_relative().
| void BKE_defbase_blend_write | ( | BlendWriter * | writer, |
| const ListBase * | defbase ) |
Definition at line 1595 of file deform.cc.
References BLO_write_struct, and LISTBASE_FOREACH.
Referenced by blender::bke::CurvesGeometry::blend_write(), grease_pencil_blend_write(), greasepencil_blend_write(), lattice_blend_write(), and mesh_blend_write().
Definition at line 73 of file deform.cc.
References BKE_defgroup_duplicate(), BLI_addtail(), BLI_listbase_clear(), and LISTBASE_FOREACH.
Referenced by BKE_mesh_copy_parameters_for_eval(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_catmull_rom_or_poly(), blender::geometry::convert_curves_to_nurbs(), blender::ed::curves::copy_data_to_geometry(), blender::geometry::create_curves_for_faces(), blender::bke::curves_copy_curve_selection(), blender::bke::curves_copy_point_selection(), blender::bke::CurvesGeometry::CurvesGeometry(), blender::ed::curves::pen_tool::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::geometry::fit_poly_to_bezier_curves(), grease_pencil_copy_data(), greasepencil_copy_data(), blender::ed::curves::pen_tool::insert_point_to_curve(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::geometry::join_curves_ranges(), lattice_copy_data(), blender::bke::greasepencil::convert::legacy_gpencil_to_grease_pencil(), mesh_copy_data(), blender::geometry::remove_points_and_split(), blender::geometry::reorder_curves_geometry(), blender::geometry::resample_to_count(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_length(), blender::geometry::resample_to_uniform(), blender::geometry::subdivide_curves(), undomesh_from_editmesh(), and undomesh_to_editmesh().
| bDeformGroup * BKE_defgroup_duplicate | ( | const bDeformGroup * | ingroup | ) |
Definition at line 82 of file deform.cc.
References BLI_assert, MEM_callocN(), bDeformGroup::next, and bDeformGroup::prev.
Referenced by BKE_defgroup_copy_list(), blender::ed::mesh::join_vertex_groups(), and blender::ed::object::vgroup_duplicate().
| bool BKE_defgroup_listbase_name_find | ( | const ListBase * | defbase, |
| blender::StringRef | name, | ||
| int * | r_index, | ||
| bDeformGroup ** | r_group ) |
Definition at line 554 of file deform.cc.
References LISTBASE_FOREACH_INDEX, and name.
Referenced by BKE_defgroup_name_index(), BKE_id_defgroup_name_find(), and blender::bke::curves::try_delete_vertex_group().
| int BKE_defgroup_name_index | ( | const ListBase * | defbase, |
| blender::StringRef | name ) |
Definition at line 540 of file deform.cc.
References BKE_defgroup_listbase_name_find(), and name.
Referenced by blender::bke::greasepencil::assign_to_vertex_group(), blender::bke::greasepencil::assign_to_vertex_group_from_mask(), BKE_id_defgroup_name_index(), blender::bke::greasepencil::ensure_vertex_group(), blender::bke::get_armature_deform_params(), blender::ed::greasepencil::grease_pencil_weight_invert_exec(), blender::io::fbx::import_blend_shape_full_weights(), blender::ed::greasepencil::lookup_or_add_deform_group_index(), blender::bke::greasepencil::remove_from_vertex_group(), similar_vert_select_exec(), blender::target_vertex_group_available(), blender::bke::MeshVertexGroupsAttributeProvider::try_get_for_read(), blender::bke::MeshVertexGroupsAttributeProvider::try_get_for_write(), blender::bke::curves::try_get_vertex_group(), blender::bke::curves::try_get_vertex_group_for_write(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_grease_pencil_select_verts(), and blender::ed::greasepencil::weight_sample_invoke().
| void BKE_defvert_add_index_notest | ( | MDeformVert * | dv, |
| int | defgroup, | ||
| float | weight ) |
Adds the given vertex to the specified vertex group, with given weight.
Definition at line 856 of file deform.cc.
References BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, MEM_calloc_arrayN(), MEM_freeN(), MDeformVert::totweight, and MDeformWeight::weight.
Referenced by blender::bke::tests::ArmatureDeformTestBase::create_test_curves_object(), blender::bke::tests::ArmatureDeformTestBase::create_test_grease_pencil_object(), blender::bke::tests::ArmatureDeformTestBase::create_test_mesh(), blender::ed::geometry::geometry_attribute_convert_exec(), subdivide_base(), blender::ed::object::vgroup_nr_vert_add(), vgroups_datatransfer_interp(), and weightvg_update_vg().
| void BKE_defvert_array_copy | ( | MDeformVert * | dst, |
| const MDeformVert * | src, | ||
| int | totvert ) |
Definition at line 1038 of file deform.cc.
References MDeformVert::dw, i, and MEM_malloc_arrayN().
Referenced by BKE_editlattice_load(), BKE_editlattice_make(), BKE_gpencil_stroke_weights_duplicate(), lattice_copy_data(), paint_weight_gradient_modal(), undolatt_from_editlatt(), undolatt_to_editlatt(), and wpaint_prev_create().
| float BKE_defvert_array_find_weight_safe | ( | const MDeformVert * | dvert, |
| int | index, | ||
| int | defgroup, | ||
| bool | invert ) |
Take care with this the rationale is:
This is a bit confusing, just saves some checks from the caller.
Definition at line 780 of file deform.cc.
References BKE_defvert_find_weight(), and invert().
Referenced by modify_mesh(), shrinkwrap_calc_nearest_surface_point_cb_ex(), shrinkwrap_calc_nearest_vertex_cb_ex(), shrinkwrap_calc_normal_projection_cb_ex(), and simple_helper().
| void BKE_defvert_array_free | ( | MDeformVert * | dvert, |
| int | totvert ) |
Definition at line 1074 of file deform.cc.
References BKE_defvert_array_free_elems(), and MEM_freeN().
Referenced by BKE_editlattice_free(), BKE_editlattice_load(), BKE_lattice_resize(), lattice_free_data(), undolatt_free_data(), undolatt_to_editlatt(), and wpaint_prev_destroy().
| void BKE_defvert_array_free_elems | ( | MDeformVert * | dvert, |
| int | totvert ) |
Definition at line 1056 of file deform.cc.
References i, and MEM_freeN().
Referenced by BKE_defvert_array_free(), BKE_sculptsession_free_vwpaint_data(), blender::ed::sculpt_paint::vwpaint::init_session_data(), and paint_weight_gradient_modal().
| void BKE_defvert_blend_read | ( | BlendDataReader * | reader, |
| int | count, | ||
| MDeformVert * | mdverts ) |
Definition at line 1619 of file deform.cc.
References BLO_read_struct_array, count, MDeformVert::dw, i, MEM_freeN(), MEM_malloc_arrayN(), and MDeformVert::totweight.
Referenced by BKE_gpencil_blend_read_data(), blend_read_layer_data(), lattice_blend_read_data(), and mesh_blend_read_data().
| void BKE_defvert_blend_write | ( | BlendWriter * | writer, |
| int | count, | ||
| const MDeformVert * | dvlist ) |
Definition at line 1602 of file deform.cc.
References BLO_write_struct_array, count, and i.
Referenced by blend_write_layer_data(), greasepencil_blend_write(), and lattice_blend_write().
| float BKE_defvert_calc_lock_relative_weight | ( | float | weight, |
| float | locked_weight, | ||
| float | unlocked_weight ) |
Computes the display weight for the lock relative weight paint mode.
Definition at line 989 of file deform.cc.
References VERTEX_WEIGHT_LOCK_EPSILON.
Referenced by BKE_defvert_lock_relative_weight(), do_weight_paint_vertex_multi(), and do_weight_paint_vertex_single().
| void BKE_defvert_clear | ( | MDeformVert * | dvert | ) |
Definition at line 913 of file deform.cc.
References MDeformVert::dw, MEM_SAFE_FREE, and MDeformVert::totweight.
Referenced by bpy_bmdeformvert_clear(), and blender::bke::greasepencil::clear_vertex_groups().
| void BKE_defvert_copy | ( | MDeformVert * | dvert_dst, |
| const MDeformVert * | dvert_src ) |
Definition at line 127 of file deform.cc.
References MDeformVert::dw, MEM_dupallocN(), MEM_freeN(), and MDeformVert::totweight.
Referenced by BPy_BMDeformVert_AssignPyObject(), defweight_prev_init(), blender::ed::object::dvert_mirror_op(), and output_frames().
| void BKE_defvert_copy_index | ( | MDeformVert * | dvert_dst, |
| int | defgroup_dst, | ||
| const MDeformVert * | dvert_src, | ||
| int | defgroup_src ) |
Copy an index from one MDeformVert to another.
Definition at line 150 of file deform.cc.
References BKE_defvert_ensure_index(), BKE_defvert_find_index(), and MDeformWeight::weight.
Referenced by BKE_defvert_copy_subset(), BKE_defvert_mirror_subset(), blender::ed::object::dvert_mirror_op(), and blender::ed::object::vgroup_copy_active_to_sel_single().
| void BKE_defvert_copy_subset | ( | MDeformVert * | dvert_dst, |
| const MDeformVert * | dvert_src, | ||
| const bool * | vgroup_subset, | ||
| int | vgroup_num ) |
Overwrite weights filtered by vgroup_subset.
Definition at line 99 of file deform.cc.
References BKE_defvert_copy_index().
Referenced by blender::ed::object::vgroup_copy_active_to_sel().
| MDeformWeight * BKE_defvert_ensure_index | ( | MDeformVert * | dv, |
| int | defgroup ) |
Ensures that dv has a deform weight entry for the specified group (defgroup).
Definition at line 825 of file deform.cc.
References BKE_defvert_find_index(), BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, MEM_freeN(), MEM_malloc_arrayN(), MDeformVert::totweight, and MDeformWeight::weight.
Referenced by blender::bke::greasepencil::assign_to_vertex_group(), blender::bke::greasepencil::assign_to_vertex_group_from_mask(), BKE_defvert_copy_index(), BKE_defvert_flip_merged(), BKE_defvert_sync(), BKE_defvert_sync_mapped(), bpy_bmdeformvert_ass_subscript(), do_weight_paint_vertex_single(), blender::ed::object::dvert_mirror_op(), dynamicPaint_Modifier_apply(), gradientVert_update(), blender::io::fbx::import_blend_shape_full_weights(), blender::io::fbx::import_skin_vertex_groups(), blender::ed::object::mesh_defvert_mirror_update_internal(), MOD_lineart_gpencil_generate_v3(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), blender::bke::VArrayImpl_For_VertexWeights::set(), blender::ed::object::vgroup_assign_verts(), blender::ed::object::vgroup_duplicate(), blender::ed::object::vgroup_invert_subset(), blender::ed::object::vgroup_parray_from_weight_array(), and weight_paint_set().
| void BKE_defvert_extract_vgroup_to_edgeweights | ( | const MDeformVert * | dvert, |
| int | defgroup, | ||
| int | verts_num, | ||
| blender::Span< blender::int2 > | edges, | ||
| bool | invert_vgroup, | ||
| float * | r_weights ) |
The following three make basic interpolation, using temp vert_weights array to avoid looking up same weight several times.
Definition at line 1108 of file deform.cc.
References BKE_defvert_extract_vgroup_to_vertweights(), copy_vn_fl(), i, MEM_freeN(), MEM_malloc_arrayN(), blender::Span< T >::size(), and UNLIKELY.
Referenced by BKE_object_data_transfer_ex().
| void BKE_defvert_extract_vgroup_to_faceweights | ( | const MDeformVert * | dvert, |
| int | defgroup, | ||
| int | verts_num, | ||
| const blender::Span< int > | corner_verts, | ||
| blender::OffsetIndices< int > | faces, | ||
| bool | invert_vgroup, | ||
| float * | r_weights ) |
Definition at line 1160 of file deform.cc.
References BKE_defvert_extract_vgroup_to_vertweights(), copy_vn_fl(), faces, float, i, MEM_freeN(), MEM_malloc_arrayN(), blender::IndexRange::size(), blender::IndexRange::start(), UNLIKELY, and w().
Referenced by BKE_object_data_transfer_ex().
| void BKE_defvert_extract_vgroup_to_loopweights | ( | const MDeformVert * | dvert, |
| int | defgroup, | ||
| int | verts_num, | ||
| blender::Span< int > | corner_verts, | ||
| bool | invert_vgroup, | ||
| float * | r_weights ) |
Definition at line 1135 of file deform.cc.
References BKE_defvert_extract_vgroup_to_vertweights(), copy_vn_fl(), i, MEM_freeN(), MEM_malloc_arrayN(), blender::Span< T >::size(), and UNLIKELY.
Referenced by BKE_object_data_transfer_ex(), and mix_normals().
| void BKE_defvert_extract_vgroup_to_vertweights | ( | const MDeformVert * | dvert, |
| int | defgroup, | ||
| int | verts_num, | ||
| bool | invert_vgroup, | ||
| float * | r_weights ) |
Definition at line 1089 of file deform.cc.
References BKE_defvert_find_weight(), copy_vn_fl(), i, and w().
Referenced by BKE_defvert_extract_vgroup_to_edgeweights(), BKE_defvert_extract_vgroup_to_faceweights(), BKE_defvert_extract_vgroup_to_loopweights(), and BKE_object_data_transfer_ex().
| MDeformWeight * BKE_defvert_find_index | ( | const MDeformVert * | dv, |
| int | defgroup ) |
Definition at line 806 of file deform.cc.
References BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, i, and MDeformVert::totweight.
Referenced by aggregate_item_normal(), BKE_defvert_copy_index(), BKE_defvert_ensure_index(), BKE_defvert_find_weight(), BKE_defvert_sync(), BKE_defvert_sync_mapped(), BKE_object_defgroup_clear(), bpy_bmdeformvert_ass_subscript(), bpy_bmdeformvert_contains(), bpy_bmdeformvert_get(), bpy_bmdeformvert_subscript(), contarget_get_lattice_mat(), contarget_get_mesh_mat(), do_weight_paint_vertex_single(), blender::ed::object::dvert_mirror_op(), dynamicPaint_Modifier_apply(), blender::ed::object::get_vert_def_nr(), gradientVert_update(), gradientVertInit__mapFunc(), MOD_lineart_gpencil_generate_v3(), modify_mesh(), modify_mesh(), modify_mesh(), object_defgroup_remove_object_mode(), blender::bke::greasepencil::remove_from_vertex_group(), update_active_vertex_weight(), blender::ed::object::vgroup_duplicate(), blender::ed::object::vgroup_invert_subset(), blender::ed::object::vgroup_levels_subset(), blender::ed::object::vgroup_normalize(), blender::ed::object::vgroup_nr_vert_add(), blender::ed::object::vgroup_parray_from_weight_array(), blender::ed::object::vgroup_remove_weight(), blender::ed::object::vgroup_select_verts(), blender::ed::object::vgroup_vert_remove(), vgroups_datatransfer_interp(), view3d_panel_vgroup(), and weightvg_update_vg().
| int BKE_defvert_find_shared | ( | const MDeformVert * | dvert_a, |
| const MDeformVert * | dvert_b ) |
Definition at line 920 of file deform.cc.
References BKE_defvert_find_weight(), MDeformWeight::def_nr, MDeformVert::dw, i, MDeformVert::totweight, and MDeformWeight::weight.
| float BKE_defvert_find_weight | ( | const MDeformVert * | dvert, |
| int | defgroup ) |
Definition at line 774 of file deform.cc.
References BKE_defvert_find_index(), and MDeformWeight::weight.
Referenced by blender::bke::armature_vert_task_with_mixer(), bevel_vert_construct(), bindVert(), BKE_defvert_array_find_weight_safe(), BKE_defvert_extract_vgroup_to_vertweights(), BKE_defvert_find_shared(), BKE_lattice_deform_data_create(), BM_mesh_wireframe(), compute_vertex_mask__vertex_group_mode(), construct_param_handle_face_add(), construct_param_handle_subsurfed(), createFacepa(), cuboid_do(), deformVert(), displaceModifier_do_task(), do_weight_paint_vertex_single(), edbm_decimate_exec(), blender::draw::evaluate_vertex_weight(), get_interp_factor_from_vgroup(), get_weights_array(), hook_co_apply(), initSystem(), isSystemDifferent(), laplaciansmoothModifier_do(), blender::draw::lattice_batch_cache_get_pos(), lattice_deform_vert_with_dvert(), lattice_to_softbody(), blender::ed::object::mesh_defvert_mirror_update_internal(), mesh_get_weights(), mesh_to_softbody(), meshcache_do(), meshdeform_vert_task(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), modify_mesh(), psys_cache_vgroup(), blender::ed::object::return_editmesh_vgroup(), selection_array_from_vertex_group(), smoothModifier_do(), sphere_do(), uv_warp_compute(), blender::ed::object::vgroup_parray_to_weight_array(), warpModifier_do(), waveModifier_do(), weight_sample_invoke(), weightvg_do_mask(), and wpaint_get_active_weight().
| void BKE_defvert_flip | ( | MDeformVert * | dvert, |
| const int * | flip_map, | ||
| int | flip_map_num ) |
Definition at line 416 of file deform.cc.
References MDeformWeight::def_nr, MDeformVert::dw, and i.
Referenced by BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), and blender::ed::object::dvert_mirror_op().
| void BKE_defvert_flip_merged | ( | MDeformVert * | dvert, |
| const int * | flip_map, | ||
| int | flip_map_num ) |
Definition at line 430 of file deform.cc.
References BKE_defvert_ensure_index(), MDeformWeight::def_nr, MDeformVert::dw, i, MDeformVert::totweight, and MDeformWeight::weight.
Referenced by BKE_mesh_mirror_apply_mirror_on_axis_for_modifier().
| bool BKE_defvert_is_weight_zero | ( | const MDeformVert * | dvert, |
| int | defgroup_tot ) |
Definition at line 936 of file deform.cc.
References MDeformWeight::def_nr, MDeformVert::dw, i, LIKELY, MDeformVert::totweight, and MDeformWeight::weight.
Referenced by blender::draw::evaluate_vertex_weight().
| float BKE_defvert_lock_relative_weight | ( | float | weight, |
| const MDeformVert * | dv, | ||
| int | defbase_num, | ||
| const bool * | defbase_locked, | ||
| const bool * | defbase_unlocked ) |
Computes the display weight for the lock relative weight paint mode, using weight data.
Definition at line 1017 of file deform.cc.
References BKE_defvert_calc_lock_relative_weight(), and BKE_defvert_total_selected_weight().
Referenced by do_weight_paint_vertex_multi(), do_weight_paint_vertex_single(), blender::draw::evaluate_vertex_weight(), weight_sample_invoke(), and wpaint_get_active_weight().
| void BKE_defvert_mirror_subset | ( | MDeformVert * | dvert_dst, |
| const MDeformVert * | dvert_src, | ||
| const bool * | vgroup_subset, | ||
| int | vgroup_num, | ||
| const int * | flip_map, | ||
| int | flip_map_num ) |
Overwrite weights filtered by vgroup_subset and with mirroring specified by the flip map
Definition at line 112 of file deform.cc.
References BKE_defvert_copy_index().
Referenced by blender::ed::object::vgroup_parray_mirror_sync().
| float BKE_defvert_multipaint_collective_weight | ( | const MDeformVert * | dv, |
| int | defbase_num, | ||
| const bool * | defbase_sel, | ||
| int | defbase_sel_num, | ||
| bool | is_normalized ) |
Result equal to sum of weights with auto normalize, and average otherwise. Value is not clamped, since painting relies on multiplication being always commutative with the collective weight function.
Definition at line 972 of file deform.cc.
References BKE_defvert_total_selected_weight().
Referenced by do_weight_paint_vertex_multi(), blender::draw::evaluate_vertex_weight(), weight_sample_invoke(), and wpaint_get_active_weight().
| void BKE_defvert_normalize | ( | MDeformVert & | dvert | ) |
Normalize all the vertex group weights on a vertex.
Note: this ignores whether groups are locked or not, and will therefore happily modify even locked groups.
See BKE_defvert_normalize_ex() for parameter documentation.
Definition at line 237 of file deform.cc.
References BKE_defvert_normalize_ex().
| void BKE_defvert_normalize_ex | ( | MDeformVert & | dvert, |
| blender::Span< bool > | vgroup_subset, | ||
| blender::Span< bool > | lock_flags, | ||
| blender::Span< bool > | soft_lock_flags ) |
Normalize the vertex groups of a vertex, with all the bells and whistles.
| dvert | the vertex weights to be normalized. |
| subset_flags | span of bools indicating which vertex groups are included vs ignored in this function. True means included, false means ignored. Note that this is different than locking: locked groups are not modified, but their weights are still accounted for in the normalization process, whereas ignored groups aren't accounted for at all. May be empty, indicating all vertex groups are included. If not empty, its length must match the number of vertex groups in the source data (e.g. the mesh). |
| lock_flags | span of bools with true indicating the vertex groups that are completely locked from modification, even if that prevents normalization. May be empty, indicating no locked groups. If not empty, its length must match the number of vertex groups in the source data (e.g. the mesh). |
| soft_lock_flags | span of bools with true indicating a set of vertex groups that are "soft locked". The intended use case for this is to "protect" weights that have just been set by a tool or operator during post-process normalization. When possible, only non-soft-locked weights will be modified to achieve normalization, but if necessary soft-locked will also be modified. NOTE: in theory this could be used for purposes other than "just set" groups, but corner cases are handled with that use case in mind. May be empty, indicating no "soft locked" groups. If not empty, its length must match the number of vertex groups in the source data (e.g. the mesh). |
Definition at line 249 of file deform.cc.
References CLAMP, MDeformWeight::def_nr, MDeformVert::dw, blender::Span< T >::is_empty(), max_ff(), MDeformVert::totweight, and MDeformWeight::weight.
Referenced by BKE_defvert_normalize(), BKE_defvert_normalize_lock_map(), BKE_defvert_normalize_subset(), blender::bke::tests::TEST(), blender::bke::tests::TEST(), blender::bke::tests::TEST(), and blender::bke::tests::TEST().
| void BKE_defvert_normalize_lock_map | ( | MDeformVert & | dvert, |
| blender::Span< bool > | subset_flags, | ||
| blender::Span< bool > | lock_flags ) |
Normalize a subset of vertex group weights among themselves, but leaving locked groups unmodified.
See BKE_defvert_normalize_ex() for parameter documentation.
Definition at line 242 of file deform.cc.
References BKE_defvert_normalize_ex().
Referenced by paint_weight_gradient_exec(), and blender::ed::object::vgroup_normalize_active_vertex().
| void BKE_defvert_normalize_subset | ( | MDeformVert & | dvert, |
| blender::Span< bool > | subset_flags ) |
Normalize a subset of vertex group weights among themselves.
Note: this ignores whether groups are locked or not, and will therefore happily modify even locked groups.
See BKE_defvert_normalize_ex() for parameter documentation.
Definition at line 232 of file deform.cc.
References BKE_defvert_normalize_ex().
Referenced by blender::ed::object::vgroup_normalize_active_vertex().
| void BKE_defvert_remap | ( | MDeformVert * | dvert, |
| const int * | map, | ||
| int | map_len ) |
be sure all flip_map values are valid
Definition at line 220 of file deform.cc.
References BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, i, and MDeformVert::totweight.
Referenced by blender::ed::object::vgroup_do_remap().
| void BKE_defvert_remove_group | ( | MDeformVert * | dvert, |
| MDeformWeight * | dw ) |
Removes the given vertex from the vertex group.
Definition at line 880 of file deform.cc.
References BLI_assert, BLI_assert_unreachable, MDeformVert::dw, i, MEM_freeN(), MEM_reallocN, MDeformVert::totweight, and UNLIKELY.
Referenced by BKE_mesh_validate_arrays(), BKE_object_defgroup_clear(), bpy_bmdeformvert_ass_subscript(), blender::ed::object::dvert_mirror_op(), gradientVert_update(), object_defgroup_remove_object_mode(), blender::bke::greasepencil::remove_from_vertex_group(), blender::ed::object::vgroup_data_clamp_range(), blender::ed::object::vgroup_nr_vert_add(), blender::ed::object::vgroup_parray_from_weight_array(), blender::ed::object::vgroup_parray_remove_zero(), blender::ed::object::vgroup_remove_weight(), blender::ed::object::vgroup_vert_remove(), and weightvg_update_vg().
| void BKE_defvert_sync | ( | MDeformVert * | dvert_dst, |
| const MDeformVert * | dvert_src, | ||
| bool | use_ensure ) |
Only sync over matching weights, don't add or remove groups warning, loop within loop.
Definition at line 174 of file deform.cc.
References BKE_defvert_ensure_index(), BKE_defvert_find_index(), MDeformWeight::def_nr, MDeformVert::dw, i, MDeformVert::totweight, and MDeformWeight::weight.
| void BKE_defvert_sync_mapped | ( | MDeformVert * | dvert_dst, |
| const MDeformVert * | dvert_src, | ||
| const int * | flip_map, | ||
| int | flip_map_num, | ||
| bool | use_ensure ) |
be sure all flip_map values are valid
Definition at line 194 of file deform.cc.
References BKE_defvert_ensure_index(), BKE_defvert_find_index(), MDeformWeight::def_nr, MDeformVert::dw, i, MDeformVert::totweight, and MDeformWeight::weight.
Referenced by blender::ed::object::mesh_defvert_mirror_update_internal().
| float BKE_defvert_total_selected_weight | ( | const MDeformVert * | dv, |
| int | defbase_num, | ||
| const bool * | defbase_sel ) |
Definition at line 950 of file deform.cc.
References MDeformWeight::def_nr, MDeformVert::dw, i, MDeformVert::totweight, and MDeformWeight::weight.
Referenced by BKE_defvert_lock_relative_weight(), BKE_defvert_multipaint_collective_weight(), do_weight_paint_vertex_multi(), and do_weight_paint_vertex_single().
Definition at line 1556 of file deform.cc.
References blend().
Referenced by psys_cache_edit_paths_iter().
Return the ID's vertex group names. Supports Mesh (ME), Lattice (LT), and GreasePencil (GD) IDs.
Definition at line 470 of file deform.cc.
References BLI_assert_unreachable, GS, ID_GD_LEGACY, ID_GP, ID_LT, ID_ME, ID::name, bGPdata::vertex_group_names, GreasePencil::vertex_group_names, Lattice::vertex_group_names, and Mesh::vertex_group_names.
Referenced by BKE_armature_deform_coords_with_editmesh(), BKE_armature_deform_coords_with_mesh(), BKE_id_defgroup_list_get_mutable(), BKE_id_defgroup_name_find(), BKE_id_defgroup_name_index(), BKE_object_defgroup_list(), and blender::ed::geometry::geometry_attribute_convert_exec().
Definition at line 520 of file deform.cc.
References BKE_id_defgroup_list_get().
Referenced by BKE_object_defgroup_list_mutable().
| bool BKE_id_defgroup_name_find | ( | const ID * | id, |
| blender::StringRef | name, | ||
| int * | r_index, | ||
| bDeformGroup ** | r_group ) |
Definition at line 577 of file deform.cc.
References BKE_defgroup_listbase_name_find(), BKE_id_defgroup_list_get(), and name.
Referenced by blender::bke::MeshVertexGroupsAttributeProvider::try_delete().
| int BKE_id_defgroup_name_index | ( | const ID * | id, |
| blender::StringRef | name ) |
Definition at line 549 of file deform.cc.
References BKE_defgroup_name_index(), BKE_id_defgroup_list_get(), and name.
Referenced by BKE_lattice_deform_data_create(), BKE_object_data_transfer_ex(), BKE_object_defgroup_name_index(), calculate_weld(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), lattice_deform_coords_impl(), lattice_to_softbody(), mesh_to_softbody(), MOD_get_vgroup(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), modify_mesh(), modify_mesh(), modify_mesh(), modify_mesh(), weightvg_do_mask(), and WireframeModifier_do().
| bool BKE_id_supports_vertex_groups | ( | const ID * | id | ) |
Definition at line 455 of file deform.cc.
References ELEM, GS, ID_GD_LEGACY, ID_GP, ID_LT, ID_ME, and ID::name.
Referenced by BKE_armature_deform_coords_with_mesh(), and BKE_object_supports_vertex_groups().
| int BKE_object_defgroup_active_index_get | ( | const Object * | ob | ) |
Definition at line 607 of file deform.cc.
References object_defgroup_active_index_get_p().
Referenced by BKE_object_defgroup_subset_from_select_type(), data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), do_versions_after_linking_300(), edbm_decimate_exec(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::ensure_active_vertex_group_in_object(), blender::ed::sculpt_paint::grease_pencil_weight_brush_stroke_invoke(), blender::ed::greasepencil::grease_pencil_weight_invert_exec(), object_defgroup_remove_common(), paint_weight_gradient_exec(), blender::ed::sculpt_paint::greasepencil::process_stroke_weights(), blender::ed::object::return_editmesh_vgroup(), blender::ed::outliner::tree_element_defgroup_state_get(), blender::ed::greasepencil::vertex_group_normalize_all_exec(), blender::ed::greasepencil::vertex_group_normalize_exec(), blender::ed::object::vertex_group_remove_exec(), blender::ed::object::vertex_group_remove_from_exec(), blender::ed::greasepencil::vertex_group_smooth_exec(), blender::ed::object::vertex_group_vert_select_unlocked_poll(), blender::ed::object::vgroup_array_copy(), blender::ed::object::vgroup_assign_verts(), blender::ed::object::vgroup_delete_active(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_duplicate(), blender::ed::object::vgroup_mirror(), blender::ed::object::vgroup_move_exec(), blender::ed::object::vgroup_normalize(), blender::ed::object::vgroup_select_verts(), blender::ed::object::vgroup_selected_get(), view3d_panel_vgroup(), weight_paint_set(), blender::ed::greasepencil::weight_sample_invoke(), and wpaint_stroke_done().
| void BKE_object_defgroup_active_index_set | ( | Object * | ob, |
| int | new_index ) |
Definition at line 612 of file deform.cc.
References object_defgroup_active_index_get_p().
Referenced by BKE_object_defgroup_add_name(), BKE_object_defgroup_remove_all_ex(), do_versions_after_linking_300(), move_vertex_group_names_to_object_data(), object_defgroup_remove_common(), blender::ed::object::set_active_group_exec(), blender::ed::outliner::tree_element_defgroup_activate(), blender::ed::object::vertex_weight_set_active_exec(), blender::ed::object::vgroup_array_copy(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_duplicate(), blender::ed::object::vgroup_select_by_name(), and blender::ed::object::vgroup_sync_from_pose().
| int BKE_object_defgroup_count | ( | const Object * | ob | ) |
Definition at line 602 of file deform.cc.
References BKE_object_defgroup_list(), and BLI_listbase_count().
Referenced by BKE_object_defgroup_add_name(), BKE_object_defgroup_subset_from_select_type(), ED_object_vgroup_calc_from_armature(), get_weights_array(), blender::ed::object::normalize_vertex_group_target(), object_defgroup_remove_update_users(), similar_vert_select_exec(), and blender::ed::object::vgroup_selected_get().
| bDeformGroup * BKE_object_defgroup_find_name | ( | const Object * | ob, |
| blender::StringRef | name ) |
Definition at line 526 of file deform.cc.
References BKE_object_defgroup_list(), LISTBASE_FOREACH, and name.
Referenced by blender::ed::greasepencil::add_armature_vertex_groups(), add_verts_to_dgroups(), blo_do_versions_pre250(), dgroup_skinnable_cb(), ED_armature_bone_rename(), ED_wpaint_ensure_data(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::ensure_active_vertex_group_in_object(), blender::ed::greasepencil::get_skinnable_bones_and_deform_group_names(), blender::io::usd::import_mesh_skel_bindings(), output_toggle_exec(), vgroup_add_unique_bone_cb(), and blender::ed::object::vgroup_sort_bone_hierarchy().
| int BKE_object_defgroup_flip_index | ( | const Object * | ob, |
| int | index, | ||
| bool | use_default ) |
Definition at line 714 of file deform.cc.
References BKE_object_defgroup_list(), BKE_object_defgroup_name_index(), BLI_findlink(), BLI_string_flip_side_name(), bDeformGroup::name, and STREQ.
Referenced by blender::ed::object::mesh_defvert_mirror_update_internal().
| int * BKE_object_defgroup_flip_map | ( | const Object * | ob, |
| bool | use_default, | ||
| int * | r_flip_map_num ) |
Returns flip map for the vertex-groups of ob.
| use_default | How to handle cases where no symmetrical group is found.
|
Definition at line 667 of file deform.cc.
References object_defgroup_unlocked_flip_map_ex().
Referenced by BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), blender::ed::object::vgroup_mirror(), and blender::ed::object::vgroup_parray_mirror_sync().
| int * BKE_object_defgroup_flip_map_single | ( | const Object * | ob, |
| bool | use_default, | ||
| int | defgroup, | ||
| int * | r_flip_map_num ) |
A version of BKE_object_defgroup_flip_map that only takes a single group into account.
Definition at line 679 of file deform.cc.
References BKE_object_defgroup_list(), BKE_object_defgroup_name_index(), BLI_findlink(), BLI_listbase_count(), BLI_string_flip_side_name(), i, MEM_malloc_arrayN(), bDeformGroup::name, and STREQ.
Referenced by blender::ed::object::vgroup_mirror().
| int * BKE_object_defgroup_flip_map_unlocked | ( | const Object * | ob, |
| bool | use_default, | ||
| int * | r_flip_map_num ) |
A version of BKE_object_defgroup_flip_map that ignores locked groups.
Definition at line 672 of file deform.cc.
References object_defgroup_unlocked_flip_map_ex().
Referenced by blender::ed::object::mesh_defvert_mirror_update_internal().
Definition at line 585 of file deform.cc.
References BKE_id_defgroup_list_get(), BKE_object_supports_vertex_groups(), BLI_assert, and Object::data.
Referenced by BKE_object_defgroup_clear(), BKE_object_defgroup_clear_all(), BKE_object_defgroup_count(), BKE_object_defgroup_find_name(), BKE_object_defgroup_flip_index(), BKE_object_defgroup_flip_map_single(), BKE_object_defgroup_index_map_create(), BKE_object_defgroup_mirror_selection(), BKE_object_defgroup_selected_get(), BKE_object_defgroup_validmap_get(), blender::ed::object::check_vertex_group_accessible(), data_transfer_layersmapping_vgroups(), defgroup_find_name_dupe(), blender::draw::overlay::Armatures::draw_armature_pose(), blender::ed::object::dt_layers_select_src_itemf(), ED_wpaint_ensure_data(), ED_wpaint_mirror_vgroup_ensure(), edbm_select_ungrouped_poll(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::ensure_active_vertex_group_in_object(), blender::ed::outliner::TreeElementDeformGroupBase::expand(), blender::ed::greasepencil::get_bone_deformed_vertex_group_names(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::get_locked_and_bone_deformed_vertex_groups(), blender::ed::object::grease_pencil_clear_from_all_vgroup(), blender::ed::greasepencil::grease_pencil_vertex_group_weight_poll(), blender::ed::greasepencil::grease_pencil_weight_invert_exec(), object_defgroup_remove_edit_mode(), object_defgroup_remove_object_mode(), object_defgroup_unlocked_flip_map_ex(), blender::ed::sculpt_paint::greasepencil::process_stroke_weights(), blender::ed::object::return_editmesh_vgroup(), similar_vert_select_exec(), update_depsgraph(), blender::ed::greasepencil::vertex_group_normalize_all_exec(), blender::ed::greasepencil::vertex_group_normalize_exec(), blender::ed::object::vertex_group_poll_ex(), blender::ed::object::vertex_group_remove_exec(), blender::ed::object::vertex_group_remove_from_exec(), blender::ed::greasepencil::vertex_group_smooth_exec(), blender::ed::object::vertex_group_vert_select_unlocked_poll(), blender::ed::object::vgroup_array_copy(), blender::ed::object::vgroup_assign_verts(), blender::ed::object::vgroup_delete_active(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_init_remap(), blender::ed::object::vgroup_itemf(), blender::ed::object::vgroup_lock_all(), blender::ed::object::vgroup_mirror(), blender::ed::object::vgroup_normalize(), blender::ed::object::vgroup_select_verts(), blender::ed::object::vgroup_vert_add(), blender::ed::object::vgroup_vert_remove(), blender::ed::object::vgroup_vert_weight(), view3d_panel_vgroup(), and blender::ed::greasepencil::weight_sample_invoke().
Definition at line 596 of file deform.cc.
References BKE_id_defgroup_list_get_mutable(), BKE_object_supports_vertex_groups(), BLI_assert, and Object::data.
Referenced by BKE_object_defgroup_lock_flags_get(), BKE_object_defgroup_new(), BKE_object_defgroup_remove_all_ex(), move_vertex_group_names_to_object_data(), object_defgroup_remove_common(), blender::ed::object::vertex_group_sort_exec(), blender::ed::object::vgroup_array_copy(), blender::ed::object::vgroup_duplicate(), blender::ed::object::vgroup_move_exec(), and blender::ed::object::vgroup_sort_bone_hierarchy().
| int BKE_object_defgroup_name_index | ( | const Object * | ob, |
| blender::StringRef | name ) |
Definition at line 591 of file deform.cc.
References BKE_id_defgroup_name_index(), Object::data, and name.
Referenced by BKE_object_defgroup_flip_index(), BKE_object_defgroup_flip_map_single(), BKE_object_defgroup_index_map_create(), BKE_object_defgroup_mirror_selection(), construct_param_handle(), construct_param_handle_multi(), construct_param_handle_subsurfed(), contarget_get_lattice_mat(), contarget_get_mesh_mat(), data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), deform_verts_EM(), dynamicPaint_Modifier_apply(), dynamicPaint_outputLayerExists(), ED_wpaint_mirror_vgroup_ensure(), get_weights_array(), MOD_get_vgroup(), blender::modify_drawing(), object_defgroup_unlocked_flip_map_ex(), blender::ed::object::vgroup_select_by_name(), and blender::ed::object::vgroup_sync_from_pose().
| bDeformGroup * BKE_object_defgroup_new | ( | Object * | ob, |
| blender::StringRef | name ) |
Definition at line 48 of file deform.cc.
References BKE_object_batch_cache_dirty_tag(), BKE_object_defgroup_list_mutable(), BKE_object_defgroup_unique_name(), BLI_addtail(), BLI_assert, Object::data, MEM_callocN(), bDeformGroup::name, name, OB_GREASE_PENCIL, OB_TYPE_SUPPORT_VGROUP, Object::type, and blender::bke::greasepencil::validate_drawing_vertex_groups().
Referenced by BKE_object_defgroup_add_name(), blender::bke::tests::ArmatureDeformTestBase::create_test_grease_pencil_object(), ED_wpaint_mirror_vgroup_ensure(), and blender::ed::geometry::geometry_attribute_convert_exec().
| void BKE_object_defgroup_set_name | ( | bDeformGroup * | dg, |
| Object * | ob, | ||
| const char * | new_name ) |
Definition at line 762 of file deform.cc.
References BKE_grease_pencil_vgroup_name_update(), BKE_object_defgroup_unique_name(), bDeformGroup::name, OB_GREASE_PENCIL, STRNCPY_UTF8, and Object::type.
| void BKE_object_defgroup_unique_name | ( | bDeformGroup * | dg, |
| Object * | ob ) |
Definition at line 752 of file deform.cc.
References BLI_uniquename_cb(), DATA_, defgroup_find_name_dupe(), bDeformGroup::name, and name.
Referenced by blender::ed::greasepencil::add_vertex_groups(), BKE_object_defgroup_new(), BKE_object_defgroup_set_name(), blo_do_versions_pre250(), blender::ed::outliner::namebutton_fn(), and blender::ed::object::vgroup_duplicate().
| bool BKE_object_supports_vertex_groups | ( | const Object * | ob | ) |
Definition at line 463 of file deform.cc.
References BKE_id_supports_vertex_groups(), and Object::data.
Referenced by BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), BKE_object_defgroup_list(), BKE_object_defgroup_list_mutable(), blender::ed::object::dt_layers_select_src_itemf(), ED_armature_bone_rename(), blender::bke::get_armature_deform_params(), object_defgroup_active_index_get_p(), and blender::ed::object::vertex_group_copy_to_selected_exec().