diff options
author | Henrik Dick <weasel> | 2020-12-02 15:09:26 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-12-02 15:22:37 +0300 |
commit | ec39d8de4adf46161d81fb525a73278fe08a8704 (patch) | |
tree | 2dd0459eda48f20b692015466e958c224868a71a /source/blender/editors/transform/transform_mode.h | |
parent | da8dc204bd062b2712869cf2709d2530915249b5 (diff) |
Transform: Correct Mirror for Object Mode along arbitrary axis
This fixes T68521, T82334.
The object are not properly mirrored in object mode.
For mirroring an object that has an arbitrary rotation along the X axis
this is the procedure:
1. mirror x location.
2. negate x scale of the
3. negate y and z component of the rotation (independent of which rotation mode is used).
This knowledge applies now for all angles and axes to finally make the
mirror operation work in object mode.
The new mirror function has the downside that it can not (in this form)
be used with proportional editing.
This is no problem since the old behavior can still be replicated by
scaling with -1 along any axis.
The solution to get perfect mirrors can not work for scaling in general,
because in that case there could be scew created.
Reviewed By: mano-wii
Differential Revision: https://developer.blender.org/D9625
Diffstat (limited to 'source/blender/editors/transform/transform_mode.h')
-rw-r--r-- | source/blender/editors/transform/transform_mode.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/source/blender/editors/transform/transform_mode.h b/source/blender/editors/transform/transform_mode.h index df7d10d1028..7a05506e12c 100644 --- a/source/blender/editors/transform/transform_mode.h +++ b/source/blender/editors/transform/transform_mode.h @@ -44,7 +44,9 @@ int transform_mode_really_used(struct bContext *C, int mode); bool transdata_check_local_center(TransInfo *t, short around); bool transform_mode_is_changeable(const int mode); void protectedTransBits(short protectflag, float vec[3]); +void protectedSizeBits(short protectflag, float size[3]); void constraintTransLim(TransInfo *t, TransData *td); +void constraintSizeLim(TransInfo *t, TransData *td); void postInputRotation(TransInfo *t, float values[3]); void headerRotation(TransInfo *t, char *str, float final); void ElementRotation_ex(TransInfo *t, |