Blender V4.3
armature_intern.hh File Reference

Go to the source code of this file.

Classes

struct  tPChanFCurveLink
 

Functions

Armature EditMode Operators
void ARMATURE_OT_bone_primitive_add (wmOperatorType *ot)
 
void ARMATURE_OT_align (wmOperatorType *ot)
 
void ARMATURE_OT_calculate_roll (wmOperatorType *ot)
 
void ARMATURE_OT_roll_clear (wmOperatorType *ot)
 
void ARMATURE_OT_switch_direction (wmOperatorType *ot)
 
void ARMATURE_OT_subdivide (wmOperatorType *ot)
 
void ARMATURE_OT_parent_set (wmOperatorType *ot)
 
void ARMATURE_OT_parent_clear (wmOperatorType *ot)
 
void ARMATURE_OT_select_all (wmOperatorType *ot)
 
void ARMATURE_OT_select_mirror (wmOperatorType *ot)
 
void ARMATURE_OT_select_more (wmOperatorType *ot)
 
void ARMATURE_OT_select_less (wmOperatorType *ot)
 
void ARMATURE_OT_select_hierarchy (wmOperatorType *ot)
 
void ARMATURE_OT_select_linked_pick (wmOperatorType *ot)
 
void ARMATURE_OT_select_linked (wmOperatorType *ot)
 
void ARMATURE_OT_select_similar (wmOperatorType *ot)
 
void ARMATURE_OT_shortest_path_pick (wmOperatorType *ot)
 
void ARMATURE_OT_delete (wmOperatorType *ot)
 
void ARMATURE_OT_dissolve (wmOperatorType *ot)
 
void ARMATURE_OT_duplicate (wmOperatorType *ot)
 
void ARMATURE_OT_symmetrize (wmOperatorType *ot)
 
void ARMATURE_OT_extrude (wmOperatorType *ot)
 
void ARMATURE_OT_hide (wmOperatorType *ot)
 
void ARMATURE_OT_reveal (wmOperatorType *ot)
 
void ARMATURE_OT_click_extrude (wmOperatorType *ot)
 
void ARMATURE_OT_fill (wmOperatorType *ot)
 
void ARMATURE_OT_separate (wmOperatorType *ot)
 
void ARMATURE_OT_split (wmOperatorType *ot)
 
void ARMATURE_OT_autoside_names (wmOperatorType *ot)
 
void ARMATURE_OT_flip_names (wmOperatorType *ot)
 
void ARMATURE_OT_collection_add (wmOperatorType *ot)
 
void ARMATURE_OT_collection_remove (wmOperatorType *ot)
 
void ARMATURE_OT_collection_move (wmOperatorType *ot)
 
void ARMATURE_OT_collection_assign (wmOperatorType *ot)
 
void ARMATURE_OT_collection_create_and_assign (wmOperatorType *ot)
 
void ARMATURE_OT_collection_unassign (wmOperatorType *ot)
 
void ARMATURE_OT_collection_unassign_named (wmOperatorType *ot)
 
void ARMATURE_OT_collection_select (wmOperatorType *ot)
 
void ARMATURE_OT_collection_deselect (wmOperatorType *ot)
 
void ARMATURE_OT_move_to_collection (wmOperatorType *ot)
 
void ARMATURE_OT_assign_to_collection (wmOperatorType *ot)
 
Pose-Mode Operators
void POSE_OT_hide (wmOperatorType *ot)
 
void POSE_OT_reveal (wmOperatorType *ot)
 
void POSE_OT_armature_apply (wmOperatorType *ot)
 
void POSE_OT_visual_transform_apply (wmOperatorType *ot)
 
void POSE_OT_rot_clear (wmOperatorType *ot)
 
void POSE_OT_loc_clear (wmOperatorType *ot)
 
void POSE_OT_scale_clear (wmOperatorType *ot)
 
void POSE_OT_transforms_clear (wmOperatorType *ot)
 
void POSE_OT_user_transforms_clear (wmOperatorType *ot)
 
void POSE_OT_copy (wmOperatorType *ot)
 
void POSE_OT_paste (wmOperatorType *ot)
 
void POSE_OT_select_all (wmOperatorType *ot)
 
void POSE_OT_select_parent (wmOperatorType *ot)
 
void POSE_OT_select_hierarchy (wmOperatorType *ot)
 
void POSE_OT_select_linked (wmOperatorType *ot)
 
