Affect pivot point in edit mode

Ah, Mr.Alberto strikes again.

@Alberto Dude, you’re such a major troll. I’m impressed. :smile:
We all know that your mission in this forum is to make sure blender remains the same old blender forever, you made it very clear, so we got that. You literally reject every possible improvement man, you even got banned already because of your crazy toxic behavior. When will you start learning?

You are calling red wax a liar? Dude, if only you knew who he is.

But I gotta tell you, you got the skill to kill great topics and ideas like no other. You must be proud of yourself I guess.

2 Likes

I really like to see this topic being discussed, I am glad that it was brought up with this thread. Even if there was a big block of misunderstandings at the beginning I think @Iby, @TheRedWaxPolice and @Regnas have brought up a good point here. Could we please stop destroying this topic with a discussion about what software is better. I’d really like to see this discussion getting back to the point.

It’s absolutely unimportant if blender is better than modo or maya or c4d or not. This forum is about discussing blender and making blender better. To my mind there is nothing wrong in pointing out features of other softwares and their advantages. Sheesh! Nobody said that blender is so slow. The comment of @TheRedWaxPolice was saying that this one function is able to get a problem solved faster. Nothing more nothing less.

I know the feature you are describing here and I agree that its faster in the mentioned situations and feels more direct to edit. I am convinced that it could also be achieved as a special 3dcursor mode too and would like to discuss about that, but after having read this thread I felt I had to write these lines first.

1 Like

It’s funny to read someone talking about toxic behavior when all you do is come, troll and put a smiley, and that’s basically all you do. And you have more messages than me deleted.

All this “carping on” is drowning out proper discussion of the topic, can we leave all this s*** on Facebook, or Twitter where it belongs, it has no place here…

Now, about being able to accurately position the cursor, does anyone have anything to say on that please? I made my views known on this, would it help matters if these options I proposed were added?

Cheers, Clock.

I think that could be great to have a way to use the cursor active tool when you only use Shift+Right Mouse (in my keymap) and have a way to move the cursor with precision in this mode.

1 Like

I know right. :wink:

I also want to see improvements to the 3d cursor yea, I even suggested gizmo for the 3d cursor before.

But the truth is, direct manipulation is faster and more intuitive, period!

Would adding options to directly transform geometry in Edit mode, rather than using the cursor, affect any other operations adversely, or compromise other tools, or slow Blender in any way? These points should also be considered before we change anything.

Do we have any feedback from the Devs on what these implications might be? If there are no perceived negatives, then I see no reason why someone should not try this out with a patch and see the responses, both here and on Blender’s performance.

Does someone want to give this a go and let us know how they get on? it is far better to try a solution, or proposal, in the form of actual working code than just to suggest something without first evaluating the consequences. I would try this myself, but altering Blender core code is beyond my capabilites as of now.

Cheers, Clock.

How about that:

  • First of all give the 3dCursor a Gizmo to manipulate it directly.

  • Second step. Give the 3dCursor a mode to interactively set itself to the current pivot point.

  • Assume Pivot Point is set to Median Point

  • The cursor remains constant if the selection is constant but it is editable in this mode eg with the gizmo.

  • It changes to the new median point if the selection changes.

  • Give this setup a single toggle button.

Edit: Some point was unclear with my proposal. I wrote that pivot point is set to median point. That’s meant for placing the 3dCursor. The “final” pivot point itself is the 3dCursor

1 Like

I don’t see that point. The best idea behind the 3D Cursor is that is not a classic pivot point. Give to the user the option to have both things will be hard to manage and will do a frustating UX.

I agree!

I agree! But I would also want it to be the Scale point as well. It is not intuitive to me how you can rotate the cursor, use “Cursor” as the axis system then move obejcts, or geometry along a cursor axis, I can’t get this to work consistently. I am not sure about Median point as the default, but I have no objections and this would be a good evaluation objective. What is your reason for this please?

Good idea, I am all in favour of accuracy and flexibility, combined with speed and efficiency, in cursor placement.

Cheers, Clock.

1 Like

@Alberto I don’t want to strip off any current feature of the 3d cursor.
This proposal is about mimicing a directly editable pivot point with the use of the 3dcursor.
It would be a special mode to implement a feature thats quite common in other softwares.

2 Likes

I don’t believe in that approach to the problem. The main thing is to give only one tool that works quite clearly and not that something that people can understand from common use is hidden. And it almost looks like a workaround. It’s like having a functionality that’s almost going to be main, behind a tool option. Like “we want make two behaviours, but we only do one”

Who is going to use this tool is who uses gizmos, so he won’t understand why to move the pivot point of the gizmo he has to have another gizmo underneath the gizmo, the 3D cursor. Which is also very important to work when putting 3D objects in the scene and for almost anything.

To that solution would be better and simpler to make the gizmo for the cursor on one side and allow moving the pivot point on the other side.

@Alberto. Not sure if i completely got your point. But I am in a row with the other guys proposal about being able to edit the pivot point itself and not taking the 3dcursor into account for this at all. That’s totally fine. It was a compromise as I got @billrey statement that way that he would like to leave any related functionality on 3dcursor side, and prefers seeing the cursor tweaked itself. And with my proposal that would be possible.

