Blender V4.3
transform_convert_armature.cc File Reference
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BKE_action.hh"
#include "BKE_armature.hh"
#include "BKE_constraint.h"
#include "BKE_context.hh"
#include "BKE_report.hh"
#include "BIK_api.h"
#include "ED_anim_api.hh"
#include "ED_armature.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_query.hh"
#include "ANIM_action.hh"
#include "ANIM_bone_collections.hh"
#include "ANIM_keyframing.hh"
#include "ANIM_rna.hh"
#include "transform.hh"
#include "transform_orientations.hh"
#include "transform_snap.hh"
#include "transform_convert.hh"

Go to the source code of this file.

Classes

struct  BoneInitData
 
struct  PoseInitData_Mirror
 

Functions

static bool motionpath_need_update_pose (Scene *scene, Object *ob)
 
static bConstraintadd_temporary_ik_constraint (bPoseChannel *pchan, bKinematicConstraint *targetless_con)
 
static void update_deg_with_temporary_ik (Main *bmain, Object *ob)
 
Pose Auto-IK
static bKinematicConstrainthas_targetless_ik (bPoseChannel *pchan)
 
static short pose_grab_with_ik_add (bPoseChannel *pchan)
 
static short pose_grab_with_ik_children (bPose *pose, Bone *bone)
 
static short pose_grab_with_ik (Main *bmain, Object *ob)
 
Pose Mirror
static void pose_mirror_info_init (PoseInitData_Mirror *pid, bPoseChannel *pchan, bPoseChannel *pchan_orig, bool is_mirror_relative)
 
Convert Armature
static void add_pose_transdata (TransInfo *t, bPoseChannel *pchan, Object *ob, TransData *td)
 
static void createTransPose (bContext *, TransInfo *t)
 
static void createTransArmatureVerts (bContext *, TransInfo *t)
 
Recalc Data Edit Armature
static void restoreBones (TransDataContainer *tc)
 
static void recalcData_edit_armature (TransInfo *t)
 
Recalc Data Pose
static void pose_transform_mirror_update (TransInfo *t, TransDataContainer *tc, Object *ob)
 
static void pose_mirror_info_restore (const PoseInitData_Mirror *pid)
 
static void restoreMirrorPoseBones (TransDataContainer *tc)
 
static blender::Vector< RNAPathget_affected_rna_paths_from_transform_mode (const eTfmMode tmode, ToolSettings *toolsettings, const blender::StringRef rotation_path, const bool targetless_ik, const bool is_connected, const bool transforming_more_than_one_bone)
 
static void autokeyframe_pose (bContext *C, Scene *scene, Object *ob, short targetless_ik, const eTfmMode tmode, const bool transforming_more_than_one_bone)
 
static void recalcData_pose (TransInfo *t)
 
Special After Transform Pose
static void bone_children_clear_transflag (int mode, short around, ListBase *lb)
 
void transform_convert_pose_transflags_update (Object *ob, const int mode, const short around)
 
static short apply_targetless_ik (Object *ob)
 
static void pose_grab_with_ik_clear (Main *bmain, Object *ob)
 
static void special_aftertrans_update__pose (bContext *C, TransInfo *t)
 

Variables

TransConvertTypeInfo TransConvertType_EditArmature
 
TransConvertTypeInfo TransConvertType_Pose
 

Function Documentation

◆ add_pose_transdata()

static void add_pose_transdata ( TransInfo * t,
bPoseChannel * pchan,
Object * ob,
TransData * td )
static

Definition at line 387 of file transform_convert_armature.cc.

