Blender
V3.3
|
#include "DNA_armature_types.h"
#include "DNA_object_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_string_utils.h"
#include "BKE_armature.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_global.h"
#include "BKE_idprop.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "DEG_depsgraph.h"
#include "ED_armature.h"
#include "ED_util.h"
#include "armature_intern.h"
Go to the source code of this file.
Macros | |
#define | EBONE_TEMP_UINT(ebone) (*((uint *)(&((ebone)->temp)))) |
This function:
Definition at line 592 of file armature_utils.c.
References Bone::arm_head, Bone::arm_mat, Bone::arm_tail, KDL::atan2(), atan2f, BKE_armature_where_is_bone(), EditBone::bone, Bone::childbase, copy_m3_m4(), copy_v3_v3(), ED_armature_ebone_to_mat3(), ListBase::first, Bone::head, invert_m3_m3(), invert_m4_m4(), mul_m3_m3m3(), mul_mat3_m4_v3(), Bone::name, EditBone::next, Bone::next, Bone::parent, print_m4(), RAD2DEGF, Bone::roll, sub_v3_v3v3(), Bone::tail, and EditBone::temp.
Referenced by ED_armature_from_edit().
Definition at line 311 of file armature_utils.c.
References armature_select_mirrored_ex(), and BONE_SELECTED.
Referenced by armature_delete_selected_exec().
Helper function for tools to work on mirrored parts. it leaves mirrored bones selected then too, which is a good indication of what happened.
Definition at line 291 of file armature_utils.c.
References ARM_MIRROR_EDIT, BLI_assert, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, ED_armature_ebone_get_mirrored(), bArmature::edbo, ListBase::first, EditBone::flag, bArmature::flag, EditBone::layer, bArmature::layer, and EditBone::next.
Referenced by armature_dissolve_selected_exec(), and armature_select_mirrored().
Definition at line 316 of file armature_utils.c.
References ARM_MIRROR_EDIT, BONE_DONE, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, ED_armature_ebone_get_mirrored(), bArmature::edbo, ListBase::first, EditBone::flag, bArmature::flag, EditBone::layer, bArmature::layer, and EditBone::next.
Referenced by armature_switch_direction_exec().
Only works when tagged.
Definition at line 347 of file armature_utils.c.
References BONE_DONE, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, bArmature::edbo, ListBase::first, EditBone::flag, and EditBone::next.
Referenced by armature_switch_direction_exec().
Definition at line 119 of file armature_utils.c.
References bArmature::act_edbone, BLI_freelinkN(), bArmature::edbo, IDP_FreeProperty(), LISTBASE_FOREACH, NULL, and EditBone::prop.
Referenced by ED_armature_ebone_remove_ex(), ED_armature_from_edit(), and separate_armature_bones().
int bone_looper | ( | Object * | ob, |
Bone * | bone, | ||
void * | data, | ||
int(*)(Object *, Bone *, void *) | bone_func | ||
) |
Definition at line 87 of file armature_utils.c.
References Bone::childbase, count, data, ListBase::first, and Bone::next.
Definition at line 261 of file armature_utils.c.
References BLI_findstring().
Referenced by apply_armature_pose2bones_exec(), applyarmature_adjust_edit_position(), applyarmature_process_selected_recursive(), armature_delete_ebone_cb(), armature_dissolve_ebone_cb(), armature_duplicate_selected_exec(), armature_symmetrize_exec(), ED_armature_bone_rename(), ED_armature_ebone_get_mirrored(), ED_armature_join_objects_exec(), ED_object_jump_to_bone(), editbone_unique_check(), and separate_armature_bones().
EditBone* ED_armature_ebone_find_shared_parent | ( | struct EditBone * | ebone_child[], |
unsigned int | ebone_child_tot | ||
) |
Finds the first parent shared by ebone_child
ebone_child | Children bones to search |
ebone_child_tot | Size of the ebone_child array |
Definition at line 174 of file armature_utils.c.
References EBONE_TEMP_UINT, NULL, and EditBone::parent.
Referenced by armature_shortest_path_pick_invoke().
Definition at line 236 of file armature_utils.c.
References EditBone::head, len, len_v3v3(), madd_v3_v3v3fl(), mat3_to_vec_roll(), EditBone::roll, and EditBone::tail.
Referenced by ED_armature_ebone_from_mat4().
Definition at line 247 of file armature_utils.c.
References add_v3_v3(), BLI_ASSERT_UNIT_M3, copy_m3_m4(), copy_v3_v3(), ED_armature_ebone_from_mat3(), EditBone::head, sub_v3_v3(), and EditBone::tail.
Definition at line 272 of file armature_utils.c.
References BLI_string_flip_side_name(), ED_armature_ebone_find_name(), MAXBONENAME, EditBone::name, NULL, and STREQ.
Referenced by armature_align_bones_exec(), armature_autoside_names_exec(), armature_calc_roll_exec(), armature_click_extrude_exec(), armature_duplicate_selected_exec(), armature_extrude_exec(), armature_flip_names_exec(), armature_parent_set_exec(), armature_roll_clear_exec(), armature_select_mirror_exec(), armature_select_mirrored_ex(), armature_tag_select_mirrored(), createTransArmatureVerts(), ED_armature_ebone_transform_mirror_update(), get_symmetrized_bone(), postEditBoneDuplicate(), screen_ctx_selected_bones_(), and screen_ctx_visible_or_editable_bones_().
Definition at line 164 of file armature_utils.c.
References EditBone::parent.
Referenced by armature_shortest_path_pick_invoke(), do_outliner_ebone_select_recursive(), and restrictbutton_recursive_ebone().
void ED_armature_ebone_listbase_copy | ( | ListBase * | lb_dst, |
ListBase * | lb_src, | ||
const bool | do_id_user | ||
) |
Definition at line 839 of file armature_utils.c.
References EditBone::bbone_next, EditBone::bbone_prev, BLI_addtail(), BLI_assert, BLI_listbase_is_empty(), EditBone::ebone, ListBase::first, IDP_CopyProperty_ex(), LIB_ID_CREATE_NO_USER_REFCOUNT, MEM_dupallocN, EditBone::next, EditBone::parent, EditBone::prop, and EditBone::temp.
Referenced by undoarm_from_editarm(), and undoarm_to_editarm().
Free's bones and their properties.
Definition at line 822 of file armature_utils.c.
References BLI_listbase_clear(), ListBase::first, IDP_FreeProperty_ex(), MEM_freeN, EditBone::next, and EditBone::prop.
Referenced by undoarm_free_data(), and undoarm_to_editarm().
Definition at line 870 of file armature_utils.c.
References ListBase::first, EditBone::next, NULL, EditBone::p, and EditBone::temp.
Referenced by do_armature_box_select(), do_lasso_select_armature(), preEditBoneDuplicate(), undoarm_from_editarm(), and undoarm_to_editarm().
Definition at line 159 of file armature_utils.c.
References ED_armature_ebone_remove_ex().
Referenced by armature_delete_selected_exec().
void ED_armature_ebone_remove_ex | ( | struct bArmature * | arm, |
struct EditBone * | exBone, | ||
bool | clear_connected | ||
) |
clear_connected | When false caller is responsible for keeping the flag in a valid state. |
Definition at line 142 of file armature_utils.c.
References BONE_CONNECTED, bone_free(), bArmature::edbo, ListBase::first, EditBone::flag, EditBone::next, and EditBone::parent.
Referenced by armature_dissolve_selected_exec(), and ED_armature_ebone_remove().
Definition at line 927 of file armature_utils.c.
References BLI_assert, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, BONE_UNSELECTABLE, ED_armature_ebone_selectflag_set(), EditBone::flag, and select().
Referenced by armature_select_hierarchy_exec(), armature_select_less(), armature_select_linked_impl(), armature_select_more(), armature_select_more_less(), armature_split_exec(), armature_symmetrize_exec(), ED_object_jump_to_bone(), outliner_select_sync_to_edit_bone(), select_similar_children(), select_similar_children_immediate(), select_similar_data_pchan(), select_similar_direction(), select_similar_layer(), select_similar_length(), select_similar_prefix(), select_similar_siblings(), select_similar_suffix(), and tree_element_active_ebone__sel().
Definition at line 920 of file armature_utils.c.
References BLI_assert, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, ED_armature_ebone_selectflag_set(), and EditBone::flag.
Referenced by armature_select_less().
Definition at line 914 of file armature_utils.c.
References BLI_assert, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, ED_armature_ebone_selectflag_set(), and EditBone::flag.
Referenced by armature_select_more().
int ED_armature_ebone_selectflag_get | ( | const EditBone * | ebone | ) |
Definition at line 888 of file armature_utils.c.
References BONE_CONNECTED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, EditBone::flag, and EditBone::parent.
Referenced by armature_dissolve_selected_exec(), armature_select_mirror_exec(), armature_select_more_less(), and ED_armature_edit_select_pick_bone().
Definition at line 897 of file armature_utils.c.
References BONE_CONNECTED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, EditBone::flag, and EditBone::parent.
Referenced by armature_select_mirror_exec(), armature_shortest_path_select(), ED_armature_ebone_select_set(), ED_armature_ebone_selectflag_disable(), and ED_armature_ebone_selectflag_enable().
Definition at line 206 of file armature_utils.c.
References EditBone::head, normalize_v3(), EditBone::parent, EditBone::roll, sub_v3_v3v3(), EditBone::tail, and vec_roll_to_mat3_normalized().
Referenced by armature_calc_roll_exec(), armature_finalize_restpose(), createTransArmatureVerts(), ED_armature_ebone_to_mat4(), ED_armature_edit_transform(), ED_armature_join_objects_exec(), and getTransformOrientation_ex().
Definition at line 226 of file armature_utils.c.
References copy_m4_m3(), copy_v3_v3(), ED_armature_ebone_to_mat3(), and EditBone::head.
Referenced by draw_bone_update_disp_matrix_bbone(), draw_bone_update_disp_matrix_default(), and ebone_spline_preview().
void ED_armature_ebone_transform_mirror_update | ( | bArmature * | arm, |
EditBone * | ebo, | ||
bool | check_select | ||
) |
Definition at line 360 of file armature_utils.c.
References BONE_CONNECTED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, copy_v3_v3(), EditBone::curve_in_x, EditBone::curve_in_z, EditBone::curve_out_x, EditBone::curve_out_z, EditBone::dist, EditBone::ease1, EditBone::ease2, ED_armature_ebone_get_mirrored(), bArmature::edbo, ListBase::first, EditBone::flag, EditBone::head, EditBone::next, EditBone::parent, EditBone::rad_head, EditBone::rad_tail, EditBone::roll, EditBone::roll1, EditBone::roll2, EditBone::scale_in, EditBone::scale_out, EditBone::segments, EditBone::tail, EditBone::weight, EditBone::xwidth, and EditBone::zwidth.
Referenced by ED_armature_edit_transform_mirror_update().
Definition at line 788 of file armature_utils.c.
References bArmature::act_edbone, BLI_freelistN(), bArmature::edbo, ListBase::first, IDP_FreeProperty(), MEM_freeN, EditBone::next, NULL, and EditBone::prop.
Referenced by ArmatureExporter::add_armature_bones(), apply_armature_pose2bones_exec(), ED_armature_join_objects_exec(), ED_armature_origin_set(), ED_armature_to_edit(), ED_object_editmode_load_free_ex(), ArmatureImporter::make_armatures(), modifier_skin_armature_create(), separate_armature_bones(), and separate_armature_exec().
Update the layers_used variable after bones are moved between layer
Definition at line 73 of file armature_utils.c.
References bArmature::edbo, bArmature::layer_used, and LISTBASE_FOREACH.
Referenced by armature_bone_layers_exec(), armature_bone_primitive_add_exec(), armature_delete_selected_exec(), armature_dissolve_selected_exec(), armature_fill_bones_exec(), and separate_armature_exec().
Sync selection to parent for connected children.
Definition at line 36 of file armature_utils.c.
References BONE_CONNECTED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, BONE_UNSELECTABLE, ListBase::first, EditBone::flag, EditBone::next, and EditBone::parent.
Referenced by armature_circle_select(), armature_click_extrude_exec(), armature_delete_selected_exec(), armature_dissolve_selected_exec(), armature_duplicate_selected_exec(), armature_extrude_exec(), armature_hide_exec(), armature_parent_clear_exec(), armature_reveal_exec(), armature_select_hierarchy_exec(), armature_select_linked_impl(), armature_select_mirror_exec(), armature_select_more_less(), armature_shortest_path_pick_invoke(), armature_symmetrize_exec(), ED_armature_edit_deselect_all_visible(), ED_armature_edit_select_op_from_tagged(), ED_armature_edit_select_pick_bone(), and ED_object_jump_to_bone().
If edit-bone (partial) selected, copy data. context; edit-mode armature, with mirror editing enabled.
Definition at line 436 of file armature_utils.c.
References Object::data, ED_armature_ebone_transform_mirror_update(), bArmature::edbo, and LISTBASE_FOREACH.
Referenced by armature_symmetrize_exec(), ED_transverts_update_obedit(), recalcData_edit_armature(), and recalcData_pose().
Definition at line 62 of file armature_utils.c.
References bArmature::act_edbone, BONE_HIDDEN_A, EditBone::flag, and NULL.
Referenced by armature_circle_select(), armature_duplicate_selected_exec(), armature_hide_exec(), armature_reveal_exec(), armature_symmetrize_exec(), and ED_armature_edit_select_op_from_tagged().
Put edit-mode back in Object.
Definition at line 660 of file armature_utils.c.
References bArmature::act_bone, bArmature::act_edbone, Bone::arm_head, Bone::arm_roll, Bone::arm_tail, armature_finalize_restpose(), EditBone::bbone_flag, Bone::bbone_flag, EditBone::bbone_next, Bone::bbone_next, EditBone::bbone_next_flag, Bone::bbone_next_flag, EditBone::bbone_next_type, Bone::bbone_next_type, EditBone::bbone_prev, Bone::bbone_prev, EditBone::bbone_prev_flag, Bone::bbone_prev_flag, EditBone::bbone_prev_type, Bone::bbone_prev_type, BKE_armature_bone_hash_free(), BKE_armature_bone_hash_make(), BKE_armature_bonelist_free(), BKE_pose_rebuild(), BLI_addtail(), BLI_strncpy(), EditBone::bone, bone_free(), bArmature::bonebase, Bone::childbase, copy_v3_v3(), EditBone::curve_in_x, Bone::curve_in_x, EditBone::curve_in_z, Bone::curve_in_z, EditBone::curve_out_x, Bone::curve_out_x, EditBone::curve_out_z, Bone::curve_out_z, Object::data, DEG_id_tag_update(), EditBone::dist, Bone::dist, EditBone::ease1, Bone::ease1, EditBone::ease2, Bone::ease2, bArmature::edbo, ListBase::first, EditBone::flag, Bone::flag, G, G_DEBUG, EditBone::head, bArmature::id, Object::id, IDP_CopyProperty(), EditBone::inherit_scale_mode, Bone::inherit_scale_mode, EditBone::layer, Bone::layer, len_squared_v3v3(), MEM_callocN, EditBone::name, Bone::name, EditBone::next, ID::next, NULL, Main::objects, EditBone::parent, Bone::parent, EditBone::prop, Bone::prop, EditBone::rad_head, Bone::rad_head, EditBone::rad_tail, Bone::rad_tail, EditBone::roll, Bone::roll, EditBone::roll1, Bone::roll1, EditBone::roll2, Bone::roll2, EditBone::scale_in, Bone::scale_in, EditBone::scale_out, Bone::scale_out, EditBone::segments, Bone::segments, square_f(), EditBone::tail, EditBone::temp, EditBone::weight, Bone::weight, EditBone::xwidth, Bone::xwidth, EditBone::zwidth, and Bone::zwidth.
Referenced by apply_armature_pose2bones_exec(), ED_armature_join_objects_exec(), ED_armature_origin_set(), ED_object_editmode_load_free_ex(), ArmatureImporter::make_armatures(), modifier_skin_armature_create(), separate_armature_bones(), and separate_armature_exec().
Put armature in edit-mode.
Definition at line 809 of file armature_utils.c.
References bArmature::act_bone, bArmature::act_edbone, bArmature::bonebase, ED_armature_edit_free(), bArmature::edbo, make_boneList(), and MEM_callocN.
Referenced by ArmatureExporter::add_armature_bones(), apply_armature_pose2bones_exec(), ED_armature_join_objects_exec(), ED_armature_origin_set(), ED_object_editmode_enter_ex(), ArmatureImporter::make_armatures(), separate_armature_bones(), and separate_armature_exec().
Definition at line 550 of file armature_utils.c.
References LISTBASE_FOREACH, and NULL.
Referenced by make_boneList().
Definition at line 563 of file armature_utils.c.
References blender::compositor::active, Bone::bbone_next, Bone::bbone_prev, BLI_assert, find_ebone_link(), ListBase::first, ListBase::last, LISTBASE_FOREACH, make_boneList_recursive(), and NULL.
Referenced by ED_armature_to_edit().
|
static |
Definition at line 451 of file armature_utils.c.
References Bone::arm_head, Bone::arm_roll, Bone::arm_tail, EditBone::bbone_flag, Bone::bbone_flag, EditBone::bbone_next_flag, Bone::bbone_next_flag, EditBone::bbone_next_type, Bone::bbone_next_type, EditBone::bbone_prev_flag, Bone::bbone_prev_flag, EditBone::bbone_prev_type, Bone::bbone_prev_type, BLI_addtail(), BLI_strncpy(), EditBone::bone, BONE_CONNECTED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, Bone::childbase, copy_v3_v3(), EditBone::curve_in_x, Bone::curve_in_x, EditBone::curve_in_z, Bone::curve_in_z, EditBone::curve_out_x, Bone::curve_out_x, EditBone::curve_out_z, Bone::curve_out_z, EditBone::dist, Bone::dist, EditBone::ease1, Bone::ease1, EditBone::ease2, Bone::ease2, ListBase::first, EditBone::flag, Bone::flag, EditBone::head, IDP_CopyProperty(), EditBone::inherit_scale_mode, Bone::inherit_scale_mode, EditBone::layer, Bone::layer, EditBone::length, Bone::length, MEM_callocN, EditBone::name, Bone::name, Bone::next, NULL, EditBone::parent, EditBone::prop, Bone::prop, EditBone::rad_head, Bone::rad_head, EditBone::rad_tail, Bone::rad_tail, EditBone::roll, EditBone::roll1, Bone::roll1, EditBone::roll2, Bone::roll2, EditBone::scale_in, Bone::scale_in, EditBone::scale_out, Bone::scale_out, EditBone::segments, Bone::segments, EditBone::tail, EditBone::temp, EditBone::weight, Bone::weight, EditBone::xwidth, Bone::xwidth, EditBone::zwidth, and Bone::zwidth.
Referenced by make_boneList().