Affect pivot point in edit mode

So, being a CAD operator of many years, nearly 40… I like this approach using my PDT:


In this example the Pivot Point was positioned -1.5 in X from the active Vertex using the command (in the Command Line) pd-1.5,0, (all zeros could be omitted).

  • Place Pivot Point Accurately (there are many ways to do this, including having a “default” location written to the object).
  • Set Angle (-12.5 in this case)
  • Click Rotate.

Job done. Pivot Point is not influenced by Cursor, so if you are going to use the Pivot Point in its current location many times, but need to keep moving the cursor to place new geometry, the problem has gone away completely. Pivot Point can also be used for scaling.

I guess Gizmos could be made to do this quite easily in time, but is this a very high priority for Blender development? I like the Lock on ZBrush…

Cheers, Clock.

And what now? How do we convince the blender development team on this?

This thread has many posts, which one are you referring to?

A basic ‘Alt + LMB on gizmos to move the cursor when it’s used as a pivot point’ feature is fairly straight forward — All you really need to do is add P_CURSOR_EDIT flags to the operators that need it in transform_ops.c and throw something like the following into WIDGETGROUP_gizmo_invoke_prepare in transform_gizmo_3d.c

  /*Transform Cursor on Alt*/
  wmWindow *win = CTX_wm_window(C);
  Scene *scene = CTX_data_scene(C);
  bool cursor_check = win->eventstate->alt;
  const int cursor_piv = scene->toolsettings->transform_pivot_point;
  wmGizmoOpElem *gzop = WM_gizmo_operator_get(gz, 0);
  PointerRNA *ptr = &gzop->ptr;
  PropertyRNA *prop_transform_cursor_and = RNA_struct_find_property(ptr, "cursor_transform");
  if (cursor_check && (cursor_piv == V3D_AROUND_CURSOR)) {
    RNA_property_boolean_set(ptr, prop_transform_cursor_and, 1);
  }
  else {
    RNA_property_boolean_set(ptr, prop_transform_cursor_and, 0);
  }

But that’s where the easy stuff stops. Moving the 3D cursor and a selection simultaneously (read: not using a python hack to repeat the operation with some flags flipped) isn’t a straightforward process, and I’d prefer to let Germano finish his refactor before we take a knife to things.

I believe he means this: :point_down:

since this is what we are requesting and that’s what this thread is all about. Everything else is just people trying to provide a workaround with the 3d cursor etc.

1 Like

It is not more easy simply give an option to change the pivot point automatically to 3d cursor until the user change selection?

Option not activated, classic behavior
Option activated

  • if user have pivot point to the 3D cursor, nothing happens when he move the 3d cursor
  • if user have other pivot point, when he move the 3D cursor it automatically change to pivot point 3D cursor mode until heb change the selection, or other behavior similar to other pivot points.

It is the same UX. The program only make automatically the change to pivot that add more clicks

With this solution all user see an improvement without touch the way to work. It can be activated by default because when people move the 3d cursor is to use it like pivot.

Hi @ideasman42,
really glad, that this thread still gets some attention from you.
I am not sure on the form, how proposals like this normally get made in this forum. I also think that you have some internal style guidelines that should and would influence how this turns into a good extension of blenders toolset. But other than this long thread implies, there is alot of agreement in general on such a feature among most people in here.

To sum it up there are about three different proposals or concepts in this thread. One option has been to map it to the 3dcursor and give it some new modes, one is to have a separate pivot point visible all time and being completely separate. The third one is the one I think most people would agree on. It’s the one i’d personally prefer too and it’s the solution that can be found in a wide range of 3dtools out there.

That solution is about being able to activate and deactivate an “edit pivot mode” that changes the behaviour of the current visible transform gizmo. If the “edit pivot mode” is on it will change its own position and will not affect the currently selected meshpart. After the end of the editphase it stays at the modified position and orientation and can be used normally to transform the selected mesh parts. (The main aspect of this new mode should be that its possible to edit the pivot as directly as possible, so no 3dcursor setttings needed prior to it and no additional commands to set it should be involved)

Some early suggestions in this thread wanted it to be available in to be mapped in edit mode to a similar checkbox like the Affect Origins one in object mode also as a checkbox to toggle on and off. That could be a valid place to trigger it via the ui.

But it would also be benefitial to activate and deactivate it even quicker with one or more of the options proposed, may it be in form of a modifier key (sticky key behaviour) that can be hold and released, or small toggle buttons aligned at the gizmo itself as adaption of zbrushs gizmo or even with just its most simplest form as a shortcut for the toggle to turn it on and of as a modal tool.

It also should have an option to snap to meshparts of the current mesh or any other mesh too, maybe somehow like blenders measure tool snapping option and mainly thats all about it.

How are the chances that this could get implemented? What else can we do to support that idea? There are quite some good video demonstrations in this thread on how some other tools with this feature have it implemented.

2 Likes

Well, we can move the gizmo/pivot in Blender. Just set it to be aligned with 3D cursor, which you can easily move and snap whichever way you like. Stated here many times. However, as stated here many times too, that doesn’t mean that everything is fine with this workflow. We still can’t rotate it and tweak its position (along the arbitrary axis for example).

The problem here is that currently Blender has one functionality split between two different tools. There’s a pivot/gizmo that can be set only indirectly. And there’s 3D cursor that can be set manually, but only in a limited fashion. Both of them are just a temporary point in space with basically the same purpose: to serve as a transformation center/reference point.