References add_temporary_ik_constraint(), TransData::axismtx, TransDataExtension::axismtx_gimbal, BKE_bone_parent_transform_calc_from_pchan(), bPoseChannel::bone, BONE_HINGE_CHILD_TRANSFORM, Bone::bone_mat, BONE_NO_LOCAL_LOCATION, BONE_TRANSFORM_CHILD, TransData::con, bPoseChannel::constinv, CONSTRAINT_IK_AUTO, CONSTRAINT_IK_TEMP, CONSTRAINT_IK_TIP, bPoseChannel::constraints, constraints_list_needinv(), TransInfo::context, copy_m3_m3(), copy_m3_m4(), copy_qt_qt(), copy_v3_v3(), CTX_data_main(), Bone::dist, ELEM, bPoseChannel::eul, TransData::ext, ListBase::first, Bone::flag, gimbal_axis_pose(), has_targetless_ik(), invert_m3_m3(), TransDataExtension::iquat, TransDataExtension::irot, TransDataExtension::irotAngle, TransDataExtension::irotAxis, TransDataExtension::isize, TransDataExtension::l_smtx, bPoseChannel::loc, BoneParentTransform::loc_mat, TransInfo::mode, TransData::mtx, mul_m3_m3m3(), mul_m3_series, normalize_m3(), TransData::ob, TransInfo::orient_type_mask, bPoseChannel::parent, bPoseChannel::pose_head, bPoseChannel::pose_mat, bPoseChannel::pose_tail, bPoseChannel::protectflag, TransData::protectflag, PSEUDOINVERSE_EPSILON, pseudoinverse_m3_m3(), bPoseChannel::quat, TransDataExtension::quat, TransDataExtension::r_mtx, TransDataExtension::r_smtx, TransDataExtension::rot, ROT_MODE_AXISANGLE, bPoseChannel::rotAngle, TransDataExtension::rotAngle, bPoseChannel::rotAxis, TransDataExtension::rotAxis, bPoseChannel::rotmode, TransDataExtension::rotOrder, BoneParentTransform::rotscale_mat, bPoseChannel::size, TransDataExtension::size, TransData::smtx, TD_NO_LOC, TD_NOCENTER, TD_PBONE_LOCAL_MTX_C, TD_PBONE_LOCAL_MTX_P, TD_SELECTED, TFM_BONE_ENVELOPE_DIST, TFM_BONESIZE, TFM_RESIZE, TFM_TRANSLATION, update_deg_with_temporary_ik(), V3D_ORIENT_GIMBAL, and Bone::xwidth.

Referenced by createTransPose().

◆ add_temporary_ik_constraint()

◆ apply_targetless_ik()

◆ autokeyframe_pose()

◆ bone_children_clear_transflag()

◆ createTransArmatureVerts()

◆ createTransPose()

◆ get_affected_rna_paths_from_transform_mode()

static blender::Vector< RNAPath > get_affected_rna_paths_from_transform_mode ( const eTfmMode tmode,
ToolSettings * toolsettings,
const blender::StringRef rotation_path,
const bool targetless_ik,
const bool is_connected,
const bool transforming_more_than_one_bone )
static

◆ has_targetless_ik()

◆ motionpath_need_update_pose()

◆ pose_grab_with_ik()

◆ pose_grab_with_ik_add()

◆ pose_grab_with_ik_children()

static short pose_grab_with_ik_children ( bPose * pose,
Bone * bone )
static

Bone is a candidate to get IK, but we don't do it if it has children connected.

Definition at line 226 of file transform_convert_armature.cc.

References BKE_pose_channel_find_name(), BONE_CONNECTED, Bone::childbase, LISTBASE_FOREACH, Bone::name, pose_grab_with_ik_add(), and pose_grab_with_ik_children().

Referenced by pose_grab_with_ik(), and pose_grab_with_ik_children().

◆ pose_grab_with_ik_clear()

◆ pose_mirror_info_init()

◆ pose_mirror_info_restore()

◆ pose_transform_mirror_update()

◆ recalcData_edit_armature()

◆ recalcData_pose()

◆ restoreBones()

◆ restoreMirrorPoseBones()

◆ special_aftertrans_update__pose()

◆ transform_convert_pose_transflags_update()

void transform_convert_pose_transflags_update ( Object * ob,
int mode,
short around )

◆ update_deg_with_temporary_ik()

static void update_deg_with_temporary_ik ( Main * bmain,
Object * ob )
static

Variable Documentation

◆ TransConvertType_EditArmature

TransConvertTypeInfo TransConvertType_EditArmature
Initial value:
= {
nullptr,
}
@ T_POINTS
Definition transform.hh:93
@ T_EDIT
Definition transform.hh:91
static void recalcData_edit_armature(TransInfo *t)
static void createTransArmatureVerts(bContext *, TransInfo *t)

Definition at line 1745 of file transform_convert_armature.cc.

Referenced by convert_type_get(), and init_TransDataContainers().

◆ TransConvertType_Pose

TransConvertTypeInfo TransConvertType_Pose
Initial value:
= {
0,
}
static void recalcData_pose(TransInfo *t)
static void createTransPose(bContext *, TransInfo *t)
static void special_aftertrans_update__pose(bContext *C, TransInfo *t)

Definition at line 1752 of file transform_convert_armature.cc.

Referenced by convert_type_get(), create_trans_data(), ElementResize(), and init_TransDataContainers().