Page MenuHome

3D Cursor Design
Closed, ResolvedPublic

Description

In Blender 2.8, we want to improve the 3D Cursor, in these ways:

  • We want to make it less visually distracting
  • We want to make it more powerful, and useful in more situations

Right now, the 3D Cursor only represents a location in 3D space. We use this location for:

  • Adding new objects
  • a pivot point
  • certain tools use it as a reference point, such as Bend, Spin, Paint Clone
  • You can lock the viewport to it

in Blender 2.8, we want the 3D Cursor to include an orientation too. This will make it much easier to create custom orientations.

A custom orientation can then be set this way:

  • The user sets the 3D cursor orientation to Normal.
  • The user then drags the the 3D Cursor over any face. It will align to that normal orientation

When the user now adds a new object, it will appear in that location, oriented perpendicular to that orientation.

If the user enables a transform tool, he/she can use the 3D Cursor orientation:

We could use the orientation for any tool that includes transformations, such as Extrude, and also for other things, like Spin (to set the orientation).

Visual Design

In order to support orientation, we need to redesign the 3D Cursor. Here are some ideas one how we might do that:

This 3D Cursor Design clarifies the active plane, perpendicular to the face.

Details

Type
Design

Event Timeline

William Reynish (billreynish) triaged this task as Normal priority.
William Reynish (billreynish) updated the task description. (Show Details)

It will be great by dragging the cursor to also snap onto components.

  • Click > Place cursor
  • DRAG > move the cursor in the 3dview
  • DRAG + MMB > move the cursor and constraint to axis (X,Y,Z) to move the cursor in the 3Dview
  • CTRL + DRAG > move the cursor and snap to the center of Edge/face, to vertex
  • CTRL + DRAG + MMB > move the cursor and constraint to axis (X,Y,Z) and snap to the center of Edge/face, to vertex
  • SHIFT + DRAG > move the cursor + snap on face, edges.

Cursor orientation will be in euler rotation or in quaternion or just as direction vector?

The example cursor seems much too subtle, easy to loose against a more busy backdrop (imagine over some grass particles, or bones).

Yes, perhaps you are right. But it's a tradeoff - we also don't want it to be too distracting. But we can continue to develop the design.

@Campbell Barton (campbellbarton) @William Reynish (billreynish)

Great to see that the 3D cursor gets some attention.

I love the proposal but have to agree we have to be careful with the tool icon design and also how you implement interacting with it to prevent breaking established workflows.

In Blender unlike other apps the 3D cursor is used for transformations as well as inserting new objects/mesh.

And we can display the 3D widget at the 3D cursor location.

Maya and Alias treat the pivot point as an object that can be selected and moved via the mouse and I am curious if this could not be similar to the 3D Cursor, meaning:

Make it a selectable object
translate it move and rotate
make it snap to object and mesh in edit and object mode
(I know making it an object will not allow you to I guess move it when being in edit mode for a mesh container - right @Campbell Barton (campbellbarton) ?)
as an object you can display position and rotation (scale we can ignore) in object properties / n panel

display the 3D widget on it
Via the 3D widget (local) we can rotate / move it

So do we need a new icon at all?

I love the idea of expanding the 3D Cursor to be more powerful.

If suggestions are welcome at all, here are some of mine:

  1. Like many people, I echo the sentiment of making the 3D Cursor be transfomable in the 3D viewport via a manipulator.
  2. 3D Cursor movement needs to be undoable. It really disrupts the workflow to accidentally move the 3D Cursor and not being able to undo (especially in its current state where moving the 3D Cursor is bit of a hassle).
  3. What about being able to create multiple 3D Cursors? With ability to easily select the active 3D Cursor, of course.
  4. Ability to parent 3D Cursor to an object/vertex/bone, and vice versa, could also be quite useful.

Regarding #3, it would save so much tediousness. There were many times I would dread moving the 3D Cursor because then I would lose its current position (so I'm left to do extra work to create workarounds).

claas eicke: The idea is that it will work more or less like today, but also have an orientation, which in turn can be used as a reference orientation, just like the 3D Cursor can be used as a reference location today. This can make working with off-axis transformations much easier, as you don't need to constantly set up custom stored orientations. Instead, the user can simply select '3D Cursor' from the orientation list.

It also makes it easy to add objects perpendicular to surfaces. Things like that.