void POSE_OT_select_linked_pick (wmOperatorType *ot)
 
void POSE_OT_select_constraint_target (wmOperatorType *ot)
 
void POSE_OT_select_grouped (wmOperatorType *ot)
 
void POSE_OT_select_mirror (wmOperatorType *ot)
 
void POSE_OT_paths_calculate (wmOperatorType *ot)
 
void POSE_OT_paths_update (wmOperatorType *ot)
 
void POSE_OT_paths_clear (wmOperatorType *ot)
 
void POSE_OT_paths_range_update (wmOperatorType *ot)
 
void POSE_OT_autoside_names (wmOperatorType *ot)
 
void POSE_OT_flip_names (wmOperatorType *ot)
 
void POSE_OT_rotation_mode_set (wmOperatorType *ot)
 
void POSE_OT_quaternions_flip (wmOperatorType *ot)
 
Pose Tool Utilities (for PoseLib, Pose Sliding, etc.)
ObjectposeAnim_object_get (Object *ob_)
 
void poseAnim_mapping_get (bContext *C, ListBase *pfLinks)
 
void poseAnim_mapping_free (ListBase *pfLinks)
 
void poseAnim_mapping_refresh (bContext *C, Scene *scene, Object *ob)
 
void poseAnim_mapping_reset (ListBase *pfLinks)
 
void poseAnim_mapping_autoKeyframe (bContext *C, Scene *scene, ListBase *pfLinks, float cframe)
 
LinkDataposeAnim_mapping_getNextFCurve (ListBase *fcuLinks, LinkData *prev, const char *path)
 
PoseLib
void POSELIB_OT_apply_pose_asset (wmOperatorType *ot)
 
void POSELIB_OT_blend_pose_asset (wmOperatorType *ot)
 
Pose Sliding Tools
void POSE_OT_push (wmOperatorType *ot)
 
void POSE_OT_relax (wmOperatorType *ot)
 
void POSE_OT_blend_with_rest (wmOperatorType *ot)
 
void POSE_OT_breakdown (wmOperatorType *ot)
 
void POSE_OT_blend_to_neighbors (wmOperatorType *ot)
 
void POSE_OT_propagate (wmOperatorType *ot)
 
Various Armature Edit/Pose Editing API's
EditBonemake_boneList (ListBase *edbo, ListBase *bones, Bone *actBone)
 
void preEditBoneDuplicate (ListBase *editbones)
 
void postEditBoneDuplicate (ListBase *editbones, Object *ob)
 
EditBoneduplicateEditBone (EditBone *cur_bone, const char *name, ListBase *editbones, Object *ob)
 
EditBoneduplicateEditBoneObjects (EditBone *cur_bone, const char *name, ListBase *editbones, Object *src_ob, Object *dst_ob)
 
EditBoneadd_points_bone (Object *obedit, float head[3], float tail[3])
 
void bone_free (bArmature *arm, EditBone *bone)
 
void armature_tag_select_mirrored (bArmature *arm)
 
void armature_select_mirrored_ex (bArmature *arm, int flag)
 
void armature_select_mirrored (bArmature *arm)
 
void armature_tag_unselect (bArmature *arm)
 
Selection Picking
EditBoneED_armature_pick_ebone_from_selectbuffer (blender::Span< Base * > bases, const GPUSelectResult *hit_results, int hits, bool findunsel, bool do_nearest, Base **r_base)
 
bPoseChannelED_armature_pick_pchan_from_selectbuffer (blender::Span< Base * > bases, const GPUSelectResult *hit_results, int hits, bool findunsel, bool do_nearest, Base **r_base)
 
BoneED_armature_pick_bone_from_selectbuffer (blender::Span< Base * > bases, const GPUSelectResult *hit_results, int hits, bool findunsel, bool do_nearest, Base **r_base)
 
Iteration
int bone_looper (Object *ob, Bone *bone, void *data, int(*bone_func)(Object *, Bone *, void *))
 

Function Documentation

◆ add_points_bone()

EditBone * add_points_bone ( Object * obedit,
float head[3],
float tail[3] )

Adds an EditBone between the nominated locations (should be in the right space).

Definition at line 280 of file armature_add.cc.

References copy_v3_v3(), Object::data, DATA_, ED_armature_ebone_add(), EditBone::head, and EditBone::tail.

Referenced by armature_fill_bones_exec().