Some people here say that it has nothing to do with 3D cursor, but that’s not true because even in its current state it can do half of the things they are asking for. Current implementation of a pivot/gizmo covers the other half. If we’ll try to implement movable gizmo like in other software but leave alone the 3D cursor, then there’ll be two two almost identical (or at least overlapping) tools with different names. That’s nonsense. They can be easily combined in one tool. Just make that 3d cursor look like gizmo with all the handles and make it editable with one keypress like in Maya. No need for some other pivot point around there. Of course all the other options of setting this pivot (median, active, etc.) should still be available.

Try to see the big picture here. I’m new to Blender, but I have 25 years of experience with lots of 3D software and have been professionally working on UX and interfaces for decades too. Design-wise this solution absolutely clear and obvious. Seeing this pivot issue causing so much confusion is really a pain. Especially considering we’re almost there.

BTW the best implementation of the temporary 3D pivot I’ve seen is the 3DCoat’s Pose tool. Check it out.

Oh ok, so if your pivot is the median point inside a curve, such as the edge of a crescent moon, you can just snap the 3d cursor to that no problem right? Oh wait.
You think the solution is I should make a new vertex and somehow get it approximately there just to use the active element mode? What is wrong with you oh my god

Edit watch him come back like oh ya just duplicate the entire curve, scale it down into the center and the finally merge them into one vertex, transform that (step 1 of transform pivot) and then go back to your previous selection select the new vertex in empty space and finally scale them to that

1 Like

Could you explaint? It’s hard to understand without context or images.

10%20AM
pivot point: bounding box center

Sure could the 3dcursor behaviour be changed to act like that, but currently there are missing features, I proposed these changes further above too, but it would have to be a one click operation that changes multiple values in blender at once to really compete with a separate tool.

First of all the 3dcursor would have to get its gizmo, but that seems on its way.
The 3dcursor also would have to be editable/movable in edit mode with that new gizmo, but it should just be displayed while pivot point editing is on to keep the 3dviewport cleaner. The pivot point would have to be set to follow the 3dcursor automatically.
After releasing the pivot point has to stay where it is and may not snap back, so the current pivot point functionality has to get changed somehow too. But perhaps the original pivot point mode should be set back and just temporarily deactivated und a selection changes.
The cursor itself should perhaps also be reset to the old position, as that might have benefits for its usage. The place where it was before could really make sense for future commands.

So there are two options. Press that button and multiple changes are done throughout the gui and leave them. But live with these changes if you pressed it accidently. Or set it all back at the end of that, but why did we use the 3dcursor then for this at all.

To me it seems really simpler to grasp that this is its own tool as
“Affect Only Origins” is too and not a 3dcursor on steroids.
I really see what you mean. I thought about it too, as @Billrey was also convinced to solve that task with the help of the 3dcursor. But personally I stick to the solution of having that task separate for these reasons.

1 Like

I want to temporarily re-orient the transform tool based on an existing pivot point, such as the bounding box center. I’m not expecting the bounding box center itself to move, I want to translate its coordinate and local rotation before my transformation operation.

Please stay civilized and on topic here. Communicating in text via a forum can lead to misunderstandings. I suggest you to have further off-topic discussions on this issue in direct messages.

5 Likes

I don’t necessarily want to add fuel to the fire, but with my PDT I can do this:

47

Nice section of curve, next I select 3 verts thereof and click Arc Centre command:

59

Cursor is at Arc Centre, Same goes for my Pivot Point… It’s very simple python code to do this BTW.

Cheers, Clock.

EDIT:

Here’s the code:

def arcCentre(actV,othV,lstV):
    A = np.array([actV.x, actV.y, actV.z])
    B = np.array([othV.x, othV.y, othV.z])
    C = np.array([lstV.x, lstV.y, lstV.z])
    a = np.linalg.norm(C - B)
    b = np.linalg.norm(C - A)
    c = np.linalg.norm(B - A)
    s = (a + b + c) / 2
    R = a*b*c / 4 / np.sqrt(s * (s - a) * (s - b) * (s - c))
    b1 = a*a * (b*b + c*c - a*a)
    b2 = b*b * (a*a + c*c - b*b)
    b3 = c*c * (a*a + b*b - c*c)
    P = np.column_stack((A, B, C)).dot(np.hstack((b1, b2, b3)))
    P /= b1 + b2 + b3
    return Vector((P[0],P[1],P[2])), R
1 Like

@billrey I’m happy with the improvments to 3D Cursor getting a Gizmo but if there, Alt-drag etc but if there are any conflicts with the 3d cursor’s functionality. I was going to suggest creating another ‘temporary Point in space’ (2nd 3D Cursor) except this one only appears in Edit Mode and have similar functionality as Maya or Modo etc.

That way Maya/Modo etc users can enjoy this version while Blender users can still stick with the 3D Cursor Method.

The 3D Cursor is still pretty important for spawning new meshes/object at a certain point in space in either Object/Edit Modes. I’m a little worried that there might be a conflict with this. I’m not sure though.

1 Like

I agree! I have already implemented this, called Pivot Point, in my PDT Add-on, it can be used currently to Rotate and Scale geometry, given the myriad of ways to move geometry already, both in Blender and PDT. It also works in Object mode and a position for this Pivot Point can also be stored in each object’s data and recalled at any time, using the PP Write and PP Read buttons:


Here you can see the Pivot Point (3-axis graphic) along with the Cursor.

Cheers, Clock. :cocktail:

1 Like

Iby / clockmender What you guys are talking is something else entirely and not related to this topic.

The point of this thread is to be able to directly transform the pivot using the gizmo itself, as shown many times already, nothing more nothing less, no 3d cursor involved whatsoever. Just the same way it works in all 3D softwares out there.

1 Like

Iby was who created the thread, probably knows the topic of the thread

it doesn’t matter. This is an entirely new topic he’s starting.