GSoC 2021: Knife Tool Improvements: Feedback

I think the ability to cut loose edges with knife tool will be useful anyway.
Currently we are making it with CAD addon, that splits selected edges with a view projection of an active edge.

Understandable.
But it will make doubling functionality though.
We decided to make Polycross in order to achieve precise constructive geometrical crossectons to satisfy CAD-like modeling demands long time ago.

So my post about snapping for knife tool posted in thread was hidden “… as inappropriate : the community feels it is offensive, abusive, or a violation … due to flags from the community”. Well done “community”, thank u kindly!!!

I don’t see anything “offensive, abusive or violent” in pointing on fact that knife need ability to snap to things outside of currently edited mesh. Lack of such snapping not only make knife almost useless tool in many cases, but it also cut out most of other 3d software users as potential new Blender users. I know what I talk about - I was working in team of 5-6 3D Max users almost 6 years. They all looked at me working in Blender as if it is some “alien technologies”. None of them switch to Blender even in minor tasks despite the fact that they all almost admired on me doing magic in Blender. One of major reason is this damn snapping for knife, lack of such snapping.

All this angle snaps, axis constraints has no sense if u can’t just snap your cut to some point on neighbour model… it all seems like people who develop knife was never working with anythings more than single test box in test scene.

Okay, I will post here just link to RCS suggestion.

4 Likes

it was probably flagged because you posted it in a weekly report thread, those threads are for outward communication, not bidirectional feedback (that’s what this thread is for)

3 Likes

I think the reason was that you posted a screenshot/video from another program, which is against forum rules. This is mainly because of legal reasons.

2 Likes

yes, it’s definitely because of it. Even mention the “name” of other software in your message you need to think twice, so we need to say: “in other software” it’s work like this…
I know it’s not convenient, but this is the devtalk rules.

IDN If we even create the topic on the blenderartists and fill screens with “names” there, and then insert the link here, will it be forbidden too?

Err on the side of caution.

Thank you for the incredibly detailed feedback and don’t worry at all about the length. I am confident my new features are not perfect and this is exactly what I was looking for when I shared a build of my branch.

I agree with almost all of the points you have made. Each seems like a great quality of life improvement and I don’t think any would be hard to implement. I would be happy to dedicate some time this week to implementing them.

The only point I would contest is getting rid of “ignore snapping”. I would consider this a useful feature to some, and not everyone is going to make use of the knife tool with angle snapping always on as you perhaps would. In which case they would not necessarily find a use for a separate key to disable/enable angle snapping instead of just using ‘A’.

Lastly, one question I would have is in regards to your 5th point. How would you propose to toggle between edges for snapping relative to? I could see pressing ‘A’ further times to cycle between edges while in local angle snapping mode, but only when there is multiple edges. However, this may make for confusing UX.

If anyone else has any ideas/comments about these points, please share.

9 Likes

With the new multi-object edit mode, the goal is to be able to enter edit mode with multiple objects selected and draw cuts which can snap to geometry across all of the different objects. Is that what you are referring to?

So far I have spent the past week working on it and have laid the groundwork for such functionality. It is proving quite difficult due to the way the knife tool was originally designed but I hope that if I do not successfully implement it by the end of GSOC the foundation will be there for someone (myself or other) to implement it further down the line.

Lastly, as others have said, your post would have been flagged if you shared screenshots or videos from another program. Nevertheless, I would prefer if feedback was shared in this thread as opposed to the “Weekly Reports” thread.

9 Likes

And those rules are nonsense. It’s like if I want to talk about simple wheel I have to write long descriptions, draw schemes, etc. and do all that with avoiding to mention any brand name. Instead of just showing photo example of any random car with such obvioust thing as wheel.

OK OK, let’s not mention “other software”!!! Here - take this.

Now can anyone start implementing proper (not locked inside single model) snapping for Knife?

8 Likes

@HobbesOS
Firstly, thank you for the great updates!
Found some bugs and inconveniences:

Summary
  1. Bug? Knife Tool don’t start to snap right away, only after first click. With Knife shortcut - all ok.

  2. Angle Snapping in Knife Tool hidden in “…” popover, hard to find.

  3. Angle Snapping increment in Knife Tool.
    Maybe it should increments by integers (1 deg) not float numbers (0.1 deg)?

  4. Angle constraint. First “A” click - screen constraint - it start to constraint immediately,
    second “A” click - local constraint, but it need to make cut once to start it working and some area issue.

  5. Depth check “V” - should it also snap to the points through the mesh? Also when “OFF” should it be not visible and with “ON” - visible?

3 Likes

What you show in the top picture would be covered by what I am currently working on.

However, in the buttom picture I am slightly unsure what is going on. Are you saying you want to be able to make a cut on one object and then apply the cut to another?

Thank you very much for the detailed feedback!