◆ ARMATURE_OT_align()

◆ ARMATURE_OT_assign_to_collection()

◆ ARMATURE_OT_autoside_names()

◆ ARMATURE_OT_bone_primitive_add()

◆ ARMATURE_OT_calculate_roll()

◆ ARMATURE_OT_click_extrude()

◆ ARMATURE_OT_collection_add()

◆ ARMATURE_OT_collection_assign()

◆ ARMATURE_OT_collection_create_and_assign()

◆ ARMATURE_OT_collection_deselect()

◆ ARMATURE_OT_collection_move()

◆ ARMATURE_OT_collection_remove()

◆ ARMATURE_OT_collection_select()

◆ ARMATURE_OT_collection_unassign()

◆ ARMATURE_OT_collection_unassign_named()

◆ ARMATURE_OT_delete()

◆ ARMATURE_OT_dissolve()

◆ ARMATURE_OT_duplicate()

◆ ARMATURE_OT_extrude()

◆ ARMATURE_OT_fill()

◆ ARMATURE_OT_flip_names()

◆ ARMATURE_OT_hide()

◆ ARMATURE_OT_move_to_collection()

◆ ARMATURE_OT_parent_clear()

◆ ARMATURE_OT_parent_set()

◆ ARMATURE_OT_reveal()

◆ ARMATURE_OT_roll_clear()

◆ ARMATURE_OT_select_all()

◆ ARMATURE_OT_select_hierarchy()

◆ ARMATURE_OT_select_less()

◆ ARMATURE_OT_select_linked()

◆ ARMATURE_OT_select_linked_pick()

◆ ARMATURE_OT_select_mirror()

◆ ARMATURE_OT_select_more()

◆ ARMATURE_OT_select_similar()

◆ ARMATURE_OT_separate()

◆ ARMATURE_OT_shortest_path_pick()

◆ ARMATURE_OT_split()

◆ ARMATURE_OT_subdivide()

◆ ARMATURE_OT_switch_direction()

◆ ARMATURE_OT_symmetrize()

◆ armature_select_mirrored()

void armature_select_mirrored ( bArmature * arm)

Definition at line 291 of file armature_utils.cc.

References armature_select_mirrored_ex(), and BONE_SELECTED.

Referenced by armature_delete_selected_exec().

◆ armature_select_mirrored_ex()

void armature_select_mirrored_ex ( bArmature * arm,
int flag )

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 273 of file armature_utils.cc.

References ANIM_bonecoll_is_visible_editbone(), ARM_MIRROR_EDIT, BLI_assert, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, ED_armature_ebone_get_mirrored(), bArmature::edbo, bArmature::flag, EditBone::flag, flag, and LISTBASE_FOREACH.

Referenced by armature_dissolve_selected_exec(), and armature_select_mirrored().

◆ armature_tag_select_mirrored()

◆ armature_tag_unselect()

void armature_tag_unselect ( bArmature * arm)

Only works when tagged.

Definition at line 325 of file armature_utils.cc.

References BONE_DONE, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, bArmature::edbo, and LISTBASE_FOREACH.

Referenced by armature_switch_direction_exec().

◆ bone_free()

◆ bone_looper()

int bone_looper ( Object * ob,
Bone * bone,
void * data,
int(* bone_func )(Object *, Bone *, void *) )

XXX: bone_looper is only to be used when we want to access settings (i.e. editability/visibility/selected) that context doesn't offer.

Definition at line 69 of file armature_utils.cc.

References bone_looper(), Bone::childbase, count, ListBase::first, and Bone::next.

Referenced by add_verts_to_dgroups(), bone_looper(), ED_object_vgroup_calc_from_armature(), pose_hide_exec(), and pose_reveal_exec().

◆ duplicateEditBone()

EditBone * duplicateEditBone ( EditBone * cur_bone,
const char * name,
ListBase * editbones,
Object * ob )

◆ duplicateEditBoneObjects()

EditBone * duplicateEditBoneObjects ( EditBone * cur_bone,
const char * name,
ListBase * editbones,
Object * src_ob,
Object * dst_ob )

◆ ED_armature_pick_bone_from_selectbuffer()

Bone * ED_armature_pick_bone_from_selectbuffer ( blender::Span< Base * > bases,
const GPUSelectResult * hit_results,
int hits,
bool findunsel,
bool do_nearest,
Base ** r_base )

