|
Blender V4.3
|
#include <cstdlib>#include <cstring>#include "MEM_guardedalloc.h"#include "BLT_translation.hh"#include "BLI_ghash.h"#include "BLI_listbase.h"#include "BLI_string_utils.hh"#include "BLI_utildefines.h"#include "DNA_armature_types.h"#include "DNA_cloth_types.h"#include "DNA_curve_types.h"#include "DNA_gpencil_legacy_types.h"#include "DNA_grease_pencil_types.h"#include "DNA_lattice_types.h"#include "DNA_mesh_types.h"#include "DNA_meshdata_types.h"#include "DNA_modifier_types.h"#include "DNA_object_force_types.h"#include "DNA_object_types.h"#include "DNA_particle_types.h"#include "DNA_scene_types.h"#include "BKE_action.hh"#include "BKE_deform.hh"#include "BKE_editmesh.hh"#include "BKE_gpencil_legacy.h"#include "BKE_grease_pencil_vertex_groups.hh"#include "BKE_mesh.hh"#include "BKE_modifier.hh"#include "BKE_object.hh"#include "BKE_object_deform.h"Go to the source code of this file.
| bool BKE_object_defgroup_active_is_locked | ( | const Object * | ob | ) |
Definition at line 696 of file object_deform.cc.
References BLI_findlink(), Object::data, DG_LOCK_WEIGHT, bDeformGroup::flag, OB_GREASE_PENCIL, Object::type, GreasePencil::vertex_group_active_index, and GreasePencil::vertex_group_names.
| bDeformGroup * BKE_object_defgroup_add | ( | struct Object * | ob | ) |
Add a vgroup of default name to object. Does not handle MDeformVert data at all!
Definition at line 116 of file object_deform.cc.
References BKE_object_defgroup_add_name(), and DATA_.
Referenced by data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), ED_wpaint_ensure_data(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::ensure_active_vertex_group_in_object(), blender::ed::object::vertex_group_add_exec(), and blender::ed::object::vertex_group_assign_new_exec().
| bDeformGroup * BKE_object_defgroup_add_name | ( | struct Object * | ob, |
| const char * | name ) |
Add a vgroup of given name to object. Does not handle MDeformVert data at all!
Definition at line 102 of file object_deform.cc.
References BKE_object_defgroup_active_index_set(), BKE_object_defgroup_count(), BKE_object_defgroup_new(), OB_TYPE_SUPPORT_VGROUP, and Object::type.
Referenced by BKE_object_defgroup_add(), data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), dgroup_skinnable_cb(), ED_wpaint_ensure_data(), blender::io::usd::import_mesh_skel_bindings(), SkinInfo::link_armature(), output_toggle_exec(), blender::ed::object::skin_armature_bone_create(), and vgroup_add_unique_bone_cb().
| bool BKE_object_defgroup_array_get | ( | struct ID * | id, |
| struct MDeformVert ** | dvert_arr, | ||
| int * | dvert_tot ) |
Get MDeformVert vgroup data from given object. Should only be used in Object mode.
Definition at line 509 of file object_deform.cc.
References BLI_assert_unreachable, Lattice::dvert, GS, ID_GP, ID_LT, ID_ME, object_defgroup_lattice_get(), Lattice::pntsu, Lattice::pntsv, and Lattice::pntsw.
Referenced by object_defgroup_remove_object_mode(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_nr_vert_add(), blender::ed::object::vgroup_vert_add(), and blender::ed::object::vgroup_vert_remove().
| bool BKE_object_defgroup_check_lock_relative | ( | const bool * | lock_flags, |
| const bool * | validmap, | ||
| int | index ) |
Checks if the lock relative mode is applicable.
Definition at line 667 of file object_deform.cc.
Referenced by blender::draw::drw_mesh_weight_state_extract(), weight_sample_invoke(), and wpaint_stroke_test_start().
| bool BKE_object_defgroup_check_lock_relative_multi | ( | int | defbase_tot, |
| const bool * | lock_flags, | ||
| const bool * | selected, | ||
| int | sel_tot ) |
Additional check for whether the lock relative mode is applicable in multi-paint mode.
Definition at line 674 of file object_deform.cc.
Referenced by blender::draw::drw_mesh_weight_state_extract(), weight_sample_invoke(), and wpaint_stroke_test_start().
| bool BKE_object_defgroup_clear | ( | struct Object * | ob, |
| struct bDeformGroup * | dg, | ||
| bool | use_selection ) |
Remove all verts (or only selected ones) from given vgroup. Work in Object and Edit modes.
| use_selection | Only operate on selection. |
Definition at line 142 of file object_deform.cc.
References BKE_defvert_find_index(), BKE_defvert_remove_group(), BKE_object_defgroup_list(), BLI_findindex(), BM_ELEM_CD_GET_VOID_P, BM_elem_flag_test, BM_ELEM_SELECT, BM_ITER_MESH, BM_VERTS_OF_MESH, CD_MDEFORMVERT, CD_PROP_BOOL, CustomData_get_layer_named(), CustomData_get_offset(), Object::data, Lattice::def, Lattice::dvert, MDeformVert::dw, BPoint::f1, OB_LATTICE, OB_MESH, object_defgroup_lattice_get(), Lattice::pntsu, Lattice::pntsv, Lattice::pntsw, SELECT, and Object::type.
Referenced by BKE_object_defgroup_clear_all(), object_defgroup_remove_edit_mode(), and blender::ed::object::vertex_group_remove_from_exec().
| bool BKE_object_defgroup_clear_all | ( | struct Object * | ob, |
| bool | use_selection ) |
Remove all verts (or only selected ones) from all vgroups. Work in Object and Edit modes.
| use_selection | Only operate on selection. |
Definition at line 212 of file object_deform.cc.
References BKE_object_defgroup_clear(), BKE_object_defgroup_list(), and LISTBASE_FOREACH.
Referenced by blender::ed::object::vertex_group_remove_from_exec().
| MDeformVert * BKE_object_defgroup_data_create | ( | struct ID * | id | ) |
Create MDeformVert data for given ID. Work in Object mode only.
Definition at line 121 of file object_deform.cc.
References Lattice::dvert, GS, ID_LT, ID_ME, MEM_callocN, Lattice::pntsu, Lattice::pntsv, and Lattice::pntsw.
Referenced by add_verts_to_dgroups(), ED_wpaint_ensure_data(), blender::ed::geometry::geometry_attribute_convert_exec(), blender::io::usd::import_mesh_skel_bindings(), blender::ed::object::vgroup_array_copy(), blender::ed::object::vgroup_assign_verts(), and blender::ed::object::vgroup_vert_add().
| void BKE_object_defgroup_index_map_apply | ( | MDeformVert * | dvert, |
| int | dvert_len, | ||
| const int * | map, | ||
| int | map_len ) |
Definition at line 474 of file object_deform.cc.
References MDeformWeight::def_nr, MDeformVert::dw, MEM_reallocN, MEM_SAFE_FREE, and MDeformVert::totweight.
Referenced by join_mesh_single(), and mesh_merge_transform().
| int * BKE_object_defgroup_index_map_create | ( | struct Object * | ob_src, |
| struct Object * | ob_dst, | ||
| int * | r_map_len ) |
Compute mapping for vertex groups with matching name, -1 is used for no remapping. Returns null if no remapping is required. The returned array has to be freed.
Definition at line 440 of file object_deform.cc.
References BKE_object_defgroup_list(), BKE_object_defgroup_name_index(), BLI_listbase_count(), BLI_listbase_is_empty(), ListBase::first, MEM_freeN(), MEM_malloc_arrayN, bDeformGroup::name, and bDeformGroup::next.
Referenced by arrayModifier_doArray(), and join_mesh_single().
Gets the status of "flag" for each bDeformGroup in the object data's vertex group list and returns an array containing them
Definition at line 543 of file object_deform.cc.
References BKE_object_defgroup_list_mutable(), DG_LOCK_WEIGHT, ListBase::first, bDeformGroup::flag, MEM_freeN(), MEM_mallocN, and bDeformGroup::next.
Referenced by blender::draw::drw_mesh_weight_state_extract(), paint_weight_gradient_exec(), blender::ed::object::vgroup_normalize_all(), weight_sample_invoke(), and wpaint_stroke_test_start().
| void BKE_object_defgroup_mirror_selection | ( | struct Object * | ob, |
| int | defbase_tot, | ||
| const bool * | selection, | ||
| bool * | dg_flags_sel, | ||
| int * | r_dg_flags_sel_tot ) |
Marks mirror vgroups in output and counts them. Output and counter assumed to be already initialized. Designed to be usable after BKE_object_defgroup_selected_get to extend selection to mirror.
Definition at line 738 of file object_deform.cc.
References BKE_object_defgroup_list(), BKE_object_defgroup_name_index(), BLI_string_flip_side_name(), ListBase::first, MAXBONENAME, bDeformGroup::name, bDeformGroup::next, and STREQ.
Referenced by blender::draw::drw_mesh_weight_state_extract(), blender::ed::object::vgroup_selected_get(), weight_sample_invoke(), and wpaint_stroke_test_start().
Update users of vgroups from this object, according to given map.
Use it when you remove or reorder vgroups in the object.
| map | an array mapping old indices to new indices. |
Definition at line 56 of file object_deform.cc.
References ClothModifierData::coll_parms, eModifierType_Cloth, eModifierType_Explode, LISTBASE_FOREACH, Object::modifiers, Object::particlesystem, PSYS_TOT_VG, ClothModifierData::sim_parms, Object::soft, SoftBody::vertgroup, ExplodeModifierData::vgroup, ClothSimSettings::vgroup_bend, ClothSimSettings::vgroup_intern, ClothSimSettings::vgroup_mass, ClothCollSettings::vgroup_objcol, ClothSimSettings::vgroup_pressure, ClothCollSettings::vgroup_selfcol, ClothSimSettings::vgroup_shear, ClothSimSettings::vgroup_shrink, and ClothSimSettings::vgroup_struct.
Referenced by object_defgroup_remove_update_users(), blender::ed::object::vgroup_array_copy(), and blender::ed::object::vgroup_do_remap().
| void BKE_object_defgroup_remove | ( | struct Object * | ob, |
| struct bDeformGroup * | defgroup ) |
Remove given vgroup from object. Work in Object and Edit modes.
Definition at line 376 of file object_deform.cc.
References BKE_object_batch_cache_dirty_tag(), BKE_object_is_in_editmode_vgroup(), Object::data, OB_GREASE_PENCIL, object_defgroup_remove_edit_mode(), object_defgroup_remove_object_mode(), Object::type, and blender::bke::greasepencil::validate_drawing_vertex_groups().
Referenced by data_transfer_layersmapping_vgroups_multisrc_to_dst(), blender::ed::object::grease_pencil_clear_from_vgroup(), output_toggle_exec(), and blender::ed::object::vgroup_delete_active().
| void BKE_object_defgroup_remove_all | ( | struct Object * | ob | ) |
Remove all vgroups from object. Work in Object and Edit modes.
Definition at line 435 of file object_deform.cc.
References BKE_object_defgroup_remove_all_ex().
Referenced by data_transfer_layersmapping_vgroups(), and blender::ed::object::vgroup_array_copy().
| void BKE_object_defgroup_remove_all_ex | ( | struct Object * | ob, |
| bool | only_unlocked ) |
Remove all vgroups from object. Work in Object and Edit modes. When only_unlocked=true, locked vertex groups are not removed.
Definition at line 393 of file object_deform.cc.
References BKE_object_defgroup_active_index_set(), BKE_object_defgroup_list_mutable(), BKE_object_is_in_editmode_vgroup(), CD_MDEFORMVERT, blender::bke::greasepencil::clear_vertex_groups(), CustomData_free_layer_active(), Object::data, DG_LOCK_WEIGHT, Lattice::dvert, ListBase::first, bDeformGroup::flag, MEM_SAFE_FREE, bDeformGroup::next, OB_GREASE_PENCIL, OB_LATTICE, OB_MESH, object_defgroup_lattice_get(), object_defgroup_remove_edit_mode(), object_defgroup_remove_object_mode(), and Object::type.
Referenced by BKE_object_defgroup_remove_all(), and blender::ed::object::vertex_group_remove_exec().
| bool * BKE_object_defgroup_selected_get | ( | struct Object * | ob, |
| int | defbase_tot, | ||
| int * | r_dg_flags_sel_tot ) |
Returns total selected vgroups, wpi.defbase_sel is assumed malloc'd, all values are set.
Definition at line 634 of file object_deform.cc.
References BKE_object_defgroup_list(), BKE_object_pose_armature_get(), BKE_pose_channel_find_name(), bPoseChannel::bone, BONE_SELECTED, ListBase::first, Bone::flag, MEM_mallocN, bDeformGroup::next, and Object::pose.
Referenced by BKE_object_defgroup_subset_from_select_type(), blender::draw::drw_mesh_weight_state_extract(), blender::ed::object::vgroup_selected_get(), weight_sample_invoke(), and wpaint_stroke_test_start().
| void BKE_object_defgroup_split_locked_validmap | ( | int | defbase_tot, |
| const bool * | locked, | ||
| const bool * | deform, | ||
| bool * | r_locked, | ||
| bool * | r_unlocked ) |
Takes a pair of boolean masks of all locked and all deform groups, and computes a pair of masks for locked deform and unlocked deform groups. Output buffers may reuse the input ones.
Definition at line 716 of file object_deform.cc.
Referenced by blender::draw::drw_mesh_weight_state_extract(), weight_sample_invoke(), and wpaint_stroke_test_start().
| bool * BKE_object_defgroup_subset_from_select_type | ( | struct Object * | ob, |
| enum eVGroupSelect | subset_type, | ||
| int * | r_defgroup_tot, | ||
| int * | r_subset_count ) |
Return the subset type of the Vertex Group Selection.
Definition at line 768 of file object_deform.cc.
References BKE_object_defgroup_active_index_get(), BKE_object_defgroup_count(), BKE_object_defgroup_selected_get(), BKE_object_defgroup_validmap_get(), MEM_mallocN, WT_VGROUP_ACTIVE, WT_VGROUP_ALL, WT_VGROUP_BONE_DEFORM, WT_VGROUP_BONE_DEFORM_OFF, and WT_VGROUP_BONE_SELECT.
Referenced by data_transfer_layersmapping_vgroups(), blender::ed::object::vertex_group_clean_exec(), blender::ed::object::vertex_group_invert_exec(), blender::ed::object::vertex_group_levels_exec(), blender::ed::object::vertex_group_limit_total_exec(), blender::ed::object::vertex_group_normalize_all_exec(), blender::ed::object::vertex_group_quantize_exec(), blender::ed::object::vertex_group_smooth_exec(), blender::ed::object::vgroup_copy_active_to_sel(), blender::ed::object::vgroup_normalize_active_vertex(), and view3d_panel_vgroup().
| void BKE_object_defgroup_subset_to_index_array | ( | const bool * | defgroup_validmap, |
| int | defgroup_tot, | ||
| int * | r_defgroup_subset_map ) |
Store indices from the defgroup_validmap (faster lookups in some cases).
Definition at line 832 of file object_deform.cc.
Referenced by blender::ed::object::vgroup_smooth_subset().
Definition at line 565 of file object_deform.cc.
References BKE_modifiers_get_virtual_modifierlist(), BKE_object_defgroup_list(), BLI_assert, BLI_ghash_free(), BLI_ghash_insert(), BLI_ghash_len(), BLI_ghash_lookup(), BLI_ghash_lookup_p(), BLI_ghash_str_new_ex(), BLI_listbase_is_empty(), BONE_NO_DEFORM, bPose::chanbase, eModifierMode_Realtime, eModifierMode_Virtual, eModifierType_Armature, ListBase::first, LISTBASE_FOREACH, MEM_mallocN, ModifierData::mode, Object::modifiers, bDeformGroup::name, bDeformGroup::next, ModifierData::next, ArmatureModifierData::object, POINTER_FROM_INT, Object::pose, and ModifierData::type.
Referenced by BKE_object_defgroup_subset_from_select_type(), blender::draw::drw_mesh_weight_state_extract(), blender::ed::object::normalize_vertex_group_target(), paint_weight_gradient_exec(), weight_sample_invoke(), and wpaint_stroke_test_start().
Definition at line 49 of file object_deform.cc.
References BLI_assert, Lattice::editlatt, GS, ID_LT, and EditLatt::latt.
Referenced by BKE_object_defgroup_array_get(), BKE_object_defgroup_clear(), BKE_object_defgroup_remove_all_ex(), and object_defgroup_remove_common().
|
static |
Definition at line 250 of file object_deform.cc.
References BKE_object_defgroup_active_index_get(), BKE_object_defgroup_active_index_set(), BKE_object_defgroup_list_mutable(), BLI_freelinkN(), BLI_listbase_is_empty(), CD_MDEFORMVERT, blender::bke::greasepencil::clear_vertex_groups(), CustomData_free_layer_active(), Object::data, Lattice::dvert, MEM_SAFE_FREE, OB_GREASE_PENCIL, OB_LATTICE, OB_MESH, object_defgroup_lattice_get(), object_defgroup_remove_update_users(), and Object::type.
Referenced by object_defgroup_remove_edit_mode(), and object_defgroup_remove_object_mode().
|
static |
Definition at line 320 of file object_deform.cc.
References BKE_object_defgroup_clear(), BKE_object_defgroup_list(), BLI_assert, BLI_findindex(), BMEditMesh::bm, BM_ELEM_CD_GET_VOID_P, BM_ITER_MESH, BM_VERTS_OF_MESH, CD_MDEFORMVERT, CustomData_get_offset(), Object::data, Lattice::def, MDeformWeight::def_nr, Lattice::dvert, MDeformVert::dw, OB_LATTICE, OB_MESH, object_defgroup_remove_common(), Lattice::pntsu, Lattice::pntsv, Lattice::pntsw, MDeformVert::totweight, Object::type, and BMesh::vdata.
Referenced by BKE_object_defgroup_remove(), and BKE_object_defgroup_remove_all_ex().
|
static |
Definition at line 286 of file object_deform.cc.
References BKE_defvert_find_index(), BKE_defvert_remove_group(), BKE_object_defgroup_array_get(), BKE_object_defgroup_list(), BLI_assert, BLI_findindex(), Object::data, MDeformWeight::def_nr, MDeformVert::dw, object_defgroup_remove_common(), and MDeformVert::totweight.
Referenced by BKE_object_defgroup_remove(), and BKE_object_defgroup_remove_all_ex().
Definition at line 233 of file object_deform.cc.
References BKE_object_defgroup_count(), BKE_object_defgroup_remap_update_users(), MEM_freeN(), and MEM_mallocN.
Referenced by object_defgroup_remove_common().