Yes, i know, i told that it was a solution before use a gizmo or active tool. But if the idea is a complete change in the 3d cursor behaviour (optionally) and place constantly in the median point will be merge two differents behaviours in one tool, so to that is better split in two tools more clear and easy to use.

Extrude and inset are similar, but we keep it separately because tell to the user to change the tool each time is worst than have both tool.

@clockmender: Sorry missed your question. The idea behind this was quite simple. If you have an interactive placement for the 3dcursor. You need a valuable default point as some kind of startpoint or as the default if you are not going to edit it. Almost every software choses the midpoint of a selection as the pivot if you are in edit mode.

@Alberto: Yes I agree with your point on that.

I know that everyone have their own opinion and the right idea in their minds but plz lets keep it on the topic even if we don’t understand each other well…the point is to try also understand what other people are suggesting, All this fighting is noise to the Devs and that’s why they stay away from these kind of discussions & we keep going in circles, IMO lets get the 3d Cursor to have Gizmos and few improvements first then build upon that.
Proposals,mockups…etc all help, in the end we all want blender to do it better and faster but at the same time take into consideration what already exists and if doesn’t work well we can always propse better ones.

Hey boss @Regnas your old suggestion might become a reality lol
https://developer.blender.org/T69550

Ahh. Well, I guess it’s better than nothing, right?
But still, this is not the solution, this is more like a workaround/hack. The workflow will still be a little convoluted and slow.
I hope that a proper implementation shows up in the future.

1 Like

I agree that a custom pivot should be handled by 3D Cursor.
It works like a charm when using addons with buttons to quickly place it.
But I also agree that if your are using a gizmo, 3D Cursor as a pivot is not currently satisfying.

When user wants to use 3D Cursor just to offset gizmo, it does not work.
Because after a translation, 3D Cursor location was not transformed like selection location.
So, user have to reposition 3D Cursor after each transformation.
For that, currently, only valuable options are to modify origin of object, use an empty as parent or create a hook.

Being able to modify 3D Cursor position with a gizmo is not a sufficient condition. It still means repositioning 3D Cursor after each selection transformation.
We need one or two option when 3D Cursor is used as pivot.
When option is off, 3D Cursor location/rotation are not changed by translation/rotation.
When option is on, 3D Cursor location/rotation are modified as well as selection by translation/rotation.

1 Like

Fun Fact: The English do not have a derogatory slang term for the Belgians, or Dutch, but have many for themselves.

Some other facts to consider:

In order to move, rotate, or scale geometry in Edit mode we need a reference location, that has 3 mutually normal axes and a 3D location.

This point needs to be able to be moved relative to the selected geometry, so, for example, some geometry can be rotated about a point other than the median of that geometry.

That is currently provided by the 3D cursor, but the cursor cannot be moved conveniently and universally, e.g. relative to some selected geometry at a distance and angle in the view plane and it has no gizmo.

Objects in Object mode may be moved by their gizmo located at the origin of the object.

Rotating the cursor does not facilitate moving geometry along the rotated axes of the cursor, or should I say “I cannot make this happen consistently”.

So, as a proposal what do the wise here think of this:

  1. Provide the cursor with a gizmo.
  2. Enable the cursor gizmo to automatically translate the cursor when no geometry is selected.
  3. Enable the gizmo to automatically translate the geometry when some geometry is selected.

This is then a completely automatic system requiring no user input to switch gizmo operational mode, other than the user selecting, or not selecting, some geometry. It also allows the rotated cursor axes to be used in Edit mode. Alternatively we could add a new “Reference Point” for geometry translation in Edit mode and leave the cursor as is. I am still in favour, in any circumstances, of having a gizmo for the cursor and also being able to move it more universally and precisely.

The position of this “Reference Point” could be automatically determined by the “Pivot Point” mode. so in “3D Cursor” mode, it appears at the 3D cursor location and otherwise it appears at the geometry median point, or at active element, etc. This would be consistent with the current methods.

Cheers, Clock.

PS. Could we add a “Distance At Angle” option for gizmos, so this option is universally available? This would operate in View Plane orientation, whatever that happens to be - the maths for this is not difficult and the coding is neither complex, nor lengthy.

This code does the rotational translation from Global to View Plane orientation:

def viewCoords(x_loc,y_loc,z_loc):
    areas = [a for a in bpy.context.screen.areas if a.type == 'VIEW_3D']
    if len(areas) > 0:
        vm = areas[0].spaces.active.region_3d.view_matrix
        vm = vm.to_3x3().normalized().inverted()
        vl = Vector((x_loc,y_loc,z_loc))
        vw = vm @ vl
        return vw
    else:
        return Vector((0,0,0))

And this one goes the other way:

def viewCoordsI(x_loc,y_loc,z_loc):
    areas = [a for a in bpy.context.screen.areas if a.type == 'VIEW_3D']
    if len(areas) > 0:
        vm = areas[0].spaces.active.region_3d.view_matrix
        vm = vm.to_3x3().normalized()
        vl = Vector((x_loc,y_loc,z_loc))
        vw = vm @ vl
        return vw
    else:
        return Vector((0,0,0))