◆ ED_armature_pick_ebone_from_selectbuffer()

EditBone * ED_armature_pick_ebone_from_selectbuffer ( blender::Span< Base * > bases,
const GPUSelectResult * hit_results,
int hits,
bool findunsel,
bool do_nearest,
Base ** r_base )

◆ ED_armature_pick_pchan_from_selectbuffer()

bPoseChannel * ED_armature_pick_pchan_from_selectbuffer ( blender::Span< Base * > bases,
const GPUSelectResult * hit_results,
int hits,
bool findunsel,
bool do_nearest,
Base ** r_base )

◆ make_boneList()

◆ POSE_OT_armature_apply()

◆ POSE_OT_autoside_names()

◆ POSE_OT_blend_to_neighbors()

◆ POSE_OT_blend_with_rest()

◆ POSE_OT_breakdown()

◆ POSE_OT_copy()

◆ POSE_OT_flip_names()

◆ POSE_OT_hide()

◆ POSE_OT_loc_clear()

◆ POSE_OT_paste()

◆ POSE_OT_paths_calculate()

◆ POSE_OT_paths_clear()

◆ POSE_OT_paths_range_update()

◆ POSE_OT_paths_update()

◆ POSE_OT_propagate()

◆ POSE_OT_push()

◆ POSE_OT_quaternions_flip()

◆ POSE_OT_relax()

◆ POSE_OT_reveal()

◆ POSE_OT_rot_clear()

◆ POSE_OT_rotation_mode_set()

◆ POSE_OT_scale_clear()

◆ POSE_OT_select_all()

◆ POSE_OT_select_constraint_target()

◆ POSE_OT_select_grouped()

◆ POSE_OT_select_hierarchy()

◆ POSE_OT_select_linked()

◆ POSE_OT_select_linked_pick()

◆ POSE_OT_select_mirror()

◆ POSE_OT_select_parent()

◆ POSE_OT_transforms_clear()

◆ POSE_OT_user_transforms_clear()

◆ POSE_OT_visual_transform_apply()

◆ poseAnim_mapping_autoKeyframe()

◆ poseAnim_mapping_free()

void poseAnim_mapping_free ( ListBase * pfLinks)

◆ poseAnim_mapping_get()

void poseAnim_mapping_get ( bContext * C,
ListBase * pfLinks )

Build up a list of tPChanFCurveLink. First only selected, and if that yields no result, all visible.

Definition at line 241 of file pose_utils.cc.

References AnimData::action, Object::adt, BLI_assert, BLI_listbase_is_empty(), CTX_DATA_BEGIN_WITH_ID, CTX_DATA_END, fcurves_to_pchan_links_get(), and poseAnim_object_get().

Referenced by pose_propagate_exec(), and pose_slide_init().

◆ poseAnim_mapping_getNextFCurve()

LinkData * poseAnim_mapping_getNextFCurve ( ListBase * fcuLinks,
LinkData * prev,
const char * path )

Find the next F-Curve for a PoseChannel with matching path.

  • path is not just the tPChanFCurveLink (pfl) rna_path, since that path doesn't have property info yet.

Definition at line 434 of file pose_utils.cc.

References LinkData::data, ListBase::first, LinkData::next, FCurve::rna_path, and STREQ.

Referenced by pose_slide_apply_quat(), and pose_slide_apply_vec3().

◆ poseAnim_mapping_refresh()

void poseAnim_mapping_refresh ( bContext * C,
Scene * scene,
Object * ob )

◆ poseAnim_mapping_reset()

◆ poseAnim_object_get()

Object * poseAnim_object_get ( Object * ob_)

Returns a valid pose armature for this object, else returns NULL.

Definition at line 232 of file pose_utils.cc.

References AnimData::action, Object::adt, BKE_object_pose_armature_get(), Object::data, and ELEM.

Referenced by pose_slide_init(), poseAnim_mapping_autoKeyframe(), and poseAnim_mapping_get().

◆ POSELIB_OT_apply_pose_asset()

◆ POSELIB_OT_blend_pose_asset()

◆ postEditBoneDuplicate()

◆ preEditBoneDuplicate()

void preEditBoneDuplicate ( ListBase * editbones)

Call this before doing any duplication.

Definition at line 305 of file armature_add.cc.

References ED_armature_ebone_listbase_temp_clear().

Referenced by armature_duplicate_selected_exec(), and armature_symmetrize_exec().