← All ideas
  • Published 14 Jul 2019

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. Image 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 Constraint option 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.

Image 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+R toggle 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+R to OFF Repeat Last Constraint and get Free transform. But in my vision it better to use some F of Shift+F ( F ree) 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 like C key 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. Image 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. Image

EVEN MORE - Sockets repeat transform value

Inspired by Photoshop. Image 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. Image 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

  1. Repeat Last Constraint ON, Repeat Axis Alignment ON, Repeat Last Socket ON with 1 step . User select something and move it in Normal orientation by Z constraint for some N value. Then user select something else. Now user get same Z normal axis from previous action. Because of Alignment mode 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.

Image

  1. Repeat Last Constraint ON, Repeat Axis Alignment OFF, Repeat Last Socket ON 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. Image

  1. 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.

Image 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. Image First thing go into mind is something like this. Image 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. Image 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. Image 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 .

90.9%

Development Status: Open

Upvote 10 Downvote 1
IIIFGIII
14 Jul 2019

1 Comment

Vyach

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