New Curve Edit Tool #88957

Closed
opened 2021-06-08 16:13:35 +02:00 by Dilith Jayakody · 29 comments

Background

This task is for the purpose of improving and finalizing the design of a new Bezier curve editing tool as mentioned [here ]] in my GSoC proposal. The initial right-click-select proposal on which this is based on can be found [ https:*blender.community/c/rightclickselect/zpdbbc/ | here .

Details

The following are some of the details about the tool that may need attention:

  • Left click on empty space to add a control point (handle type = align if dragged and vector if just clicked) connected to the selected control point.
    • Click and drag on empty space to add a control point and move the handle subsequently.
    • Hold shift while dragging to convert handle type to free and move one handle independently of the other handle.
  • Ctrl + left click on curve to make a cut (add a control point of handle type auto at the point of the cut).
  • Left click and drag to move control points/handles (auto handles become align and vector handles become free).

While the proposal is primarily targeted at Bezier curves, I believe that most of the functions can be easily applied for other curve types as well.
The following is a small demo of how it's currently implemented:
{F10162588, size=full}

Decisions to be made

Some of the decisions that need to be made are as follows. However, please feel free to comment on any other details that might need changing.

  • Whether visualizing where the cut is taking place is necessary and if so, how it should be displayed.
    • The cut visualization in the knife tool (green dot/square) is, in my opinion, a good candidate.
  • The handle type of the new control point added during a curve cut. Some possibilities are as follows:
    • Align (current implementation)
    • Vector
    • Inherit handle types and lengths from adjacent control points
    • Handle lengths calculated to maintain previous shape (Similar to this add-on)
  • Whether the ability to close loops should be provided and if so, what should trigger the activation of this feature.
    • This wasn’t explicitly stated in the right-click-select proposal but it seems to be possible in its demo.
    • A possible trigger might be dragging an existing point onto another.
    • Another possible trigger might be holding Alt while selecting two end points consecutively.
  • The name of the tool.
    • So far, I’ve referred to the tool within my implementation as “curve edit tool” but that seems way too general.

Results of Further Discussion

A suggestion was brought up to divide the tool into two separate tools (Curve Pen and Cut) since the tweak select tool is already able to perform the "Left click and drag to move control points/handles" functionality. Accordingly, the rest of the functionalities would be divided as follows:

  • Curve Pen:
    • Left click on empty space to add a control point (handle type = align if dragged and vector if just clicked) connected to the selected control point.
      • Click and drag on empty space to add a control point and move the handle subsequently.
      • Press shift while dragging to convert handle type to free and move one handle independently of the other handle.
    • Ctrl + left click on a point to delete the added point.
  • Cut:
    • Ctrl + left click on curve to make a cut (add a control point of handle type auto at the point of the cut).

Another suggestion was to integrate the left click functionality of the Curve Pen into the existing curves functionality by mapping it to Ctrl + left click. In other words, the added functionality would look like the following:

  • Ctrl + Left click on empty space to add a control point (handle type = align if dragged and vector if just clicked) connected to the selected control point.
    • Ctrl + Click and drag on empty space to add a control point and move the handle subsequently.
    • Press shift while dragging to convert handle type to free and move one handle independently of the other handle.

These changes do mean that the tool would deviate from the initial "smoother workflow" idea but the concern is that as the tool gets more complicated, it may feel more redundant with the existing operators. It would be great to hear how the others feel about these suggestions and if possible, give their thoughts about the concern as well. Thank you!

## Background This task is for the purpose of improving and finalizing the design of a new Bezier curve editing tool as mentioned [here ]] in my GSoC proposal. The initial right-click-select proposal on which this is based on can be found [[ https:*blender.community/c/rightclickselect/zpdbbc/ | here ](https:*wiki.blender.org/wiki/User:Dilithjay/GSoC_2021/Curve_Improvements). ## Details The following are some of the details about the tool that may need attention: - `Left click` on empty space to add a control point (handle type = `align` if dragged and `vector` if just clicked) connected to the selected control point. - `Click` and `drag` on empty space to add a control point and move the handle subsequently. - Hold `shift` while dragging to convert handle type to `free` and move one handle independently of the other handle. - `Ctrl` + `left click` on curve to make a cut (add a control point of handle type `auto` at the point of the cut). - `Left click` and `drag` to move control points/handles (`auto` handles become `align` and `vector` handles become `free`). While the proposal is primarily targeted at Bezier curves, I believe that most of the functions can be easily applied for other curve types as well. The following is a small demo of how it's currently implemented: {[F10162588](https://archive.blender.org/developer/F10162588/curve-edit-tool-demo.gif), size=full} ## Decisions to be made Some of the decisions that need to be made are as follows. However, please feel free to comment on any other details that might need changing. - Whether visualizing where the cut is taking place is necessary and if so, how it should be displayed. - The cut visualization in the knife tool (green dot/square) is, in my opinion, a good candidate. - The handle type of the new control point added during a curve cut. Some possibilities are as follows: - `Align` (current implementation) - `Vector` - Inherit handle types and lengths from adjacent control points - Handle lengths calculated to maintain previous shape (Similar to [this ](https://github.com/LeanderSilur/Blender-Tools/tree/b02b50079fdf86aaa6d6888b5bbefc3e9f858bf3/curve_edit_tools) add-on) - Whether the ability to close loops should be provided and if so, what should trigger the activation of this feature. - This wasn’t explicitly stated in the right-click-select proposal but it seems to be possible in its demo. - A possible trigger might be dragging an existing point onto another. - Another possible trigger might be holding Alt while selecting two end points consecutively. - The name of the tool. - So far, I’ve referred to the tool within my implementation as “curve edit tool” but that seems way too general. --- ## Results of Further Discussion A suggestion was brought up to divide the tool into two separate tools (`Curve Pen` and `Cut`) since the tweak select tool is already able to perform the "`Left click` and `drag` to move control points/handles" functionality. Accordingly, the rest of the functionalities would be divided as follows: - `Curve Pen`: - `Left click` on empty space to add a control point (handle type = `align` if dragged and `vector` if just clicked) connected to the selected control point. - `Click` and `drag` on empty space to add a control point and move the handle subsequently. - Press `shift` while dragging to convert handle type to `free` and move one handle independently of the other handle. - `Ctrl` + `left click` on a point to delete the added point. - `Cut`: - `Ctrl` + `left click` on curve to make a cut (add a control point of handle type `auto` at the point of the cut). Another suggestion was to integrate the `left click` functionality of the `Curve Pen` into the existing curves functionality by mapping it to `Ctrl` + `left click`. In other words, the added functionality would look like the following: - `Ctrl` + `Left click` on empty space to add a control point (handle type = `align` if dragged and `vector` if just clicked) connected to the selected control point. - `Ctrl` + `Click` and `drag` on empty space to add a control point and move the handle subsequently. - Press `shift` while dragging to convert handle type to `free` and move one handle independently of the other handle. These changes *do* mean that the tool would deviate from the initial "smoother workflow" idea but the concern is that as the tool gets more complicated, it may feel more redundant with the existing operators. It would be great to hear how the others feel about these suggestions and if possible, give their thoughts about the concern as well. Thank you!
Dilith Jayakody self-assigned this 2021-06-08 16:13:35 +02:00
Author
Member
Added subscribers: @dilithjay, @HooglyBoogly, @filedescriptor

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

This looks pretty cool!

In #88957, @dilithjay wrote:
Handle lengths calculated to maintain previous shape (Similar to this add-on)

This would be the best option if possible.

This looks pretty cool! > In #88957, @dilithjay wrote: > Handle lengths calculated to maintain previous shape (Similar to this add-on) This would be the best option if possible.
Author
Member

In #88957#1173217, @DuarteRamos wrote:
This looks pretty cool!

Thanks!

In #88957#1173217, @DuarteRamos wrote:
This would be the best option if possible.

Yeah, I think the effort would be worth it. I'll try to get it working.

> In #88957#1173217, @DuarteRamos wrote: > This looks pretty cool! Thanks! > In #88957#1173217, @DuarteRamos wrote: > This would be the best option if possible. Yeah, I think the effort would be worth it. I'll try to get it working.

Added subscriber: @StroBlend

Added subscriber: @StroBlend

I’m not sure for the modifier keys, Blender use as convention that the shift key is to add something and the ctrl to substract something. I don’t know if it can be applied to the context of curves? Maybe something to consider where shift could add a point and ctrl to remove a point...
Anyway I m glad to see improvements in this area good luck for the project!

I’m not sure for the modifier keys, Blender use as convention that the shift key is to add something and the ctrl to substract something. I don’t know if it can be applied to the context of curves? Maybe something to consider where shift could add a point and ctrl to remove a point... Anyway I m glad to see improvements in this area good luck for the project!
Author
Member

In #88957#1173376, @StroBlend wrote:
I’m not sure for the modifier keys, Blender use as convention that the shift key is to add something and the ctrl to substract something. I don’t know if it can be applied to the context of curves? Maybe something to consider where shift could add a point and ctrl to remove a point...
Anyway I m glad to see improvements in this area good luck for the project!

Right. I feel like for this particular case the fewer button presses the better. But of course that might depend on what the user is used to. So it might be worth trying out different combinations to see what works. I'll keep this in mind. Thanks for the comment!

> In #88957#1173376, @StroBlend wrote: > I’m not sure for the modifier keys, Blender use as convention that the shift key is to add something and the ctrl to substract something. I don’t know if it can be applied to the context of curves? Maybe something to consider where shift could add a point and ctrl to remove a point... > Anyway I m glad to see improvements in this area good luck for the project! Right. I feel like for this particular case the fewer button presses the better. But of course that might depend on what the user is used to. So it might be worth trying out different combinations to see what works. I'll keep this in mind. Thanks for the comment!

Added subscriber: @hhzx

Added subscriber: @hhzx

Very good! Finally, there is a useful curve tool in blender!

Very good! Finally, there is a useful curve tool in blender!

Added subscriber: @TheRedWaxPolice

Added subscriber: @TheRedWaxPolice
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro
Member

Added subscriber: @DanielBystedt

Added subscriber: @DanielBystedt
Member

Hi and nice work! I was requested in blender.chat to give some feedback

  

Whether visualizing where the cut is taking place is necessary and if so, how it should be displayed.
The cut visualization in the knife tool (green dot/square) is, in my opinion, a good candidate.

I think copying the green dot from knife tool is a great Idea, since it will be more consistent with how other tools work in Blender.

The handle type of the new control point added during a curve cut. Some possibilities are as follows:

  • Align (current implementation)
  • Vector
  • Inherit handle types and lengths from adjacent control points

I think that the current implementation (Align) is the best choice. Making it easy to quickly change existing handle type is key to make the UX good

  • Handle lengths calculated to maintain previous shape (Similar to this add-on)

Maintaining the shape would be best! Great suggestion.

Whether the ability to close loops should be provided and if so, what should trigger the activation of this feature.
This wasn’t explicitly stated in the right-click-select proposal but it seems to be possible in its demo.

  • A possible trigger might be dragging an existing point onto another.
  • Another possible trigger might be holding Alt while selecting two end points consecutively.

I think being able to close curves would be a nice feature. I think it should be done by holding down CTRL and moving one end point to the other end point. This is similair to normal "snapping" in mesh edit mode. I also think that the normal hotkey for closing curves should work (alt + C).

It might be good to know that "alt" is not an allowed modifier key for tools and modal operators. I've been told by both Campbell and Pablo that it is reserved. I believe it had something to do with "emulate 3 button mouse", but I'm not sure.

The name of the tool.
So far, I’ve referred to the tool within my implementation as “curve edit tool” but that seems way too general.

That is a tricky one. Here are some suggestions:

  • Curve knife - Not the best description, but unique name. I think I'm towards this, but I don't have any strong opinions.
  • Draw handle
  • Edit points
Hi and nice work! I was requested in blender.chat to give some feedback ``` ``` > Whether visualizing where the cut is taking place is necessary and if so, how it should be displayed. > The cut visualization in the knife tool (green dot/square) is, in my opinion, a good candidate. I think copying the green dot from knife tool is a great Idea, since it will be more consistent with how other tools work in Blender. > The handle type of the new control point added during a curve cut. Some possibilities are as follows: > - Align (current implementation) > - Vector > - Inherit handle types and lengths from adjacent control points I think that the current implementation (Align) is the best choice. Making it easy to quickly change existing handle type is key to make the UX good > - Handle lengths calculated to maintain previous shape (Similar to this add-on) Maintaining the shape would be best! Great suggestion. > Whether the ability to close loops should be provided and if so, what should trigger the activation of this feature. > This wasn’t explicitly stated in the right-click-select proposal but it seems to be possible in its demo. > - A possible trigger might be dragging an existing point onto another. > - Another possible trigger might be holding Alt while selecting two end points consecutively. I think being able to close curves would be a nice feature. I think it should be done by holding down CTRL and moving one end point to the other end point. This is similair to normal "snapping" in mesh edit mode. I also think that the normal hotkey for closing curves should work (alt + C). It might be good to know that "alt" is not an allowed modifier key for tools and modal operators. I've been told by both Campbell and Pablo that it is reserved. I believe it had something to do with "emulate 3 button mouse", but I'm not sure. > > The name of the tool. > So far, I’ve referred to the tool within my implementation as “curve edit tool” but that seems way too general. That is a tricky one. Here are some suggestions: - Curve knife - Not the best description, but unique name. I think I'm towards this, but I don't have any strong opinions. - Draw handle - Edit points

Added subscriber: @MadMinstrel

Added subscriber: @MadMinstrel

This is a lot like the Pen tool in other popular vector software, so naming it Curve Pen, or just Pen would probably immediately get across its function.

This is a lot like the Pen tool in other popular vector software, so naming it Curve Pen, or just Pen would probably immediately get across its function.
Author
Member

Thank you so much for addressing all the decisions to be made. It's really helpful. I think I could go ahead with the improvements proposed here.
I wasn't aware of the hotkeys you mentioned so that's great to know as well.

In #88957#1174856, @DanielBystedt wrote:
It might be good to know that "alt" is not an allowed modifier key for tools and modal operators. I've been told by both Campbell and Pablo that it is reserved. I believe it had something to do with "emulate 3 button mouse", but I'm not sure.

I didn't realize this was the case. Makes sense. Thanks for pointing it out.

In #88957#1174856, @DanielBystedt wrote:
That is a tricky one. Here are some suggestions:

  • Curve knife - Not the best description, but unique name. I think I'm towards this, but I don't have any strong opinions.
  • Draw handle
  • Edit points

This is already much further than I ever got with the name. But I'm slightly leaning towards the name Curve Pen/Pen that @MadMinstrel suggested. The only concern I have regarding that name is whether it might be confused with the Draw tool. I might be nitpicking but it would be good to hear what other's think about that name and the names suggested by @dbystedt.

Thank you so much for addressing all the decisions to be made. It's really helpful. I think I could go ahead with the improvements proposed here. I wasn't aware of the hotkeys you mentioned so that's great to know as well. > In #88957#1174856, @DanielBystedt wrote: > It might be good to know that "alt" is not an allowed modifier key for tools and modal operators. I've been told by both Campbell and Pablo that it is reserved. I believe it had something to do with "emulate 3 button mouse", but I'm not sure. I didn't realize this was the case. Makes sense. Thanks for pointing it out. > In #88957#1174856, @DanielBystedt wrote: > That is a tricky one. Here are some suggestions: > - Curve knife - Not the best description, but unique name. I think I'm towards this, but I don't have any strong opinions. > - Draw handle > - Edit points This is already much further than I ever got with the name. But I'm slightly leaning towards the name `Curve Pen`/`Pen` that @MadMinstrel suggested. The only concern I have regarding that name is whether it might be confused with the `Draw` tool. I might be nitpicking but it would be good to hear what other's think about that name and the names suggested by @dbystedt.

Added subscriber: @victorlouis

Added subscriber: @victorlouis

Hi...

Making it two separate tools seems totally unnecessary to me, it will just make the workflow more cumbersome, IMHO.
Ctrl click a point to delete and Ctrl click on the curve to add a point/cut is pretty much an one tool operation. There's no need to switch tools just to add a point/cut..

Also, for a fast and smooth workflow, the curve pen tool itself should be able to perform the click and drag to move the points/handles, without the need to switch to the tweak tool or anything else...

By the way, are feature suggestions still on the table?

Hi... Making it two separate tools seems totally unnecessary to me, it will just make the workflow more cumbersome, IMHO. Ctrl click a point to delete and Ctrl click on the curve to add a point/cut is pretty much an one tool operation. There's no need to switch tools just to add a point/cut.. Also, for a fast and smooth workflow, the curve pen tool itself should be able to perform the click and drag to move the points/handles, without the need to switch to the tweak tool or anything else... By the way, are feature suggestions still on the table?

The idea that someone would make a tool less efficient just to make it not seem redundant is absolutely alien to me. Please don't break it up. The less tool switching the better.

The idea that someone would make a tool less efficient just to make it not seem redundant is absolutely alien to me. Please don't break it up. The less tool switching the better.
Author
Member

Thank you for the feedback @TheRedWaxPolice @MadMinstrel
Like you both mentioned, the benefit of less redundancy probably won't be worth the hassle of switching between tools. So we won't be making this change. If a solution comes up that wouldn't have to compromise on the workflow, I shall post it here. Thought it might be best to have the consequences of the current design well known and see if the others think it's worth a change.

In #88957#1186575, @TheRedWaxPolice wrote:
By the way, are feature suggestions still on the table?

Yes, please. It may or may not be implemented within the summer depending on how useful/important it might be and on time availability. But I think it's good to have the suggestions out there.

Thank you for the feedback @TheRedWaxPolice @MadMinstrel Like you both mentioned, the benefit of less redundancy probably won't be worth the hassle of switching between tools. So we won't be making this change. If a solution comes up that wouldn't have to compromise on the workflow, I shall post it here. Thought it might be best to have the consequences of the current design well known and see if the others think it's worth a change. > In #88957#1186575, @TheRedWaxPolice wrote: > By the way, are feature suggestions still on the table? Yes, please. It may or may not be implemented within the summer depending on how useful/important it might be and on time availability. But I think it's good to have the suggestions out there.

Added subscriber: @hzuika

Added subscriber: @hzuika

Added subscriber: @leomid

Added subscriber: @leomid

Added subscriber: @PetterLundh

Added subscriber: @PetterLundh

Added subscriber: @DavidKozma

Added subscriber: @DavidKozma

Added subscriber: @adambelis

Added subscriber: @adambelis
Member

Hey @dilithjay, do you think this task should be closed as resolved at this point? Other followup improvements could be listed in separate tasks.

Hey @dilithjay, do you think this task should be closed as resolved at this point? Other followup improvements could be listed in separate tasks.
Author
Member

Hi @HooglyBoogly, yeah I think it makes sense to close this. We can create new tasks for any improvements, as you suggested.

Hi @HooglyBoogly, yeah I think it makes sense to close this. We can create new tasks for any improvements, as you suggested.
Author
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
16 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#88957
No description provided.