Blender V5.0
BKE_action.hh File Reference

Blender kernel action and pose functionality. More...

#include "BLI_compiler_attrs.h"
#include "BLI_function_ref.hh"
#include "BLI_span.hh"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::animrig
namespace  blender::bke

Typedefs

using blender::bke::FoundFCurveCallback = blender::FunctionRef<void(FCurve *fcurve, const char *bone_name)>
using blender::bke::FoundFCurveCallbackConst

Functions

bActionBKE_action_add (Main *bmain, const char name[])
void BKE_action_fcurves_clear (bAction *act)
bActionGroupget_active_actiongroup (bAction *act) ATTR_WARN_UNUSED_RESULT
void set_active_action_group (bAction *act, bActionGroup *agrp, short select)
void action_group_colors_sync (bActionGroup *grp, const bActionGroup *ref_grp)
void action_group_colors_set (bActionGroup *grp, const BoneColor *color)
void action_group_colors_set_from_posebone (bActionGroup *grp, const bPoseChannel *pchan)
bActionGroupaction_groups_add_new (bAction *act, const char name[])
void action_groups_add_channel (bAction *act, bActionGroup *agrp, FCurve *fcurve)
void action_groups_remove_channel (bAction *act, FCurve *fcu)
void BKE_action_groups_reconstruct (bAction *act)
bActionGroupBKE_action_group_find_name (bAction *act, const char name[])
void action_groups_clear_tempflags (bAction *act)
void BKE_pose_channel_free (bPoseChannel *pchan) ATTR_NONNULL(1)
void BKE_pose_channel_free_ex (bPoseChannel *pchan, bool do_id_user) ATTR_NONNULL(1)
void BKE_pose_channel_runtime_reset (bPoseChannel_Runtime *runtime) ATTR_NONNULL(1)
void BKE_pose_channel_runtime_reset_on_copy (bPoseChannel_Runtime *runtime) ATTR_NONNULL(1)
void BKE_pose_channel_runtime_free (bPoseChannel_Runtime *runtime) ATTR_NONNULL(1)
void BKE_pose_channel_free_bbone_cache (bPoseChannel_Runtime *runtime) ATTR_NONNULL(1)
void BKE_pose_channels_free (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_channels_free_ex (bPose *pose, bool do_id_user) ATTR_NONNULL(1)
void BKE_pose_channels_hash_ensure (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_channels_hash_free (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_channels_remove (Object *ob, bool(*filter_fn)(const char *bone_name, void *user_data), void *user_data) ATTR_NONNULL(1
void void BKE_pose_free_data_ex (bPose *pose, bool do_id_user) ATTR_NONNULL(1)
void BKE_pose_free_data (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_free (bPose *pose)
void BKE_pose_free_ex (bPose *pose, bool do_id_user)
void BKE_pose_copy_data_ex (bPose **dst, const bPose *src, int flag, bool copy_constraints)
void BKE_pose_copy_data (bPose **dst, const bPose *src, bool copy_constraints)
void BKE_pose_channel_copy_data (bPoseChannel *pchan, const bPoseChannel *pchan_from)
void BKE_pose_channel_session_uid_generate (bPoseChannel *pchan)
bPoseChannelBKE_pose_channel_find_name (const bPose *pose, const char *name)
bool BKE_pose_is_bonecoll_visible (const bArmature *arm, const bPoseChannel *pchan) ATTR_WARN_UNUSED_RESULT
bPoseChannelBKE_pose_channel_active (Object *ob, bool check_bonecoll)
bPoseChannelBKE_pose_channel_active_if_bonecoll_visible (Object *ob) ATTR_WARN_UNUSED_RESULT
bPoseChannelBKE_pose_channel_active_or_first_selected (Object *ob) ATTR_WARN_UNUSED_RESULT
bPoseChannelBKE_pose_channel_ensure (bPose *pose, const char *name) ATTR_NONNULL(2)
bPoseChannelBKE_pose_channel_get_mirrored (const bPose *pose, const char *name) ATTR_WARN_UNUSED_RESULT
void BKE_pose_check_uids_unique_and_report (const bPose *pose)
bool BKE_pose_channels_is_valid (const bPose *pose) ATTR_WARN_UNUSED_RESULT
void BKE_pose_update_constraint_flags (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_tag_update_constraint_flags (bPose *pose) ATTR_NONNULL(1)
const char * BKE_pose_ikparam_get_name (bPose *pose) ATTR_WARN_UNUSED_RESULT
void BKE_pose_ikparam_init (bPose *pose) ATTR_NONNULL(1)
void BKE_pose_itasc_init (bItasc *itasc)
bool BKE_pose_channel_in_IK_chain (Object *ob, bPoseChannel *pchan)
void BKE_pose_channel_transform_location (const bArmature *arm, const bPoseChannel *pose_bone, float r_pose_space_pivot[3])
void BKE_pose_channel_transform_orientation (const bArmature *arm, const bPoseChannel *pose_bone, float r_pose_orientation[3][3])
bActionGroupBKE_pose_add_group (bPose *pose, const char *name) ATTR_NONNULL(1)
void BKE_pose_remove_group (bPose *pose, bActionGroup *grp, int index) ATTR_NONNULL(1)
void BKE_pose_remove_group_index (bPose *pose, int index) ATTR_NONNULL(1)
void what_does_obaction (Object *ob, Object *workob, bPose *pose, bAction *act, int32_t action_slot_handle, char groupname[], const AnimationEvalContext *anim_eval_context) ATTR_NONNULL(1
void void BKE_pose_copy_pchan_result (bPoseChannel *pchanto, const bPoseChannel *pchanfrom) ATTR_NONNULL(1
void void bool BKE_pose_copy_result (bPose *to, bPose *from)
void BKE_pose_rest (bPose *pose, bool selected_bones_only)
void BKE_pose_tag_recalc (Main *bmain, bPose *pose) ATTR_NONNULL(1
void void BKE_pose_blend_write (BlendWriter *writer, bPose *pose) ATTR_NONNULL(1
void void void BKE_pose_blend_read_data (BlendDataReader *reader, ID *id_owner, bPose *pose) ATTR_NONNULL(1
void void void void BKE_pose_blend_read_after_liblink (BlendLibReader *reader, Object *ob, bPose *pose) ATTR_NONNULL(1
void void void void void BKE_action_flip_with_pose (bAction *act, blender::Span< Object * > objects) ATTR_NONNULL(1)
void blender::bke::BKE_action_find_fcurves_with_bones (bAction *action, blender::animrig::slot_handle_t slot_handle, FoundFCurveCallback callback)
void blender::bke::BKE_action_find_fcurves_with_bones (const bAction *action, blender::animrig::slot_handle_t slot_handle, FoundFCurveCallbackConst callback)

Detailed Description

Blender kernel action and pose functionality.

Definition in file BKE_action.hh.

Function Documentation

◆ action_group_colors_set()

void action_group_colors_set ( bActionGroup * grp,
const BoneColor * color )

◆ action_group_colors_set_from_posebone()

void action_group_colors_set_from_posebone ( bActionGroup * grp,
const bPoseChannel * pchan )

Set colors used on this action group, using the color of the pose bone.

If pchan->color is set to a non-default color, that is used. Otherwise the armature bone color is used.

Note that if pchan->bone is nullptr, this function silently does nothing.

Definition at line 848 of file blenkernel/intern/action.cc.

References action_group_colors_set(), blender::animrig::ANIM_bonecolor_posebone_get(), BLI_assert_msg, and bPoseChannel::bone.

Referenced by blender::animrig::action_fcurve_ensure_legacy(), and animchan_sync_group().

◆ action_group_colors_sync()

void action_group_colors_sync ( bActionGroup * grp,
const bActionGroup * ref_grp )

Sync colors used for action/bone group with theme settings.

Definition at line 818 of file blenkernel/intern/action.cc.

References ThemeWireColor::active, bActionGroup::cs, bActionGroup::customCol, rgba_uchar_args_set(), ThemeWireColor::select, ThemeWireColor::solid, bTheme::tarm, and U.

◆ action_groups_add_channel()

void action_groups_add_channel ( bAction * act,
bActionGroup * agrp,
FCurve * fcurve )

Add given channel into (active) group

  • assumes that channel is not linked to anything anymore
  • always adds at the end of the group
Note
This function ONLY works on legacy Actions, not on layered Actions.

Definition at line 903 of file blenkernel/intern/action.cc.

References BLI_assert, BLI_insertlinkafter(), BLI_insertlinkbefore(), BLI_listbase_is_empty(), bActionGroup::channels, bAction::curves, ELEM, ListBase::first, FCurve::grp, ListBase::last, FCurve::next, bActionGroup::prev, and FCurve::prev.

Referenced by blender::animrig::action_fcurve_ensure_legacy(), animchannels_group_channels(), and update_duplicate_action_constraint_settings().

◆ action_groups_add_new()

bActionGroup * action_groups_add_new ( bAction * act,
const char name[] )

Add a new action group with the given name to the action>

Note
This function ONLY works on legacy Actions, not on layered Actions.

Definition at line 876 of file blenkernel/intern/action.cc.

References AGRP_SELECTED, BLI_addtail(), BLI_assert, BLI_uniquename(), DATA_, ELEM, bActionGroup::flag, bAction::groups, MEM_callocN(), bActionGroup::name, name, offsetof, and STRNCPY_UTF8.

Referenced by blender::animrig::action_fcurve_ensure_legacy(), animchannels_group_channels(), and update_duplicate_action_constraint_settings().

◆ action_groups_clear_tempflags()

void action_groups_clear_tempflags ( bAction * act)

Clear all 'temp' flags on all groups.

Note
This function supports both legacy and layered Actions.

Definition at line 1078 of file blenkernel/intern/action.cc.

References AGRP_TEMP, and blender::animrig::legacy::channel_groups_all().

◆ action_groups_remove_channel()

void action_groups_remove_channel ( bAction * act,
FCurve * fcu )

◆ BKE_action_add()

bAction * BKE_action_add ( Main * bmain,
const char name[] )

◆ BKE_action_fcurves_clear()

void BKE_action_fcurves_clear ( bAction * act)

Remove all fcurves from the action.

Note
This function only supports legacy Actions.

Definition at line 2229 of file blenkernel/intern/action.cc.

References action_groups_remove_channel(), BKE_fcurve_free(), BLI_assert, bAction::curves, DEG_id_tag_update(), ListBase::first, bAction::id, and ID_RECALC_ANIMATION_NO_FLUSH.

◆ BKE_action_flip_with_pose()

◆ BKE_action_group_find_name()

bActionGroup * BKE_action_group_find_name ( bAction * act,
const char name[] )

Find a group with the given name.

Note
This function supports only legacy Actions.

Definition at line 1064 of file blenkernel/intern/action.cc.

References BLI_assert, BLI_findstring(), ELEM, ListBase::first, bAction::groups, name, and offsetof.

Referenced by blender::animrig::action_fcurve_ensure_legacy(), animviz_calc_motionpaths(), update_duplicate_action_constraint_settings(), and what_does_obaction().

◆ BKE_action_groups_reconstruct()

void BKE_action_groups_reconstruct ( bAction * act)

Reconstruct channel pointers. Assumes that the groups referred to by the FCurves are already in act->groups. Reorders the main channel list to match group order.

Note
This function ONLY works on legacy Actions, not on layered Actions.

Definition at line 973 of file blenkernel/intern/action.cc.

References BLI_addtail(), BLI_assert, BLI_findindex(), BLI_listbase_clear(), BLI_listbase_is_empty(), BLI_movelisttolist(), bAction::curves, bAction::groups, LISTBASE_FOREACH, and LISTBASE_FOREACH_MUTABLE.

Referenced by blo_do_versions_300(), ED_curve_updateAnimPaths(), and blender::bke::tests::TEST().

◆ BKE_pose_add_group()

bActionGroup * BKE_pose_add_group ( bPose * pose,
const char * name )

◆ BKE_pose_blend_read_after_liblink()

void void void void BKE_pose_blend_read_after_liblink ( BlendLibReader * reader,
Object * ob,
bPose * pose )

◆ BKE_pose_blend_read_data()

void void void BKE_pose_blend_read_data ( BlendDataReader * reader,
ID * id_owner,
bPose * pose )

Referenced by object_blend_read_data().

◆ BKE_pose_blend_write()

void void BKE_pose_blend_write ( BlendWriter * writer,
bPose * pose )

Referenced by object_blend_write().

◆ BKE_pose_channel_active()

bPoseChannel * BKE_pose_channel_active ( Object * ob,
bool check_bonecoll )

Find the active pose-channel for an object

Parameters
check_bonecollchecks if the bone is on a visible bone collection (this might be skipped (e.g. for "Show Active" from the Outliner).
Returns
bPoseChannel if found or NULL.
Note
Object, not bPose is used here, as we need info (collection/active bone) from Armature.

Definition at line 1178 of file blenkernel/intern/action.cc.

References bArmature::act_bone, ANIM_bone_in_visible_collection(), bPose::chanbase, Object::data, ELEM, LISTBASE_FOREACH, and Object::pose.

Referenced by BKE_pose_channel_active_if_bonecoll_visible(), blender::ed::transform::handle_armature_parent_orientation(), and blender::ed::outliner::outliner_show_active_get_element().

◆ BKE_pose_channel_active_if_bonecoll_visible()

◆ BKE_pose_channel_active_or_first_selected()

bPoseChannel * BKE_pose_channel_active_or_first_selected ( Object * ob)

Use this when detecting the "other selected bone", when we have multiple armatures in pose mode.

In this case the active-selected is an obvious choice when finding the target for a constraint for eg. however from the users perspective the active pose bone of the active object is the real active bone, so any other non-active selected bone is a candidate for being the other selected bone, see: #58447.

Definition at line 1202 of file blenkernel/intern/action.cc.

References BKE_pose_channel_active_if_bonecoll_visible(), bPoseChannel::bone, blender::animrig::bone_is_selected(), bPose::chanbase, Object::data, ELEM, LISTBASE_FOREACH, and Object::pose.

Referenced by blender::ed::object::get_new_constraint_target().

◆ BKE_pose_channel_copy_data()

◆ BKE_pose_channel_ensure()

◆ BKE_pose_channel_find_name()

bPoseChannel * BKE_pose_channel_find_name ( const bPose * pose,
const char * name )

Return a pointer to the pose channel of the given name from this pose.

Definition at line 1092 of file blenkernel/intern/action.cc.

References BLI_findstring(), BLI_ghash_lookup(), bPose::chanbase, bPose::chanhash, ELEM, name, and offsetof.

Referenced by action_flip_pchan(), add_verts_to_dgroups(), animchan_sync_group(), apply_armature_pose2bones_exec(), applyarmature_process_selected_recursive(), armdef_evaluate(), armdef_get_tarmat(), BKE_camera_object_dof_distance(), BKE_constraint_apply_for_pose(), BKE_object_defgroup_selected_get(), BKE_object_modifier_gpencil_hook_reset(), BKE_object_modifier_hook_reset(), BKE_pose_channel_ensure(), BKE_pose_channel_get_mirrored(), BKE_pose_copy_data_ex(), BKE_pose_copy_result(), bone_collection_assign_named_mode_specific(), bone_collection_select(), bone_skinnable_cb(), blender::deg::DepsgraphRelationBuilder::build_driver_data(), blender::deg::DepsgraphRelationBuilder::build_driver_variables(), buttons_context_path_pose_bone(), can_delete_fcurve(), can_delete_key(), blender::deg::DepsgraphBuilder::check_pchan_has_bbone_segments(), click_select_channel_group(), compute_vertex_mask__armature_mode(), constraint_target_to_mat4(), blender::bke::tests::ArmatureDeformTestBase::create_test_armature_object(), blender::deform_drawing(), deformVerts_do(), DEG_get_evaluated_rna_pointer(), dgroup_skinnable_cb(), blender::draw::overlay::Armatures::draw_armature_pose(), dvar_eval_locDiff(), dvar_eval_rotDiff(), dvar_eval_transChan(), ED_armature_bone_rename(), ED_wpaint_ensure_data(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::ensure_active_vertex_group_in_object(), blender::io::fbx::ArmatureImportContext::find_armatures(), blender::bke::get_armature_deform_params(), blender::ed::greasepencil::get_bone_mat(), blender::deg::BoneComponentNode::init(), initialize(), is_animating_bone(), blender::ed::object::jump_to_bone(), matrix_from_obj_pchan(), matrix_from_obj_pchan(), mirror_pose_bone(), MOD_get_texture_coords(), motionpaths_calc_bake_targets(), ob_parbone(), pchan_duplicate_map(), pose_backup_create(), blender::animrig::pose_bone_descendent_iterator(), pose_bone_do_paste(), pose_channel_find_bone(), pose_channel_in_IK_chain(), pose_clear_transform_generic_exec(), blender::animrig::pose_depth_iterator_recursive(), pose_foreachScreenBone(), blender::ed::transform::pose_grab_with_ik_children(), pose_select_constraint_target_exec(), pose_select_same_keyingset(), poselib_keytag_pose(), post_edit_bone_duplicate(), blender::ed::sculpt_paint::greasepencil::process_stroke_weights(), rebuild_pose_bone(), select_pchan_for_action_group(), select_similar_data_pchan(), blender::io::usd::set_rest_pose(), skip_fcurve_selected_data(), snap_sel_to_grid_exec(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::editor::animation::tests::TEST_F(), update_depsgraph(), update_duplicate_action_constraint_settings(), update_duplicate_subtarget(), update_duplicate_transform_constraint_settings(), and view3d_viewmatrix_set().

◆ BKE_pose_channel_free()

void BKE_pose_channel_free ( bPoseChannel * pchan)

◆ BKE_pose_channel_free_bbone_cache()

◆ BKE_pose_channel_free_ex()

◆ BKE_pose_channel_get_mirrored()

◆ BKE_pose_channel_in_IK_chain()

bool BKE_pose_channel_in_IK_chain ( Object * ob,
bPoseChannel * pchan )

Checks if a bone is part of an IK chain or not.

Definition at line 1396 of file blenkernel/intern/action.cc.

References pose_channel_in_IK_chain().

◆ BKE_pose_channel_runtime_free()

void BKE_pose_channel_runtime_free ( bPoseChannel_Runtime * runtime)

Deallocates runtime cache of a pose channel

Definition at line 1580 of file blenkernel/intern/action.cc.

References BKE_pose_channel_free_bbone_cache().

Referenced by BKE_pose_channel_free_ex(), and blender::deg::ObjectRuntimeBackup::restore_pose_channel_runtime_data().

◆ BKE_pose_channel_runtime_reset()

void BKE_pose_channel_runtime_reset ( bPoseChannel_Runtime * runtime)

Clears the runtime cache of a pose channel without free.

Definition at line 1568 of file blenkernel/intern/action.cc.

Referenced by blender::deg::ObjectRuntimeBackup::backup_pose_channel_runtime_data(), and BKE_pose_blend_read_data().

◆ BKE_pose_channel_runtime_reset_on_copy()

void BKE_pose_channel_runtime_reset_on_copy ( bPoseChannel_Runtime * runtime)

Reset all non-persistent fields.

Definition at line 1573 of file blenkernel/intern/action.cc.

References bPoseChannel_Runtime::session_uid.

Referenced by BKE_pose_copy_data_ex().

◆ BKE_pose_channel_session_uid_generate()

◆ BKE_pose_channel_transform_location()

void BKE_pose_channel_transform_location ( const bArmature * arm,
const bPoseChannel * pose_bone,
float r_pose_space_pivot[3] )

◆ BKE_pose_channel_transform_orientation()

void BKE_pose_channel_transform_orientation ( const bArmature * arm,
const bPoseChannel * pose_bone,
float r_pose_orientation[3][3] )

Get the transform pose orientation, accounting for POSE_TRANSFORM_AT_CUSTOM_TX.

Definition at line 1414 of file blenkernel/intern/action.cc.

References BLI_assert, copy_m3_m4(), bPoseChannel::custom_tx, bPoseChannel::pose_mat, and transform_follows_custom_tx().

Referenced by blender::ed::transform::add_pose_transdata(), and blender::ed::transform::getTransformOrientation_ex().

◆ BKE_pose_channels_free()

void BKE_pose_channels_free ( bPose * pose)

Definition at line 1615 of file blenkernel/intern/action.cc.

References BKE_pose_channels_free_ex().

◆ BKE_pose_channels_free_ex()

void BKE_pose_channels_free_ex ( bPose * pose,
bool do_id_user )

Removes and deallocates all channels from a pose. Does not free the pose itself.

Definition at line 1600 of file blenkernel/intern/action.cc.

References BKE_pose_channel_free_ex(), BKE_pose_channels_hash_free(), BLI_freelistN(), BLI_listbase_is_empty(), bPose::chan_array, bPose::chanbase, LISTBASE_FOREACH, and MEM_SAFE_FREE.

Referenced by BKE_pose_channels_free(), and BKE_pose_free_data_ex().

◆ BKE_pose_channels_hash_ensure()

◆ BKE_pose_channels_hash_free()

◆ BKE_pose_channels_is_valid()

bool BKE_pose_channels_is_valid ( const bPose * pose)

◆ BKE_pose_channels_remove()

void BKE_pose_channels_remove ( Object * ob,
bool(* filter_fn )(const char *bone_name, void *user_data),
void * user_data )

Selectively remove pose channels.

References ATTR_WARN_UNUSED_RESULT, flag, and name.

Referenced by armature_delete_selected_exec(), and armature_dissolve_selected_exec().

◆ BKE_pose_check_uids_unique_and_report()

◆ BKE_pose_copy_data()

void BKE_pose_copy_data ( bPose ** dst,
const bPose * src,
bool copy_constraints )

Definition at line 1334 of file blenkernel/intern/action.cc.

References BKE_pose_copy_data_ex().

Referenced by pose_clear_user_transforms_exec().

◆ BKE_pose_copy_data_ex()

void BKE_pose_copy_data_ex ( bPose ** dst,
const bPose * src,
int flag,
bool copy_constraints )

◆ BKE_pose_copy_pchan_result()

void void BKE_pose_copy_pchan_result ( bPoseChannel * pchanto,
const bPoseChannel * pchanfrom )

◆ BKE_pose_copy_result()

void void bool BKE_pose_copy_result ( bPose * to,
bPose * from )

Both poses should be in sync.

Definition at line 1934 of file blenkernel/intern/action.cc.

References BKE_pose_channel_find_name(), BKE_pose_copy_pchan_result(), bPose::chanbase, CLOG_ERROR, LISTBASE_FOREACH, and LOG.

◆ BKE_pose_free()

void BKE_pose_free ( bPose * pose)

Definition at line 1653 of file blenkernel/intern/action.cc.

References BKE_pose_free_ex().

◆ BKE_pose_free_data()

void BKE_pose_free_data ( bPose * pose)

Definition at line 1639 of file blenkernel/intern/action.cc.

References BKE_pose_free_data_ex().

Referenced by actcon_get_tarmat().

◆ BKE_pose_free_data_ex()

void void BKE_pose_free_data_ex ( bPose * pose,
bool do_id_user )

◆ BKE_pose_free_ex()

void BKE_pose_free_ex ( bPose * pose,
bool do_id_user )

Removes and deallocates all data from a pose, and also frees the pose.

Definition at line 1644 of file blenkernel/intern/action.cc.

References BKE_pose_free_data_ex(), and MEM_freeN().

Referenced by BKE_pose_free(), object_blend_read_after_liblink(), and object_free_data().

◆ BKE_pose_ikparam_get_name()

const char * BKE_pose_ikparam_get_name ( bPose * pose)

Return the name of structure pointed by pose->ikparam.

Definition at line 1238 of file blenkernel/intern/action.cc.

References bPose::iksolver, IKSOLVER_ITASC, and IKSOLVER_STANDARD.

Referenced by BKE_pose_blend_read_data(), and BKE_pose_blend_write().

◆ BKE_pose_ikparam_init()

void BKE_pose_ikparam_init ( bPose * pose)

Allocate and initialize pose->ikparam according to pose->iksolver.

Definition at line 1356 of file blenkernel/intern/action.cc.

References BKE_pose_itasc_init(), bPose::ikparam, bPose::iksolver, IKSOLVER_ITASC, IKSOLVER_STANDARD, and MEM_callocN().

◆ BKE_pose_is_bonecoll_visible()

bool BKE_pose_is_bonecoll_visible ( const bArmature * arm,
const bPoseChannel * pchan )

Checks if the bone is on a visible bone collection

Returns
true if on a visible layer, false otherwise.

Definition at line 1173 of file blenkernel/intern/action.cc.

References ANIM_bone_in_visible_collection(), and bPoseChannel::bone.

Referenced by blender::ed::transform::pose_grab_with_ik(), and stats_object_pose().

◆ BKE_pose_itasc_init()

◆ BKE_pose_remove_group()

void BKE_pose_remove_group ( bPose * pose,
bActionGroup * grp,
int index )

Remove the given bone-group (expects 'virtual' index (+1 one, used by active_group etc.)) index might be invalid ( < 1), in which case it will be find from grp.

Definition at line 1822 of file blenkernel/intern/action.cc.

References bPose::active_group, bPose::agroups, BLI_assert, BLI_findindex(), BLI_freelinkN(), BLI_listbase_is_empty(), bPose::chanbase, and LISTBASE_FOREACH.

Referenced by BKE_pose_remove_group_index().

◆ BKE_pose_remove_group_index()

void BKE_pose_remove_group_index ( bPose * pose,
int index )

Remove the indexed bone-group (expects 'virtual' index (+1 one, used by active_group etc.)).

Definition at line 1859 of file blenkernel/intern/action.cc.

References bPose::agroups, BKE_pose_remove_group(), and BLI_findlink().

◆ BKE_pose_rest()

void BKE_pose_rest ( bPose * pose,
bool selected_bones_only )

Zero the pose transforms for the entire pose or only for selected bones.

Definition at line 1872 of file blenkernel/intern/action.cc.

References bPose::chanbase, copy_v3_fl(), bPose::cyclic_offset, LISTBASE_FOREACH, POSE_BBONE_SHAPE, POSE_LOC, POSE_ROT, POSE_SCALE, POSE_SELECTED, bPose::stride_offset, unit_axis_angle(), unit_qt(), and zero_v3().

Referenced by pose_clear_user_transforms_exec().

◆ BKE_pose_tag_recalc()

◆ BKE_pose_tag_update_constraint_flags()

void BKE_pose_tag_update_constraint_flags ( bPose * pose)

Tag constraint flags for update.

Definition at line 1797 of file blenkernel/intern/action.cc.

References bPose::flag, and POSE_CONSTRAINTS_NEED_UPDATE_FLAGS.

Referenced by blender::ed::object::constraint_tag_update().

◆ BKE_pose_update_constraint_flags()

◆ get_active_actiongroup()

bActionGroup * get_active_actiongroup ( bAction * act)

Get the active action-group for an Action.

Note
This function supports both legacy and layered Actions.

Definition at line 792 of file blenkernel/intern/action.cc.

References AGRP_ACTIVE, and blender::animrig::legacy::channel_groups_all().

◆ set_active_action_group()

void set_active_action_group ( bAction * act,
bActionGroup * agrp,
short select )

Make the given Action-Group the active one.

Note
This function supports both legacy and layered Actions.

Definition at line 804 of file blenkernel/intern/action.cc.

References AGRP_ACTIVE, blender::animrig::legacy::channel_groups_all(), and select.

◆ what_does_obaction()

void what_does_obaction ( Object * ob,
Object * workob,
bPose * pose,
bAction * act,
int32_t action_slot_handle,
char groupname[],
const AnimationEvalContext * anim_eval_context )

For the calculation of the effects of an Action at the given frame on an object This is currently only used for the Action Constraint

Referenced by actcon_get_tarmat().