KiJeon: We are not planning to make the 3D cursor do those things. For those uses, it's better to simply use an Empty object.

YAFU (YAFU) added a subscriber: YAFU (YAFU).EditedMay 5 2018, 2:44 PM

Hi.
Would a "Smart" mode be possible to position 3D Cursor?. For example with "Smart" mode enabled, when left button clicking on an object or an empty, it automatically positions 3D Cursor in Object origin or exactly on the empty. In Edit mode, if you left click on a vertex or near a vertex (just like RMB selection works) then 3D cursor is automatically positioned exactly on that vertex. The same for edges or faces.
Also Smart mode to position the cursor on Grid Floor, especially in Ortho view.
In my case, the only time I use LMB to directly position cursor in 3D View, is when I want to remove of my view 3D Cursor bothering about where I am working. Otherwise, I always need more precision, this is to first Select item and then Snap Cursor to... Then Smart mode would save those tedious steps.

Yafu: You basically described 3D Cursor snapping, as already mentioned above.

William I think while tackling this issue maybe we should also consider how this could be linked to the object pivot point adjustment issue Blender faces.
In Blender you can set the pivot point to a selection of targets incl the 3d cursor but you cannot freely move the pivot point like in Maya / Max

Now if the 3D cursor could be snapped to mesh/edge/vertex in OBJECT mode then this would solve the pivot point issue to a degree minimizing the need to enter
edit mode snap cursor exit edit mode set pivot point (very cumbersome outdated and long process)

Other question would be when and how would a user utilize the 3D cursor and custom orientation?!

Fusion 360 uses a mode where the user can set the custom orientation for the 3d widget.
https://drive.google.com/file/d/1jEhq85-WdD6yuJzExUbxflUzTHNJUj_k/view
So in the majority of cases Fusion uses normal orientation here and then I can overwrite also the 3D widget orientation (at the end of the video)

Blender since it is nicely object orientated offers local and global and normal.

The idea to make the 3d cursor in EDIT or OBJECT mode snap to mesh (EDGE FACE VERTEX) would be very useful as you were able to see in the video.
Maybe it is not needed to move the cursor like an object but just activate snap and a target type and then click to where it should snap to which would
then position the cursor.

On a face this will also auto orient the cursor if needed or just position it there with global orientation.

I think that is going to be the tricky part to figure out how to you do global and normal orientation for the cursor when snapping since you need to balance
pivot point mode and orientation.

Does the 3d cursor align to the normal when Normal mode is selected when snapping to an edge or face and does the 3d cursor remain global when using global orientation
meaning the orientation mode will decide it.

Also regarding saving cursor positions - this is actually an incredibly useful tool and no Empties are not a good option. Thats a wacky work around.
Positions could be saved via an add-on but this like custom orientations should maybe be more build into blender directly.

Custom Ori and local global normal is one of the main reasons why I choose to design in blender and not other apps.

Yes, cursor snapping is useful. We are planning to support that. Both snapping to verts, edges, faces, and snapping to orientations, as per the description above.

And yes, the idea is that, when using the 3D Cursor, it will set it's orientation based on the orientation setting - Global, Local, Normal etc.

As for parenting to the 3D Cursor, multiple 3D Cursors etc: That is outside the scope of what we are planing to do, and may not be a good fit. It could be useful in some situations, but for now we don't want to go down that route.

As for parenting to the 3D Cursor, multiple 3D Cursors etc: That is outside the scope of what we are planing to do, and may not be a good fit. It could be useful in some situations, but for now we don't want to go down that route.

I fully agree being out of scope - just pointed it out that this is a powerful tool (many CAD apps do not have it) and that also we have add-ons that do that already.

I think the more you do not change the 3d cursor and keep it as is the less disruptive it will be and can do the alignment via the orientation mode we select.

I would like to talk about VALVe's Source Film Maker, there is a widget named "screen manipulator". I think it has some pretty good ideas that we could have in Blender :

