Blender
V3.3
|
#include "DNA_anim_types.h"
#include "DNA_constraint_types.h"
#include "DNA_mesh_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_kdtree.h"
#include "BLI_linklist_stack.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_context.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_modifier.h"
#include "BKE_nla.h"
#include "BKE_scene.h"
#include "ED_keyframes_edit.h"
#include "ED_keyframing.h"
#include "ED_particle.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
#include "UI_view2d.h"
#include "WM_types.h"
#include "DEG_depsgraph_build.h"
#include "transform.h"
#include "transform_snap.h"
#include "transform_convert.h"
Go to the source code of this file.
Classes | |
struct | tRetainedKeyframe |
Animation Editor | |
typedef struct tRetainedKeyframe | tRetainedKeyframe |
void | posttrans_fcurve_clean (FCurve *fcu, const int sel_flag, const bool use_handle) |
typedef struct tRetainedKeyframe tRetainedKeyframe |
For the realtime animation recording feature, handle overlapping data.
Definition at line 1298 of file transform_convert.c.
References AnimData::act_blendmode, AnimData::act_extendmode, AnimData::act_influence, AnimData::action, ADT_NLA_EDIT_ON, ANIMPLAY_FLAG_JUMPED, ANIMRECORD_FLAG_WITHNLA, ToolSettings::autokey_flag, BKE_animdata_from_id(), BKE_nlastack_add_strip(), BKE_nlastrip_validate_fcurves(), NlaStrip::blendmode, calc_action_range(), wmTimer::customdata, ELEM, NlaStrip::extendmode, ListBase::first, ScreenAnimData::flag, NlaStrip::flag, AnimData::flag, bAction::id, ID_IS_OVERRIDE_LIBRARY, id_us_min(), if(), NlaStrip::influence, IS_AUTOKEY_FLAG, AnimData::nla_tracks, NLASTRIP_EXTEND_NOTHING, NLASTRIP_FLAG_ACTIVE, NLASTRIP_FLAG_AUTO_BLENDS, NLASTRIP_FLAG_SELECT, NLASTRIP_FLAG_USR_INFLUENCE, NULL, scene, t, and Scene::toolsettings.
Referenced by recalcData_objects(), recalcData_pose(), and recalcData_sequencer_image().
Definition at line 405 of file transform_convert.c.
References BLI_LINKSTACK_DECLARE, BLI_LINKSTACK_FREE, BLI_LINKSTACK_INIT, BLI_LINKSTACK_POP, BLI_LINKSTACK_PUSH, TransData::dist, len_v3(), TransData::mtx, mul_m3_v3(), NULL, queue, sub_v3_v3v3(), TD_NOTCONNECTED, and TD_SELECTED.
Referenced by createTransCurveVerts(), createTransGPencil_curves(), createTransGPencil_strokes(), and createTransParticleVerts().
Definition at line 485 of file transform_convert.c.
References Freestyle::a, FOREACH_TRANS_DATA_CONTAINER, max_ff(), min_ff(), t, and TD_SKIP.
Referenced by applyResize(), and applyTranslation().
Little helper function for ObjectToTransData used to give certain constraints (ChildOf, FollowPath, and others that may be added) inverse corrections for transform, so that they aren't in CrazySpace. These particular constraints benefit from this, but others don't, hence this semi-hack ;-) - Aligorith
Definition at line 681 of file transform_convert.c.
References ACTCON_MIX_BEFORE, ACTCON_MIX_BEFORE_FULL, ACTCON_MIX_BEFORE_SPLIT, CHILDOF_LOCX, CHILDOF_LOCY, CHILDOF_LOCZ, CONSTRAINT_DISABLE, CONSTRAINT_OFF, CONSTRAINT_TYPE_ACTION, CONSTRAINT_TYPE_ARMATURE, CONSTRAINT_TYPE_CHILDOF, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_FOLLOWTRACK, CONSTRAINT_TYPE_OBJECTSOLVER, CONSTRAINT_TYPE_ROTLIKE, CONSTRAINT_TYPE_TRANSFORM, CONSTRAINT_TYPE_TRANSLIKE, data, bConstraint::data, ELEM, bConstraint::enforce, ListBase::first, bConstraint::flag, if(), bConstraint::next, ROTLIKE_MIX_BEFORE, ROTLIKE_MIX_OFFSET, t, TFM_ROTATION, TFM_TRANSLATION, TRANS_MIXROT_BEFORE, TRANS_ROTATION, TRANSLIKE_MIX_BEFORE, TRANSLIKE_MIX_BEFORE_FULL, TRANSLIKE_MIX_BEFORE_SPLIT, and bConstraint::type.
Referenced by add_pose_transdata(), and ObjectToTransData().
|
static |
Definition at line 1003 of file transform_convert.c.
References CTX_CURSOR, CTX_EDGE_DATA, CTX_GPENCIL_STROKES, CTX_MASK, CTX_MOVIECLIP, CTX_PAINT_CURVE, CTX_SEQUENCER_IMAGE, CTX_TEXTURE_SPACE, ELEM, Object::mode, NULL, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MBALL, OB_MESH, OB_MODE_ALL_PAINT, OB_MODE_ALL_WEIGHT_PAINT, OB_MODE_PAINT_GPENCIL, OB_MODE_PARTICLE_EDIT, OB_MODE_POSE, OB_MODE_SCULPT, OB_MODE_SCULPT_GPENCIL, OB_MODE_VERTEX_GPENCIL, OB_MODE_WEIGHT_GPENCIL, OB_SURF, OBACT, PE_get_current(), PE_start_edit(), Object::sculpt, SPACE_ACTION, SPACE_CLIP, SPACE_GRAPH, SPACE_IMAGE, SPACE_NLA, SPACE_NODE, SPACE_SEQ, SPACE_VIEW3D, t, TFM_BWEIGHT, TFM_SHEAR, TFM_SHRINKFATTEN, TFM_SKIN_RESIZE, TFM_VERT_CREASE, TransConvertType_Action, TransConvertType_Cursor3D, TransConvertType_CursorImage, TransConvertType_CursorSequencer, TransConvertType_Curve, TransConvertType_EditArmature, TransConvertType_GPencil, TransConvertType_Graph, TransConvertType_Lattice, TransConvertType_Mask, TransConvertType_MBall, TransConvertType_Mesh, TransConvertType_MeshEdge, TransConvertType_MeshSkin, TransConvertType_MeshUV, TransConvertType_MeshVertCData, TransConvertType_NLA, TransConvertType_Node, TransConvertType_Object, TransConvertType_ObjectTexSpace, TransConvertType_PaintCurve, TransConvertType_Particle, TransConvertType_Pose, TransConvertType_Sculpt, TransConvertType_Sequencer, TransConvertType_SequencerImage, TransConvertType_Tracking, and transform_object_deform_pose_armature_get().
Referenced by createTransData().
|
static |
Definition at line 817 of file transform_convert.c.
References BLI_assert, ELEM, MEM_reallocN, SWAP, and t.
Referenced by createTransData().
Definition at line 1130 of file transform_convert.c.
References BKE_scene_graph_evaluated_ensure(), BLI_assert, C, View3D::camera, convert_type_get(), countAndCleanTransDataContainer(), TransConvertTypeInfo::createTransData, CTX_CAMERA, CTX_data_main(), CTX_OBJECT, CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, CTX_POSE_BONE, Object::id, init_proportional_edit(), init_TransDataContainers(), LIB_TAG_DOIT, NULL, NUM_NO_FRACTION, View3D::ob_center, OBACT, RegionView3D::persp, RGN_TYPE_WINDOW, RV3D_CAMOB, SCE_XFORM_DATA_ORIGIN, SCE_XFORM_SKIP_CHILDREN, SPACE_VIEW3D, t, ID::tag, TransConvertType_Object, TransConvertType_Pose, TransConvertType_Sequencer, and TransConvertType_SequencerImage.
Referenced by calculateTransformCenter(), and initTransform().
This function tests if a point is on the "mouse" side of the cursor/frame-marking.
Definition at line 528 of file transform_convert.c.
Referenced by ActionFCurveToTransData(), count_fcurve_keys(), count_gplayer_frames(), count_masklayer_frames(), createTransNlaData(), GPLayerToTransData(), graph_key_shortest_dist(), and MaskLayerToTransData().
Definition at line 846 of file transform_convert.c.
References BLI_assert, CTX_NO_PET, ELEM, OB_CURVES_LEGACY, set_prop_dist(), sort_trans_data_dist(), sort_trans_data_selected_first(), t, T_PROP_CONNECTED, T_PROP_EDIT, T_PROP_EDIT_ALL, TransConvertType_Action, TransConvertType_Curve, TransConvertType_GPencil, TransConvertType_Graph, TransConvertType_Lattice, TransConvertType_Mask, TransConvertType_MBall, TransConvertType_Mesh, TransConvertType_MeshEdge, TransConvertType_MeshSkin, TransConvertType_MeshUV, TransConvertType_MeshVertCData, TransConvertType_Node, TransConvertType_Object, and TransConvertType_Particle.
Referenced by createTransData().
|
static |
Definition at line 914 of file transform_convert.c.
References BKE_view_layer_array_from_objects_in_mode, BLI_assert, copy_m3_m4(), copy_m4_m4(), data, ELEM, TransDataContainer::imat, TransDataContainer::imat3, invert_m3_m3(), invert_m4_m4_fallback(), TransDataContainer::mat, TransDataContainer::mat3, TransDataContainer::mat3_unit, ME_SYMMETRY_X, ME_SYMMETRY_Y, ME_SYMMETRY_Z, MEM_callocN, MEM_freeN, Object::mode, normalize_m3_m3(), NULL, OB_ARMATURE, OB_MESH, OB_MODE_EDIT, OB_MODE_OBJECT, OB_MODE_POSE, TransDataContainer::obedit, Object::obmat, TransDataContainer::poseobj, SPACE_VIEW3D, t, T_2D_EDIT, T_NO_MIRROR, TransConvertType_Curve, TransConvertType_EditArmature, TransConvertType_GPencil, TransConvertType_Lattice, TransConvertType_MBall, TransConvertType_Mesh, TransConvertType_MeshEdge, TransConvertType_MeshSkin, TransConvertType_MeshUV, TransConvertType_MeshVertCData, TransConvertType_Pose, Object::type, TransDataContainer::use_local_mat, TransDataContainer::use_mirror_axis_x, TransDataContainer::use_mirror_axis_y, and TransDataContainer::use_mirror_axis_z.
Referenced by createTransData().
TransDataCurveHandleFlags* initTransDataCurveHandles | ( | TransData * | td, |
struct BezTriple * | bezt | ||
) |
Utility function for getting the handle data from bezier's.
Definition at line 467 of file transform_convert.c.
References TransDataCurveHandleFlags::h1, BezTriple::h1, TransDataCurveHandleFlags::h2, BezTriple::h2, TransData::hdata, TransDataCurveHandleFlags::ih1, TransDataCurveHandleFlags::ih2, MEM_mallocN, and TD_BEZTRIPLE.
Referenced by createTransCurveVerts(), and createTransGPencil_curves().
|
static |
Definition at line 319 of file transform_convert.c.
References bPoseChannel::constflag, CONSTRAINT_DISABLE, CONSTRAINT_IK_TEMP, CONSTRAINT_OFF, CONSTRAINT_TYPE_KINEMATIC, bPoseChannel::constraints, data, bConstraint::data, bConstraint::enforce, ListBase::first, bConstraint::flag, bConstraint::next, PCHAN_HAS_IK, PCHAN_HAS_TARGET, and bConstraint::type.
Referenced by transform_autoik_update().
Called during special_aftertrans_update to make sure selected keyframes replace any other keyframes which may reside on that frame (that is not selected).
sel_flag | The flag (bezt.f1/2/3) value to use to determine selection. Usually SELECT , but may want to use a different one at times (if caller does not operate on selection). |
Definition at line 558 of file transform_convert.c.
References FCurve::bezt, BEZT_BINARYSEARCH_THRESH, BEZT_ISSEL_ANY, BKE_fcurve_delete_key(), BLI_addtail(), BLI_freelistN(), BLI_listbase_is_empty(), FCURVE_DISCRETE_VALUES, FCURVE_INT_VALUES, FCurve::flag, float(), tRetainedKeyframe::frame, G, G_DEBUG, IS_EQT, ListBase::last, LISTBASE_FOREACH, MEM_callocN, NULL, FCurve::rna_path, testhandles_fcurve(), tRetainedKeyframe::tot_count, FCurve::totvert, tRetainedKeyframe::val, and BezTriple::vec.
Referenced by posttrans_action_clean(), special_aftertrans_update__actedit(), and special_aftertrans_update__graph().
Called for updating while transform acts, once per redraw.
Definition at line 1395 of file transform_convert.c.
References t.
Referenced by applyAlign(), applyBakeTime(), applyBevelWeight(), applyBoneEnvelope(), applyBoneRoll(), applyBoneSize(), applyCrease(), applyCurveShrinkFatten(), applyEdgeSlide(), applyGPOpacity(), applyGPShrinkFatten(), applyMaskShrinkFatten(), applyMirror(), applyNormalRotation(), applyPushPull(), applyResize(), applyRotation(), applySeqSlide(), applyShear(), applyShrinkFatten(), applySkinResize(), applyTilt(), applyTimeScale(), applyTimeSlide(), applyTimeTranslate(), applyToSphere(), applyTrackball(), applyTranslation(), applyTransObjects(), applyVertSlide(), Bend(), and restoreTransObjects().
Distance calculated from not-selected vertex to nearest selected vertex.
Definition at line 174 of file transform_convert.c.
References Freestyle::a, TransData::axismtx, BLI_assert, copy_m3_m3(), copy_v3_v3(), TransData::dist, FOREACH_TRANS_DATA_CONTAINER, MEM_freeN, MEM_mallocN, TransData::mtx, mul_v3_m3v3(), mul_v3_m4v3(), normalize_v3_v3(), NULL, project_v3_v3v3(), TransData::rdist, RGN_TYPE_WINDOW, SPACE_VIEW3D, sub_v3_v3(), t, T_PROP_PROJECTED, TD_SELECTED, transdata_check_local_islands(), and RegionView3D::viewinv.
Referenced by init_proportional_edit().
Definition at line 128 of file transform_convert.c.
References FOREACH_TRANS_DATA_CONTAINER, sort_trans_data_dist_container(), and t.
Referenced by init_proportional_edit(), and transformEvent().
|
static |
Definition at line 110 of file transform_convert.c.
References TransDataContainer::data, TransDataContainer::data_len, t, T_PROP_CONNECTED, TD_SELECTED, trans_data_compare_dist(), and trans_data_compare_rdist().
Referenced by sort_trans_data_dist().
Definition at line 164 of file transform_convert.c.
References FOREACH_TRANS_DATA_CONTAINER, sort_trans_data_selected_first_container(), and t.
Referenced by init_proportional_edit().
|
static |
Make TD_SELECTED first in the array.
Definition at line 138 of file transform_convert.c.
References TransDataContainer::data, TransDataContainer::data_len, and TD_SELECTED.
Referenced by sort_trans_data_selected_first().
Inserting keys, point-cache, redraw events.
Definition at line 771 of file transform_convert.c.
References BLI_assert, C, CTX_data_main(), t, and TFM_DUMMY.
Referenced by calculateTransformCenter(), and transformEnd().
int special_transform_moving | ( | TransInfo * | t | ) |
Definition at line 790 of file transform_convert.c.
References CTX_CURSOR, CTX_OBJECT, CTX_POSE_BONE, CTX_TEXTURE_SPACE, G_TRANSFORM_CURSOR, G_TRANSFORM_EDIT, G_TRANSFORM_FCURVES, G_TRANSFORM_OBJ, G_TRANSFORM_SEQ, SPACE_GRAPH, SPACE_SEQ, t, and T_EDIT.
Referenced by transformops_data().
Definition at line 82 of file transform_convert.c.
References Freestyle::a, usdtokens::b(), and TransData::dist.
Referenced by sort_trans_data_dist_container().
Definition at line 96 of file transform_convert.c.
References Freestyle::a, usdtokens::b(), and TransData::rdist.
Referenced by sort_trans_data_dist_container().
Definition at line 73 of file transform_convert.c.
References t, and transform_around_single_fallback_ex().
Referenced by createTransArmatureVerts().
Transforming around ourselves is no use, fallback to individual origins, useful for curve/armatures.
Definition at line 55 of file transform_convert.c.
References ELEM, t, T_OVERRIDE_CENTER, transform_mode_use_local_origins(), V3D_AROUND_ACTIVE, V3D_AROUND_CENTER_BOUNDS, V3D_AROUND_CENTER_MEDIAN, and V3D_AROUND_LOCAL_ORIGINS.
Referenced by createTransCurveVerts(), createTransGPencil_curves(), and transform_around_single_fallback().
Change the chain-length of auto-IK.
Definition at line 355 of file transform_convert.c.
References CTX_data_main(), DEG_relations_tag_update(), ELEM, FOREACH_TRANS_DATA_CONTAINER, bPoseChannel::next, NULL, pchan_autoik_adjust(), and t.
Referenced by createTransPose(), and transformEvent().
void transform_convert_clip_mirror_modifier_apply | ( | TransDataContainer * | tc | ) |
Definition at line 1207 of file transform_convert.c.
References copy_v3_v3(), TransDataContainer::data, TransDataContainer::data_len, eModifierMode_Realtime, eModifierType_Mirror, fabsf, ListBase::first, MirrorModifierData::flag, invert_m4_m4(), MirrorModifierData::mirror_ob, MOD_MIR_AXIS_X, MOD_MIR_AXIS_Y, MOD_MIR_AXIS_Z, MOD_MIR_CLIPPING, ModifierData::mode, Object::modifiers, mul_m4_m4m4(), mul_m4_v3(), ModifierData::next, NULL, TransDataContainer::obedit, Object::obmat, TD_SKIP, MirrorModifierData::tolerance, and ModifierData::type.
Referenced by recalcData_curve(), and recalcData_mesh().
void transform_convert_flush_handle2D | ( | TransData * | td, |
TransData2D * | td2d, | ||
const float | y_fac | ||
) |
Definition at line 1375 of file transform_convert.c.
References TransData2D::h1, TransData2D::h2, TransData2D::ih1, TransData2D::ih2, TD_MOVEHANDLE1, and TD_MOVEHANDLE2.
Referenced by flushTransGraphData().
Used for TFM_TIME_EXTEND
.
Definition at line 506 of file transform_convert.c.
References center, t, T_MODAL, T_NO_MIRROR, and UI_view2d_region_to_view().
Referenced by createTransActionData(), createTransNlaData(), and createTransSeqData().
Definition at line 50 of file transform_convert.c.
References ELEM, t, TFM_RESIZE, TFM_ROTATION, and TFM_TRACKBALL.
Referenced by createTransCurveVerts(), createTransGPencil_curves(), and transform_around_single_fallback_ex().