Thoughts on snapping

I’ve been thinking and experimenting for a few days.

I believe that no matter how hard it is to implement hotkey controls, snapping without a hotkey is unnecessary. There are many places where snapping is frankly inappropriate. Anything to do with connecting links - it starts to feel like something that slows things down (at the very least you need to disable snapping when dragging a link).

Almost all my thoughts these days can be boiled down to this short idea. It’s a very cool thing, but the inability to control snapping negates almost any attempt to like it. Snapping in any application is an incredibly complex system with lots of fine-tuning and internal hints; without proper attention to detail and a huge amount of extra rules, snapping in its purest form will give the feeling of a janky, choppy, non-fluid interface.

I use Adobe Illustrator a lot (I master it) and I know very well how Smart Guides and other snapping techniques work there. And I can tell you that it’s often hard to get something to snap to something, precisely because in complex projects, if it worked the way it does now in Gamma, it would become a confusing user experience.

I also have a lot of experience with CAD (Fusion360, KiCAD) and there’s also snapping (especially in sketches). And there’s a lot of ‘magnetic’ logic where you have to be attracted to something in a meaningful way before snapping starts.

I could go on and on. But my thoughts boil down to two things: snapping should be much smarter and have much more internal logic, and snapping MUST be hotkey driven (and it’s not clear how it should work properly: enable or disable snapping on hotkey).

1 Like

Also, it looks like snapping puts a load on the interface (or something). I’ve noticed that when I select a large number of nodes (I’ve selected operation descriptions), dragging them across the workspace noticeably reduces the FPS of that process, when individual nodes are dragged at the highest FPS.

Disabling snapping fixes this problem.

Hey,

Though I agree the current behavior of snapping can be perfectible, I would never go back to not using it. Calling this “clunky” or “janky” feels a bit unfair to me.

The fact that it snaps while dragging a link helps to keep things nicely aligned, though maybe the magnet feels a bit “too strong” for cases when you actually do not want a straight line above the pin.

I also noticed that sometimes you don’t exactly control what is snapped to what. For instance, since I’m dragging a node here, I would expect the system to understand that I want to snap to another node, and not try to align a pin with something.

snapnode

So far that’s the only thing that’s been bothering me, along with the strength being a bit too strong for my taste.

Having it enabled by default without having to use a shortcut is also fine for me, because if we can control the strength of the snapping, I don’t see why I’d want to get rid of it.

7 Likes

Totally +1 with @sebescudie on this.

My main request right now would be to have a similar vertical align actually!

I’m also a big user of complex CAD (Rhino) where snapping is on another level, but in visual coding environments, snapping is litterally just an aesthetic tidying assistance. It is not a technical requirement for drawing industrial geometry.

I’m glad of something straightforward here in vvvv, to tidy things up with very little annoyance which will always be way more unsignificant compared with aligning all things up manually anyway.

My two cents 🫶

I agree, although I was trying to convey a feeling. Consider it an hyperbolic statement

Yes, that bothers me.
It’s not clear if straight lines are worth these jumps in the interface. The magnet is definitely too strong.

That’s pretty much what I was talking about above. Need Smart Rules, not sure if that’s even possible.

Would be very nice.


Don’t get me wrong. Gregsn does this sort of thing incredibly cool, seeing it through to the end. I’m sure it can be very comfortable. I just want to see a sharp discussion on the subject, so that we are not all satisfied with some half-measures in the end.

I still think the ability to disable snapping by hotkey should be implemented.

Chances are that doing something with the magnet (or its strength) would make it much more convenient. But I don’t think this is limited to what needs to be done in the Smart Rules area.

1 Like

That makes sense.

Then maybe a shortcut could be handy when you want to force the snapping to something different than the default behavior.
For instance : nodes would by default snap to nodes only. If you want to snap to something else, be it a pin or an IOBox, you’d force it with a modifier key. Only then it would attempt to snap to other stuff (and, slightly offtopic, color the guide differently to let you know you’re doing something different)

In the same fashion, by default an IOBox would only snap to pins or other IOBoxes/data hubs, but you could force them to snap to a node if you need to.

Have not thought this through too much tbh, but happy to discussss

2 Likes

Great!
Thanks for the input already!

modifier key

I guess at some point we should have a modifier key allowing to quickly enable/disable snapping temporarily.

Still, I would try to strive for a somewhat magic solution that doesn’t force the user to hover the modifier key constantly in order to get the layout right.

Layouting should feel taken care of already for most cases since 90% of your brain should be free to focus on the semantics of your patch, not the layout.

But yeah. Let’s keep in mind that you want to be in control, thus you want to be able to easily overrule the snapping algorithm.

feelings. janky, choppy, non-fluid

My first attempt at snapping didn’t feel this way, but I wasn’t quite happy.
In my first approach, I only did the snapping in the moment when you did an action like ending a link by creating a node.
However, I wasn’t quite happy with that approach as it violated the WYSIWYG idea.

There might be a sweet spot between showing what you’d get and fluidity.

flaws

Please don’t hesitate to post GIFs showing when snapping fails. Point out what you would have expected to happen. Try to be as clear as possible. I might have missed a case. I can understand that sometimes it isn’t that easy to pinpoint, so giving fuzzy feedback is also valid, but the more concrete the better to address the issues.

Keep it coming

I’d say there’s a very small group of us early adopters (people using the latest preview versions).

Please, anyone who has been using this for a few days and has experience with extended patching (several hours in a row), please disable snapping. And try to ask yourself - did it get easier or not?

I turned it off a couple of days ago and experienced relief.I guess the main thing that bothers me is the inner fatigue. It’s as if you’re constantly having to tear something away from something and it still doesn’t fit where it’s supposed to. It happens in steps rather than a continuous flow. It’s often small things, but because of the constant flow you get tired at the end of the ‘session’. That doesn’t mean I don’t want to turn it back on and help polish it. I just want everyone who uses it to try turning it off and tell how it feels.

I really like this thing and believe it will turn out well. Please don’t think I’m criticising, I’m just trying to encourage thinking to get a better feature.

After I turned on snapping - never going back.

3 Likes

@chk Have you given it a try? Or did you decide that it just wasn’t for you?)

I mean, I will never ever patch without snapping again.

@chk I get it, the main joke is this)
Won’t even try to switch it off?)

I did, but I will never do that again. Most frustrating minute of my life!

2 Likes

Hey, I’m wondering if there might be a way to create a Rule Table that we can adjust? It would be great if there was some kind of language we could use for snapping and playing around with customising the rules.

Something like:

Pin <snaps> Pin <Up, Down>
Pin <not snaps> Pin <Last>
Edge Left <not snaps>...

If there were a bunch of elements in the working area that could potentially interact with each other, and we had a way to describe them, like using rules, magnetisations, capture modifiers, and other methods, then we could really tune this behaviour as finely as possible.

I am with @yar . In its current form it feels a bit intrusive and makes patching too bumpy. For now (until the algorithm is improved) I’d like to decide myself when to snap and when not .
Switching back and forth by changing the setting will be tedious though and

seems to indicate that a modifier key is rather far off.

3 Likes

I’m up with bjoern. The key to disable snap would be nice

1 Like

or enable by the way!

isn’t SHIFT now free or obsolete?
i’d like if SHIFT just disables snapping while being pressed.

Maybe the key could just inverse the setting. If snapping is enabled in the settings the modifier disables it and vice versa.

3 Likes

I think the amount of snaps can be greatly reduced if the snapping between two nodes only happens:

  • To left align them,
  • To right align them, or
  • When the link between them is vertical

3 Likes