5
$\begingroup$

Does Blender have a transform modifier? I mean a modifier that can do scaling, rotation and translation, just like s, r and g respectively, as you would normally do with a mesh. However, s, r and g do this permanently to a mesh, but I am asking for a modifier that you can undo or change easily, and will be permanent only if you apply the modifier. If yes, then can the modifier use different pivot points, such as , active element, 3d cursor, median point and individual origins?

$\endgroup$
4
  • 3
    $\begingroup$ I think there's no modifier for that. To achieve undoable transforms either add an empty which is used for transforms and object is parented to it or a constraint which points to some other object (and which is actually rotated / scaled etc). $\endgroup$
    – Mr Zak
    Dec 3 '16 at 16:22
  • $\begingroup$ @MrZak Sorry, I only just saw your comment suggesting this. I wrote my answer suggesting the same and then saw your comment. I would have left it to you to answer if I had noticed. $\endgroup$ Dec 3 '16 at 17:15
  • $\begingroup$ Yes, I was thinking of using an empty too but then I figured that maybe a modifier would be useful $\endgroup$ Dec 3 '16 at 17:20
  • $\begingroup$ @RayMairlot there's nothing wrong with that, I wasn't really going to answer this one. $\endgroup$
    – Mr Zak
    Dec 3 '16 at 17:34
5
$\begingroup$

With Blender 2.92 this is now possible using the Geometry Nodes modifier.

  1. Add the modifier.
  2. Change the editor type of an area to Geometry Node Editor.
  3. Add a node (Shift+A).
  4. Search for and select the Transform node.
  5. Put it on top of the connection between the group input and group output.
  6. Change translation, rotation and scale to your liking.

It cannot use the 3D cursor, but you can change the pivot point to a different object like an empty. That empty can then be parented to a vertex or the like. To do this, add two more transform nodes before and after your transform. The first one takes a transform values from an Object Info node with the pivot object, the second one takes those same transforms but inverted using a Vector Math node to translate/rotate/scale it back again.

The node setup and modifier.

$\endgroup$
1
2
$\begingroup$

I don't think there is a modifier that can do this. The Lattice modifier is close but it doesn't transform the object as you might expect if you rotate it.

I think the best thing you can do is to parent the object you want to non-destructively transform to an Empty and perform all the transforms on the Empty instead of the object. If you want to 'undo' all the transforms then just un-parent the object and it will revert to its pre-transformed state (as long as you choose the standard Clear Parent option from the Alt+P menu).

If you want to 'apply' the transforms you did on the Empty to the object itself then choose Clear and Keep Transformations from the Clear Parent menu.

$\endgroup$
1
2
$\begingroup$

Alt-S will undo scaling (ie. set scale factors to 1.00) Alt-R, and Alt-G will, in the same way, undo rotation and translation respectively. In that sense, S,R, and G are not permanently changing your mesh objects. If you want to make transformations permanent, Ctrl-A and Apply rotation etc. Does that answer your question?

$\endgroup$
2
  • $\begingroup$ Note though that transform operations don't change mesh permanently only if were done in Object mode and thus weren't applied to the object data. If they were done on Edit mode then this won't work. $\endgroup$
    – Mr Zak
    Dec 3 '16 at 16:19
  • $\begingroup$ Yeah, fair point. $\endgroup$ Dec 3 '16 at 19:50
2
$\begingroup$

IMHO, the best way to transform an object, especially on top of modifiers such as Mirror or Array (that will change the look of your object when you move it) is to add a bone on the same position as your object and then parent it using the automatic weights option.

You just have to make sure that your object is entirely weight painted in RED.

This let you move objects with mirror modifier without having to apply it.

$\endgroup$
0
$\begingroup$

If all you need is translation (as opposed to rotation or scaling), the Displace modifier appears to work. It supports both local and global translation, on any of the three axes. Just make sure to set "Midlevel" to 0.

Example:

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.