Extend Repeat Last Functionality
Such thing was kind of already proposed and I even make interface mockup for it and call it " Keep last constraint". BUT! I thought about this and here I have more complicated vision.
Repeat Last Constraint
feature
Rename feature to
Repeat Last Constraint
. Because much exact name for it + we can have more intuitive and comfortable to use shortcut for it
Shift + R
(
R
epeat) during transform. Like
Shift+Z
for Z constraint but
R
for Repeat Constraint. In interface it can look like same ( as I previously show) checkbox.
Right now it conflict wit already assigned
Shift+R
during transform for free rotation but free rotation also can be achieved by double press
R
so IMHO this shortcut can be replaced. Also It overlapped a bit with existed
Shift+R
not during transform which do "Repeat Last" operator and just repeat any last one transform, but I think it's not a problem - one will work during transform, other after.
Because each different transform operator do it's own different things - each one operator which can use constraints should repeat it's own last. In most of situation it's much handy usage than constant constraint for all operators.
For example - user need to duplicate something by
XY
constraint and rotate each by
Z
constraint
N
times
.
-
For "Tools" ( Gizmos ) users get most profit from this - when do transform actions with Gizmo somewhere far from selection or even out from screen. In other cases they just have manipulators. It should looks like when user do some transform with some constraints and
Repeat Last Constraintoption enabled - next time when user just clink & drag on model to do transform it do not Free ( view aligned ) transform but already constrained. Something similar to how it work in 3D Max.
But this " grab model " workflow wouldn't work with toll " Transforms " in it's current state because it contain all three transform Gizmos and it's not exactly clear how to transform. Right now grab model not Gizmo with this tool always do Move. Maybe if it work as grab model repeat last used type of transform - proposed Repeat Last Constraint mechanic also can work for this tool.
-
For "Withoutgizmos" keyboard users nothing special. Pressing
Shift+Rtoggle ON/OFF Repeat Last Constraint mode. Toggle work during already started transform action, in object mode or inside edit mode.
But what's with
Free
transform?
Imagine user enable Repeat Last mode and now he have only options
XZ
Normal(last one) + All Normal constraints + All Global constraints. How to achieve back Free transform now?
- For "Tools" ( Gizmos ) users - those users can just grab white circle part of Gizmo to do Free transform without turning OFF Repeat Last mode.
-
For "Withoutgizmos" keyboard users - because it was no more white circle maybe we need something else. It's not a big deal to press
Shift+Rto OFF Repeat Last Constraint and get Free transform. But in my vision it better to use someFofShift+F(Free) keys during transform action ( I checked - it not assigned to anything during any kind of transform action ) to achieve Free with enabled Repeat Last. Something likeCkey in Slide operator to toggle Unbounded/Bounded slide.
Maybe
F
during transform have sense for Gizmo users too in cases when manipulator somewhere out of screen but it need to switch to Free mode?
Even more -
Repeat Axis Alignment
All I talking about before is just Repeat Last Constrained axis eg. previous last one been View aligned
X
, now user changed view angle and do transform with Repeat Last BUT! now it aligned to new View. What if user don't want to loose exact axis which been used in previous action? Of course user can create custom Transform Orientation each time but it kind of cumbersome way...
Alignment
option in my vision in case of Repeat Last Constraint remember not TYPE of last constraint but ALIGNMENT of last axis ( kind of quick custom transform orientation based on previous transform action parameters ). It can be toggled ON/OFF in interface as checkbox. Else user can fast switch it by pressing
A
or
Shift+A
(
A
ligned ) during transform action.
I don't know - maybe now it also need to add new manipulator for such mode. I propose purple color for manipulator and axis as something not similar to RGB for XYZ axis. Manipulator can be just circle because user don't choose axis - just repeat. New manipulator needed because aligned to something before axis is different than current selection axis and do not represented in current Gizmo. But from other side - just circle do not represent direction of repeated axis.... If you have any better ideas for implementation of such thing please write in comments.
EVEN MORE -
Sockets
repeat transform value
Inspired by Photoshop.
Socket
feature - remember last transform value and draw snappable socket to which user can snap current transform. It can be toggled ON/OFF in interface as checkbox + slider to setup number of remembered transform values steps with, maybe, 10 max. as some reasonable top limit to not make this feature kind of crappy. Else
Shift+S
(
S
ocket) during transform action.
Right now
Shift+S
in conflict with ability to switch to Scale during other transform. But it has no any reasonable sense because same can be achieved by pressing just single
S
key. So
Shift+S
can be assigned to proposed Socket feature.
Examples
-
Repeat Last ConstraintON,Repeat Axis AlignmentON,Repeat Last SocketON with 1 step . User select something and move it in Normal orientation byZconstraint for someNvalue. Then user select something else. Now user get sameZnormal axis from previous action. Because ofAlignmentmode axis have purple color. Socket on this axis represent same value as before but calculated from current transform start. User can easily move along this axis and use all of others snap options if it needed + when socked achieved ( + some small setupable somewhere in preferences threshold ) user get exactly same distance as in previous action.
-
Repeat Last ConstraintON,Repeat Axis AlignmentOFF,Repeat Last SocketON 2 steps.
On pictures
1 - 4
. User make duplicate with
X+Y
(
Shift+Z
) constraint. Then user make next duplicate but just by
Shift+D
,
X+Y
constraint enabled instead of Free because of
Repeat Last Constraint
option. Also as you see it shows socket which represent previous transform value but user place duplicate somewhere else. Then start making another duplicate and now we see two sockets which represent two previous transform values. On picture
5
as additional propose functionality - maybe better to make
Sockets
show not only one stick + socket but continue draw same sticks if user go farther? Maybe you have better idea - write it in comments.
- Rotation.... Things not so simple with rotation to draw Sockets. If in case of Gizmo it's more or less clear how to draw such socket.
In case of " withoutgizmo " workflow it is not so clear because of this. All we get on screen is a dash line from cursor to point around we rotate. Sometimes it can be way to far from view area and out from screen. And it not just " how to draw Sockets " problem generated by this - sometimes it's not clear how or what to rotate, sometimes if it too far/too close it hard to achieve desirable rotation.
First thing go into mind is something like this.
But in same time we can rotate such like on this GIF. And how to draw something in same way for such cases - no one know. There is no " good " way to draw proposed Sockets ( and it touch not only this suggestion and those Sockets ) for current rotarion representation.
The only solution what comes into mind - make transforms calculations work from and around center of 3D View if transform origin go out from screen or maybe even always. If it will work in this way - things become easier. And again, if you have better solution - write it in comments.
As always - thanks for reading. Also you can check
others of my suggestions
, you may find it necessary and vote it up.
As always - thanks for reading. Also you can check my other suggestions .
1 Comment
For 2.79 there was function Re:iterator (yeti tools). For 2.80 you can make macros with command recorder, but there some problems with relative orientations too, due blender not match matrixes well.
So I prefer system like Re:iterator suggest: select certain actions from history, repeat them