In response to your various points:

  1. That bug actually existed prior to my GSOC project and I had tried fixing it but I believe it is a problem with the way blender tool’s work in the code. I will nonetheless take another look at it to be sure.

  2. The reason it is apart of a popover is as a result of: ⚙ D10853 Knife Tool Constrained Angle Mode Improvement. It gives space for later on when more options may potentially be added to the top bar (which will be the case as part of @CybranM feedback).

  3. To keep it consistent with the rest of blender I have labelled it as an angle and so it was automatically given that increment. When click dragging I do agree it should be increments of 1 degree, as that is more intuitive, so I see if it is possible to change.

  4. Local angle snapping only works when there is a face for the angle to snap along. This is why you see it not working when your mouse goes off of the face. However, I see how it is fairly strange and will definitely make improvements. For example, it should work when a cut is started from an edge as you show, without requiring a second cut.

  5. Snapping to points through the mesh was not possible before my GSOC and I think it would be quite difficult to add. I would say it is out of scope for this project. The reason for the “ON” and “OFF” meaning is because of what depth checking means. I realise this may not make sense to some end users and will rename it to something else.

7 Likes

I think this is what is wanted, to continue line with constraint. I mention about it in 4th point as some area issue with local constraint


one more example with faces not aligned to global orientation

So if you out of edge or cross other edge not clicking, you lose white constraint line, in Local constraint mode. With Screen constraint all ok in this case.

2 Likes

Maybe it should be “ON” (not seeing through) by default then? in order not to confuse users.
Need to know the opinion of other users about this.

On first picture - to be able to snap to any snap point on any model in scene. Same as we able to snap to anything in scene when extruding vertex, for instance, not only to mesh of models currently in edit mode.

On second picture -same snapping to"outside" models but selected polygon sliced by contiuous line based on two points snapped anywhere (“ubbounded line mode” something, you name it). Very common case in poly modeling.

GIF inside

Right now only way to do such cuts in Blender is by help of Snap Bisect addon (big thanks to author!!!) and some workaround of duplicating temporary vertices (because it can snap to only current mesh points as well).


Here my typical daily work model example with wider explanation.

My typical house model for Unreal usage.

Dozens of house model parts - walls out, walls inn, floors, roofs, etc. hundreds of diffetent dors windows and so on instances. It is very common action for archviz modeling to cut something according to/aligned to anything else in scene.

For example it need to cut in wall opening based on new window position. Believe me - you will not want to go out from edit mode, select one of window (instance, one of few dozens), go back to multi edit mode of this wall and those dozens of instances, do your cut, go out from multi edit mode, deselect all windows instances, go back to edit mode of just wall…

What you want instead is just start Knife, do two clicks on two window model corners, confirm.

Multi edit mode not solve this case… you will not want to go all the time IN/OUT from/to multi edit mode, select/deselect object to do simple cuts thousand times per working day. Same as you will not want to work all the time in multi edit mode of everything in scene. This multi edit mode is cool for character modeling something maybe, it is not so cool for many other workflows.

Not understanding of such things IMO come from the fact that feature developed by people who not do real work with those feature… in imagination of such developers feature is amazing, in reality it is not.

Old screenshot from 2.79 but it does not matter. All this below ALE_H1 is single house, fully modeled inside - all flats, stair, lifts. This is “real work”, not some test cube and sphere in test scene you cut in multi edit mode while coding…

But instead of thousand words - just go to my old old RCS suggestion link and wathc video in my reply in comments section.


Actually I don't see any reasonable reasons why I can snap to anything in scene while move, rotate, scale, extrude, etc. transforms but I can't snap to anything in scene while cut by Knife. Why? Is there no single snapping functionality implementation in API that can be applied to Knife tool? Is there any else reasonable reasons? Would be interesting to read any explanation.
4 Likes

the short answer is because modal operators don’t have any concept of snapping, it has to be done on a per-operator basis. why? because an operator can be anything, it doesn’t necessarily have anything to do with transformations at all. hell, even the transformations themselves are handled on a per-operator basis because it’s just a framework for executing some kind of functionality. The snapping functionality you are familiar with is pretty much exclusive to the built-in transform operators: the bpy.ops.transform family. Pretty much every other operator is the wild west and does whatever it wants. Would it be nice if every operator that could utilize snapping actually used it? absolutely, but that’s not how it works right now, and probably won’t anytime in the near future considering the snapping functionality itself isn’t even feature complete yet.

1 Like

I agree with double A, it is a nice solution since knife is not a drafting tool.
The ability to temporairly ignore snap is a demanded feature as well.
Also it is interesting how much people need Polycross functionality. I’ve got some ideas of its enhancement here.

dbl A is reserved:
first click A - screen constraint
second click A - local constraint
third click A - Off
so how it should behave with dbl A idn…

move “Off” to fourth click and on third click add this …?

I think 3 clicks on same modal key is to much, 4 clicks - you can lose yourself in it=)

Adding new modal key - there is no screen space for it already…

Found another bug with Local constraint.
It related to my previous notes about edge area.

  1. If you use knife with local constraint to the edge where adjoined face is hidden from view, constraint did not work.
  2. cant describe, see video part two, where after clicking on other edge constrained cut is disappear
  3. local constraint lose constraint angle
1 Like