← All ideas
  • Published 26 Dec 2017

Origin | matrix -modifier

Create secondary origin (or matrix) for use in modifiers, constraints and physics with this modifier.

Benefits:

  1. Recalculate the object real origin point even when modifiers applied. This is important because currently, we cannot do it in Blender without applying the modifiers. (for example with array).
  2. With this, you can have different origin points for different modifiers. (mirror 1, mirror 2 etc)

Modifier features:

  • The center of mass (which obviously takes into account the previous modifiers)
  • Bounding box center (also with previous modifiers)
  • Object
  • Origin: the actual object's origin, useful when you have a pile of matrix modifiers and want to take back the origin, and also useful when combined with the next option :
  • 3 fields for XYZ translation (translation from the point selected in the above options)

Possible features:

  • Indicate local axis with transparent/dotted XYZ arrows
  • The data from latest of this kind of modifier should be transferred to physics simulations and constraints.

50%

Development Status: Open

Upvote 1 Downvote 1
artturi85
26 Dec 2017

12 Comments

ChameleonScales

How about simply adding a checkbox in the F6 menu of the "Origin to Geometry" operator, called "include modifiers" ?

2
artturi85 Author

@Caetano Veyssières: I would use this, even tho it's a simpler way to do it than my original idea.

ChameleonScales

@Artturi Mäntysaari:
Nevermind that stupid idea I just gave. It's like, "dependency cycles 101".
No I actually think your modifier idea could be thought further.
For starters, rather than having a modifier that changes the actual origin (which would lead to dependency cycles) it should create a matrix for the next modifiers in the list. So I think it should be called a "matrix" modifier and should include options like :

  • center of mass (which obviously takes into account the previous modifiers)
  • bounding box center (also with previous modifiers)
  • empty
  • origin : the actual object's origin, useful when you have a pile of matrix modifiers and want to take back the origin, and also useful when combined with the next option :
  • 3 fields for XYZ translation (translation from the point selected in the above options)

I'll make a simple mockup when I have the time.

1
ChameleonScales

@Artturi Mäntysaari: There :

Doesn't add anything to what I wrote in my previous message but you could add this as the image of your original post and edit your text.

artturi85 Author

@Caetano Veyssières: Thank you. I've updated it now.

ChameleonScales

@Artturi Mäntysaari: Cool. Let's cross fingers (and share this proposal around) to get some attention and feedback. The "3 fields for XYZ tanslation" is also a list item though, but no big deal.

ChameleonScales

@Caetano Veyssières: To add to the idea, I think this modifier should have a 3D viewport visibility (like XYZ arrows but semi-transparent and with dotted lines) although it may become complicated when you have many of them. I don't know how to address that yet. (Maybe just show the last one ? I also think the modifier should be taken into account in the constraints and physics simulations. This makes sense if you want to make for example a rigid body simulation with a deformed or arrayed object, since you want to use the actual center of mass most of the times.

1
ChameleonScales

@Caetano Veyssières: I think the first line "Change object origin with a modifier" should be changed to "Create a secondary origin (or matrix) for use in modifiers, constraints and physics", because changing the actual origin is not possible, as I said above for dependency cycles reasons or simply for clarity reasons (if you have only one origin, you may get confused as to why it doesn't want to recenter when you click on Transform-->Origin to <something>.

jason

I'm struggling to see how this would be useful as a modifier rather than just permanently adjusting the object origin or using an Empty with parenting.

artturi85 Author

@Jason van Gumster: It would be the fast way to find the center point. If you have an object with modifiers, like "array" or "simple deform" and you add "transform -> origin to geometry" the origin don't go in the center point of the mesh, because the transform trick does not understand the modifier. Blender thinks the "mesh" is the original cube, not all of those cubes together made with the array. So you can't use "origin to geometry".

If you wanna find the origin of an object that has modifiers, you need to do something else. And there this modifier would be useful. Without this modifier, the usual way would maybe be to apply the modifiers to find the center point for that empty? Every time you need to apply the modifiers you are limiting your ways to edit the object in a creative way. That's why I would love to be able to work with the mesh with modifiers as long as possible.

1
jason

@Artturi Mäntysaari: I see where you're getting at with this. Though, I'm still not sure I personally would want this operation as a modifier. I could easily see it as an add-on, though. The add-on could calculate the geometric center of the derived mesh and place the origin based on that.

Part of the reason I'd personally prefer this approach is because there are a number of modifiers that rely on having a consistent object origin (e.g. Mirror, Simple Deform, Spin). So I'd rather the moving of the origin be an explicit operation rather than something that happens automatically, buried in a stack of other modifiers.

1
artturi85 Author

@Jason van Gumster: Yes, that is part of the problem. Now you could have 2 different origin points for 2 different modifiers.

For example for "mirror modifier 1", you have an origin point in the center of the geometry. Then you create "mirror modifier 2" after the "calculate origin" -modifier and you can set up origin point somewhere else for that mirror modifier 2. I would use that, probably a lot.

Now there is also this "mirror object", that can be used, so after thinking this could be a more simple way to do with the method Caetano said below. Tho I am that kind of person who would love to have everything as a modifier.