Blender
V3.3
|
#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.h"
#include "BLI_string.h"
#include "BKE_action.h"
#include "BKE_animsys.h"
#include "BKE_armature.h"
#include "BKE_constraint.h"
#include "BKE_context.h"
#include "BKE_main.h"
#include "BKE_report.h"
#include "BIK_api.h"
#include "ED_armature.h"
#include "ED_keyframing.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "transform.h"
#include "transform_snap.h"
#include "transform_convert.h"
Go to the source code of this file.
Classes | |
struct | BoneInitData |
struct | PoseInitData_Mirror |
Typedefs | |
typedef struct BoneInitData | BoneInitData |
Variables | |
TransConvertTypeInfo | TransConvertType_EditArmature |
TransConvertTypeInfo | TransConvertType_Pose |
Pose Mirror | |
typedef struct PoseInitData_Mirror | PoseInitData_Mirror |
static void | pose_mirror_info_init (PoseInitData_Mirror *pid, bPoseChannel *pchan, bPoseChannel *pchan_orig, bool is_mirror_relative) |
typedef struct BoneInitData BoneInitData |
typedef struct PoseInitData_Mirror PoseInitData_Mirror |
|
static |
Definition at line 537 of file transform_convert_armature.c.
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(), copy_m3_m3(), copy_m3_m4(), copy_qt_qt(), copy_v3_v3(), CTX_data_main(), data, 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, TransData::ival, TransDataExtension::l_smtx, bPoseChannel::loc, BoneParentTransform::loc_mat, TransData::mtx, mul_m3_m3m3(), mul_m3_series, normalize_m3(), NULL, TransData::ob, Object::obmat, bPoseChannel::parent, bPoseChannel::pose_head, bPoseChannel::pose_mat, bPoseChannel::pose_tail, TransData::protectflag, bPoseChannel::protectflag, PSEUDOINVERSE_EPSILON, pseudoinverse_m3_m3(), TransDataExtension::quat, bPoseChannel::quat, TransDataExtension::r_mtx, TransDataExtension::r_smtx, TransDataExtension::rot, ROT_MODE_AXISANGLE, TransDataExtension::rotAngle, bPoseChannel::rotAngle, TransDataExtension::rotAxis, bPoseChannel::rotAxis, bPoseChannel::rotmode, TransDataExtension::rotOrder, BoneParentTransform::rotscale_mat, TransDataExtension::size, bPoseChannel::size, TransData::smtx, t, 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, TransData::val, and Bone::xwidth.
Referenced by createTransPose().
|
static |
Definition at line 224 of file transform_convert_armature.c.
References BKE_constraint_add_for_pose(), bPoseChannel::constflag, CONSTRAINT_IK_AUTO, CONSTRAINT_IK_POS, CONSTRAINT_IK_TEMP, CONSTRAINT_IK_TIP, CONSTRAINT_TYPE_KINEMATIC, bConstraint::data, bKinematicConstraint::flag, NULL, PCHAN_HAS_IK, and PCHAN_HAS_TARGET.
Referenced by add_pose_transdata(), pose_grab_with_ik_add(), and pose_transform_mirror_update().
|
static |
Definition at line 1557 of file transform_convert_armature.c.
References BKE_armature_mat_pose_to_bone(), BKE_pchan_mat3_to_rot(), BKE_pchan_rot_to_mat3(), bPoseChannel::bone, BONE_TRANSFORM, bPose::chanbase, CONSTRAINT_IK_AUTO, CONSTRAINT_IK_STRETCH, CONSTRAINT_IK_TIP, copy_m3_m4(), data, ListBase::first, Bone::flag, has_targetless_ik(), invert_m3_m3(), mat3_to_size(), mul_m3_m3m3(), bPoseChannel::next, normalize_m3(), bPoseChannel::parent, Object::pose, bPoseChannel::pose_mat, and bPoseChannel::size.
Referenced by special_aftertrans_update__pose().
|
static |
Auto-keyframing feature - for poses/pose-channels
tmode | A transform mode. |
targetless_ik: has targetless ik been done on any channels?
Definition at line 76 of file transform_convert_armature.c.
References AnimData::action, Object::adt, ANIM_apply_keyingset(), ANIM_builtin_keyingset_get_named(), ANIM_get_keyframing_flags(), ANIM_KS_LOC_ROT_SCALE_ID, ANIM_KS_LOCATION_ID, ANIM_KS_ROTATION_ID, ANIM_KS_SCALING_ID, ANIM_relative_keyingset_add_source(), ANIM_scene_get_active_keyingset(), autokeyframe_cfra_can_key(), BKE_animsys_eval_context_construct(), BKE_animsys_free_nla_keyframing_context_cache(), BLI_freelistN(), BLI_str_quoted_substr(), BONE_TRANSFORM, BONE_TRANSFORM_MIRROR, C, RenderData::cfra, CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_wm_reports(), bAction::curves, depsgraph, ELEM, AnimationEvalContext::eval_time, ListBase::first, EditBone::flag, Object::id, if(), insert_keyframe(), INSERTKEY_MATRIX, IS_AUTOKEY_FLAG, ToolSettings::keyframe_type, MODIFYKEY_MODE_INSERT, NULL, Object::pose, POSE_MIRROR_EDIT, Scene::r, SCE_XFORM_AXIS_ALIGN, scene, STREQ, TFM_RESIZE, TFM_ROTATION, TFM_TRACKBALL, TFM_TRANSLATION, Scene::toolsettings, ToolSettings::transform_flag, ToolSettings::transform_pivot_point, V3D_AROUND_ACTIVE, and V3D_AROUND_CURSOR.
Referenced by recalcData_pose(), and special_aftertrans_update__pose().
Definition at line 1501 of file transform_convert_armature.c.
References BONE_CONNECTED, BONE_HINGE, BONE_HINGE_CHILD_TRANSFORM, BONE_TRANSFORM, BONE_TRANSFORM_CHILD, Bone::childbase, ELEM, ListBase::first, Bone::flag, Bone::next, TFM_ROTATION, TFM_TRACKBALL, and V3D_AROUND_LOCAL_ORIGINS.
Referenced by transform_convert_pose_transflags_update().
Definition at line 882 of file transform_convert_armature.c.
References ARM_MIRROR_EDIT, TransData::axismtx, BLI_assert, BoneInitData::bone, BONE_EDITMODE_LOCKED, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, copy_m3_m3(), copy_m3_m4(), copy_v3_v3(), EditBone::dist, BoneInitData::dist, EBONE_VISIBLE, ED_armature_ebone_get_mirrored(), ED_armature_ebone_to_mat3(), bArmature::edbo, ELEM, TransData::ext, ListBase::first, EditBone::flag, bArmature::flag, FOREACH_TRANS_DATA_CONTAINER, EditBone::head, invert_m3_m3(), TransData::ival, EditBone::length, MEM_allocN_len, MEM_callocN, MEM_mallocN, TransData::mtx, mul_m3_m3m3(), EditBone::next, normalize_m3(), NULL, TransData::ob, OB_LOCK_LOC, OB_LOCK_ROT, OB_LOCK_SCALE, EditBone::oldlength, TransData::protectflag, PSEUDOINVERSE_EPSILON, pseudoinverse_m3_m3(), EditBone::rad_head, BoneInitData::rad_head, EditBone::rad_tail, BoneInitData::rad_tail, EditBone::roll, BoneInitData::roll, TransData::smtx, t, EditBone::tail, TD_SELECTED, TFM_BONE_ENVELOPE, TFM_BONE_ENVELOPE_DIST, TFM_BONE_ROLL, TFM_BONESIZE, TFM_ROTATION, transform_around_single_fallback(), V3D_AROUND_LOCAL_ORIGINS, TransData::val, EditBone::xwidth, BoneInitData::xwidth, EditBone::zwidth, and BoneInitData::zwidth.
Definition at line 704 of file transform_convert_armature.c.
References add_pose_transdata(), ARM_RESTPOS, BKE_armature_from_object(), BKE_pose_channel_get_mirrored(), BKE_report(), bPoseChannel::bone, BONE_CONNECTED, BONE_HINGE_CHILD_TRANSFORM, BONE_TRANSFORM, BONE_TRANSFORM_MIRROR, bPose::chanbase, CTX_data_main(), ELEM, TransData::ext, bPose::flag, Bone::flag, bArmature::flag, FOREACH_TRANS_DATA_CONTAINER, has_targetless_ik(), LISTBASE_FOREACH, MEM_callocN, MEM_mallocN, NULL, OB_LOCK_LOC, OB_LOCK_ROT, PoseInitData_Mirror::pchan, Object::pose, POSE_AUTO_IK, pose_grab_with_ik(), POSE_MIRROR_EDIT, pose_mirror_info_init(), POSE_MIRROR_RELATIVE, RPT_DEBUG, RPT_ERROR, t, T_AUTOIK, TFM_BONESIZE, TFM_DUMMY, TFM_RESIZE, TFM_ROTATION, TFM_TRANSLATION, transform_autoik_update(), transform_convert_pose_transflags_update(), and TransData::val.
|
static |
Definition at line 259 of file transform_convert_armature.c.
References CONSTRAINT_OFF, CONSTRAINT_TYPE_KINEMATIC, bPoseChannel::constraints, data, bConstraint::data, bConstraint::enforce, ListBase::first, bConstraint::flag, bConstraint::next, NULL, OB_ARMATURE, and bConstraint::type.
Referenced by add_pose_transdata(), apply_targetless_ik(), createTransPose(), pose_transform_mirror_update(), and special_aftertrans_update__pose().
Definition at line 57 of file transform_convert_armature.c.
References autokeyframe_cfra_can_key(), bPose::avs, Object::id, MOTIONPATH_BAKE_HAS_PATHS, bAnimVizSettings::path_bakeflag, Object::pose, and scene.
Referenced by recalcData_pose(), and special_aftertrans_update__pose().
Definition at line 399 of file transform_convert_armature.c.
References BKE_pose_is_layer_visible(), EditBone::bone, bPoseChannel::bone, BONE_CONNECTED, BONE_SELECTED, BONE_TRANSFORM_MIRROR, bPose::chanbase, Bone::childbase, Object::data, ListBase::first, Bone::flag, Object::mode, bPoseChannel::next, Bone::next, NULL, OB_MODE_POSE, EditBone::parent, bPoseChannel::parent, Object::pose, pose_grab_with_ik_add(), pose_grab_with_ik_children(), and update_deg_with_temporary_ik().
Referenced by createTransPose().
|
static |
Definition at line 280 of file transform_convert_armature.c.
References add_temporary_ik_constraint(), bPoseChannel::bone, BONE_CONNECTED, BONE_IK_NO_XDOF_TEMP, BONE_IK_NO_YDOF_TEMP, BONE_IK_NO_ZDOF_TEMP, CONSTRAINT_DISABLE, CONSTRAINT_IK_AUTO, CONSTRAINT_OFF, CONSTRAINT_TYPE_KINEMATIC, bPoseChannel::constraints, copy_v3_v3(), data, bConstraint::data, bConstraint::enforce, ListBase::first, Bone::flag, bConstraint::flag, if(), bPoseChannel::ikflag, bConstraint::next, NULL, OB_ARMATURE, OB_LOCK_ROTX, OB_LOCK_ROTY, OB_LOCK_ROTZ, bPoseChannel::parent, bPoseChannel::pose_tail, bPoseChannel::protectflag, and bConstraint::type.
Referenced by pose_grab_with_ik(), and pose_grab_with_ik_children().
Definition at line 376 of file transform_convert_armature.c.
References BKE_pose_channel_find_name(), EditBone::bone, BONE_CONNECTED, Bone::childbase, ListBase::first, Bone::flag, Bone::name, Bone::next, and pose_grab_with_ik_add().
Referenced by pose_grab_with_ik().
Definition at line 1644 of file transform_convert_armature.c.
References BIK_clear_data(), BLI_remlink(), BONE_IK_NO_XDOF_TEMP, BONE_IK_NO_YDOF_TEMP, BONE_IK_NO_ZDOF_TEMP, bPose::chanbase, bPoseChannel::constflag, CONSTRAINT_IK_TEMP, CONSTRAINT_TYPE_KINEMATIC, bPoseChannel::constraints, data, bConstraint::data, DEG_relations_tag_update(), ListBase::first, bPoseChannel::ikflag, MEM_freeN, bPoseChannel::next, bConstraint::next, next, NULL, OB_ARMATURE, PCHAN_HAS_IK, PCHAN_HAS_TARGET, Object::pose, and bConstraint::type.
Referenced by special_aftertrans_update__pose().
|
static |
Definition at line 485 of file transform_convert_armature.c.
References PoseInitData_Mirror::axis_angle, BKE_pchan_to_mat4(), copy_qt_qt(), copy_v3_v3(), PoseInitData_Mirror::curve_in_x, bPoseChannel::curve_in_x, PoseInitData_Mirror::curve_out_x, bPoseChannel::curve_out_x, PoseInitData_Mirror::eul, bPoseChannel::eul, invert_m4(), PoseInitData_Mirror::loc, bPoseChannel::loc, mul_m4_m4m4(), PoseInitData_Mirror::offset_mtx, PoseInitData_Mirror::orig, PoseInitData_Mirror::pchan, PoseInitData_Mirror::quat, bPoseChannel::quat, PoseInitData_Mirror::roll1, bPoseChannel::roll1, PoseInitData_Mirror::roll2, bPoseChannel::roll2, ROT_MODE_AXISANGLE, bPoseChannel::rotAngle, bPoseChannel::rotAxis, bPoseChannel::rotmode, PoseInitData_Mirror::size, bPoseChannel::size, and unit_m4().
Referenced by createTransPose().
|
static |
Definition at line 1380 of file transform_convert_armature.c.
References PoseInitData_Mirror::axis_angle, copy_qt_qt(), copy_v3_v3(), PoseInitData_Mirror::curve_in_x, bPoseChannel::curve_in_x, PoseInitData_Mirror::curve_out_x, bPoseChannel::curve_out_x, PoseInitData_Mirror::eul, bPoseChannel::eul, PoseInitData_Mirror::loc, bPoseChannel::loc, PoseInitData_Mirror::orig, PoseInitData_Mirror::pchan, PoseInitData_Mirror::quat, bPoseChannel::quat, PoseInitData_Mirror::roll1, bPoseChannel::roll1, PoseInitData_Mirror::roll2, bPoseChannel::roll2, ROT_MODE_AXISANGLE, bPoseChannel::rotAngle, bPoseChannel::rotAxis, bPoseChannel::rotmode, PoseInitData_Mirror::size, and bPoseChannel::size.
Referenced by restoreMirrorPoseBones().
|
static |
if pose bone (partial) selected, copy data. context; posemode armature, with mirror editing enabled.
Definition at line 1302 of file transform_convert_armature.c.
References add_temporary_ik_constraint(), BKE_pchan_apply_mat4(), BKE_pchan_to_mat4(), BKE_pose_channel_get_mirrored(), BLI_assert, bPoseChannel::bone, BONE_TRANSFORM, BONE_TRANSFORM_MIRROR, bPose::chanbase, CONSTRAINT_IK_AUTO, CONSTRAINT_IK_TEMP, CTX_data_main(), bPoseChannel::curve_in_x, bPoseChannel::curve_out_x, TransDataContainer::custom, data, TransCustomData::data, TransDataContainer::data, TransDataContainer::data_len, bPose::flag, Bone::flag, has_targetless_ik(), LISTBASE_FOREACH, mul_m4_m4m4(), mul_v3_m4v3(), bPoseChannel::name, NULL, PoseInitData_Mirror::offset_mtx, Object::pose, POSE_MIRROR_RELATIVE, bPoseChannel::roll1, bPoseChannel::roll2, t, TFM_BONESIZE, TFM_TRANSLATION, TransCustomDataContainer::type, unit_m4(), update_deg_with_temporary_ik(), Bone::xwidth, and Bone::zwidth.
Referenced by recalcData_pose().
Definition at line 1192 of file transform_convert_armature.c.
References angle_compat_rad(), applySnappingIndividual(), ARM_MIRROR_EDIT, TransData::axismtx, BONE_CONNECTED, BONE_TIPSEL, copy_v3_v3(), EditBone::dist, ED_armature_ebone_roll_to_vector(), ED_armature_edit_transform_mirror_update(), bArmature::edbo, ELEM, ListBase::first, EditBone::flag, bArmature::flag, FOREACH_TRANS_DATA_CONTAINER, EditBone::head, if(), TransData::ival, len_v3v3(), EditBone::length, mul_qt_v3(), EditBone::next, normalize_v3(), NULL, EditBone::oldlength, EditBone::parent, EditBone::rad_head, EditBone::rad_tail, restoreBones(), EditBone::roll, rotation_between_vecs_to_quat(), sub_v3_v3v3(), t, EditBone::tail, TFM_BONE_ENVELOPE, TFM_BONE_ENVELOPE_DIST, TFM_BONE_ROLL, TFM_BONESIZE, and TRANS_CANCEL.
Definition at line 1415 of file transform_convert_armature.c.
References animrecord_check_state(), ARM_MIRROR_EDIT, autokeyframe_pose(), BLI_gset_free(), BLI_gset_insert(), BLI_gset_ptr_new(), BLI_gsetIterator_getKey(), Object::data, DEG_id_tag_update(), ED_armature_edit_transform_mirror_update(), ED_pose_recalculate_paths(), bPose::flag, bArmature::flag, FOREACH_TRANS_DATA_CONTAINER, GSET_ITER, Object::id, ID_RECALC_GEOMETRY, IS_AUTOKEY_ON, Object::mode, motionpath_need_update_pose(), NULL, OB_MODE_EDIT, OB_MODE_POSE, Object::pose, POSE_MIRROR_EDIT, POSE_PATH_CALC_RANGE_CURRENT_FRAME, pose_transform_mirror_update(), restoreBones(), restoreMirrorPoseBones(), t, T_AUTOIK, TFM_BONESIZE, and TRANS_CANCEL.
|
static |
Definition at line 1143 of file transform_convert_armature.c.
References ARM_MIRROR_EDIT, BLI_assert, BoneInitData::bone, BONE_CONNECTED, copy_v3_v3(), TransDataContainer::custom, TransCustomData::data, Object::data, EditBone::dist, BoneInitData::dist, bArmature::edbo, ListBase::first, EditBone::flag, bArmature::flag, EditBone::head, BoneInitData::head, EditBone::next, NULL, TransDataContainer::obedit, EditBone::parent, TransDataContainer::poseobj, EditBone::rad_head, BoneInitData::rad_head, EditBone::rad_tail, BoneInitData::rad_tail, EditBone::roll, BoneInitData::roll, EditBone::tail, BoneInitData::tail, TransCustomDataContainer::type, EditBone::xwidth, BoneInitData::xwidth, EditBone::zwidth, and BoneInitData::zwidth.
Referenced by recalcData_edit_armature(), and recalcData_pose().
|
static |
Definition at line 1402 of file transform_convert_armature.c.
References TransDataContainer::custom, TransCustomData::data, bPose::flag, Object::pose, POSE_MIRROR_EDIT, pose_mirror_info_restore(), TransDataContainer::poseobj, and TransCustomDataContainer::type.
Referenced by recalcData_pose().
Definition at line 1687 of file transform_convert_armature.c.
References apply_targetless_ik(), autokeyframe_pose(), BKE_pose_where_is(), BLI_gset_free(), BLI_gset_insert(), BLI_gset_ptr_new(), BLI_gsetIterator_getKey(), C, bPose::chanbase, CONSTRAINT_IK_AUTO, CTX_AUTOCONFIRM, CTX_data_main(), data, DEG_id_tag_update(), ED_pose_recalculate_paths(), ListBase::first, FOREACH_TRANS_DATA_CONTAINER, GSET_ITER, has_targetless_ik(), Object::id, ID_RECALC_GEOMETRY, motionpath_need_update_pose(), bPoseChannel::next, NULL, Object::pose, pose_grab_with_ik_clear(), POSE_PATH_CALC_RANGE_CHANGED, POSE_PATH_CALC_RANGE_CURRENT_FRAME, t, T_AUTOIK, TFM_BONESIZE, TFM_DUMMY, TFM_TRANSLATION, TRANS_CANCEL, and transform_convert_pose_transflags_update().
Sets transform flags in the bones. Returns total number of bones with BONE_TRANSFORM.
Definition at line 1521 of file transform_convert_armature.c.
References bPoseChannel::bone, bone_children_clear_transflag(), BONE_HINGE_CHILD_TRANSFORM, BONE_SELECTED, BONE_TRANSFORM, BONE_TRANSFORM_CHILD, bPose::chanbase, Bone::childbase, Object::data, ELEM, ListBase::first, Bone::flag, bPoseChannel::next, PBONE_VISIBLE, Object::pose, TFM_BONE_ENVELOPE_DIST, and TFM_BONESIZE.
Referenced by createTransPose(), ED_transform_calc_gizmo_stats(), and special_aftertrans_update__pose().
Definition at line 248 of file transform_convert_armature.c.
References BIK_clear_data(), DEG_relations_tag_update(), and Object::pose.
Referenced by add_pose_transdata(), pose_grab_with_ik(), and pose_transform_mirror_update().
TransConvertTypeInfo TransConvertType_EditArmature |
Definition at line 1772 of file transform_convert_armature.c.
Referenced by convert_type_get(), and init_TransDataContainers().
TransConvertTypeInfo TransConvertType_Pose |
Definition at line 1779 of file transform_convert_armature.c.
Referenced by convert_type_get(), createTransData(), ElementResize(), and init_TransDataContainers().