It's basically a screen space widget with for areas of action and it's own pivot point.
The big orange circle rotates the selection on the screenspace
The middle square moves the selection on the screenspace
Any screenspace action can be switched to screenspace depth action via holding a modifier key (i think shift). Holding down the modifier will make the current action take place in the remaining axis, basically, until the modifier is released.
Clicking and dragging will trackball rotate, as does our current light grey circle widget.
And most importantly :
The pivot point is always the widget's center.
The widget can be moved via the little orange dash on the left, which will move the widget and it's pivot point, but not the selection
Double-clicking that dash will bring back the widget (and it's pivot point) on the selection's origin.

As SFM has several snapping solutions like vertex, edge, face, object origin, ... This tool is very powerful, especially in animation as we want to rotate and translate all the time and wish to change pivot points all the time, it's really time gain.
I think we can really take some things from that, whether in Blender's widgets or in 3D cursor.

@William Reynish (billreynish) Appreciate you taking the time to respond. I hope my suggestions are not derailing the purpose of this task. I got excited at the notion of making the 3D Cursor more powerful, but I think the real goal here is to make it feel more refined and less disruptive, and not adding more features.

With that noted, would having A) a visual manipulator and B) being able to undo be out of the question for 2.8?

For me, it doesn't matter how pretty the 3D Cursor looks if mentally I have to second guess myself every time I move the 3D Cursor because 1) it's a hassle to move, and 2) I won't be able to undo it. Regarding 1, snapping options being brought up sound sweet.

If nothing else, just adding the undo ability would make me happy. =)

We actually discussed that today. Perhaps we will be able to include the 3D cursor in the undo stack, yes.

3D Cursor is potentially quite useful and it's awesome to see some thought going into improving it. I'm personally a LMB select user so use RMB to place the 3d cursor and have enabled the 3d cursor tools add on that lets me drag it around and snap to vertx/edges etc. Its so close to being very good that way.

Adding orientation would supercharge it. As a long time user of a v. popular mograph tool I very much miss some of that power.

e.g. drag the cursor to a vert, enter cursor rotation mode and snap to another vert orienting the Z axis along that edge. I can see some stuff a bit like this in the new ruler tool.

I can see the advantage of a manipulator for the cursor but I am not sure its a good idea to have the cursor itself selectable? unless its a cursor tool/mode so we can select it then translate/rotate it, Once again though I think that will be too cumbersome for normal use.

Perhaps this is best done with sticky keys?

they can do it like Maya, keep pressing a key to show the cursor arrows and then move it.
but I prefer my first post using the drag to move it, snap it etc.

What would be nice is a mode where the 3D cursor only appears when needed, i.e. when your pivot point is set to 3D cursor, or you are running an operator that uses the 3D cursor.

At other times, the cursor could be hidden. If you click to place the cursor, or do anything else that moves the cursor, it could appear briefly, then fade out again over a few seconds.

This would allow the cursor to be prominent when needed, but not distracting when it's not.

Dalai Felinto (dfelinto) closed this task as Resolved.May 7 2018, 9:25 AM

It seems cursor needs more work.
That orient from the view, not the from the faces normals.
It works on some objects but fails on this simple test.

The 3D Cursor orientation has a few bugs. Rest assured, we are aware of them. It's on our todo.

Could it be possible with the new active tools to create tasks per tool to help devs and see how we could improve them?
Maybe after the code quest.

We have some ideas that could give great results.

Cédric: Appreciate your enthusiasm. I am enthusiastic too! However, most of the things you are likely to point out, we already know and just haven't fixed or implemented yet. Our main issue currently is getting the frameworks for the tools system in a more solid state, then we'll more on to add more features and to fix issues. We have a long lost of things to do and fix to make it nice, consistent and elegant.

Currently, only Campbell is working on the implementation.

So, it's probably better to wait at least few weeks before submitting thorough feedback.

Like I said, maybe after the code quest ^^

For sure, that makes sense.

Dalai Felinto (dfelinto) closed this task as Resolved.May 14 2018, 10:21 AM
Albert (wevon) added a subscriber: Albert (wevon).EditedMay 19 2018, 5:07 PM

Reading that the 3DCursor is made disappear in SculptMode, it has seemed to me a shame, just like a user suggested can be very useful, which is why I think more than eliminating it should be vitaminized to be more useful. I think that if the 3DCursor had head and tail could be used for more things, such as the ZB Transpose Tool or the Modo Linear Fallof Mode.
At Blender we already have Mira Tools's Deform Mesh that does something similar.
https://plus.google.com/+MarvinKBreuer/posts/PQPrBYaRhLt
My proposal is that it resembles a bone of one point and if its future is to be expanded its functionality, the other is affixed.