Fast Loop

Fast Loop

Version: 0.0.8 Alpha
Tested with Blender 2.91 and 2.93 Beta

What is Fast Loop?

Fast loop makes inserting new loops easy. With the ability to preview the loop(s) before actually inserting them, you dont need to worry about making adjustments afterwards.
With the following modes you can cut the time it takes to insert loops in half or more*:

  • (S)ingle: Insert a single loop.
  • (M)irrored: Insert two loops. Positions are mirrored across the center point of the edge.
  • Mutli Loop(N): This one can insert more than one loop.
    • There is one option specific to multi loop. That is multi loop offset.
      mutli loop offset offsets the loops so that one of the loops is under the cursor. This gives additional control of how/where the loops are placed.
    • ctrl+mouse move changes the scale (spacing)
    • mousewheel changes number of loops to be inserted
    • ctrl+mousewheel changes viewport zoom

All modes support (E)ven and (F)lip Options.
*Depends on how many edges you are cutting and how many new loops are being inserted. It may take longer. Also this claim is made up.

Snapping

  • Enable(I) snap points to snap the loop to evenly spaced points along the edge.

  • (L)ock the points to prevent them from moving when a loop is inserted, allowing you to add additional loops with the same spacing along the edge.
    Locking also keeps it from moving when hovering over different edges.

  • When snap divisions is set to one, use the factor slider to set a custom percentage to snap to. You can press F to invert the value to flip to the other side.

Fast loop isn’t just for inserting loops. You can alter exising loops by sliding them around or removing them too.

  • To slide the selected loop or edge(s) press and hold alt to invoke the edge slide operator and then click and drag.

    • holding ctrl while pressing alt makes the loop even depending on what side it’s on
    • holding shift while pressing alt tries to preserve the loop’s shape

    When you are done release alt.
    Switch to Select Loop mode to select a different edge.
    Remove loops by switching to Remove Loop mode.

See notes down below for more info.

What is Fast Loop Classic?

Fast Loop Classic is a trimmed down version of Fast Loop.

  • Click to insert a loop.
  • shift+mouse click to insert a loop with flow
  • ctrl+mouse click to select a loop
  • ctrl+shift+mouse click to remove a loop
  • To slide the selected loop or edge(s) press and hold alt to invoke the edge slide operator and then click and drag.
    • holding ctrl while pressing alt makes the loop even depending on what side it’s on
    • holding shift while pressing alt tries to preserve the loop’s shape

Edge Slide

The operator that both versions of fast loop use can also be a standalone operator.
When invoked directly using the shortcut alt+` it behaves differently and has an additional feature.

  • Click and drag near a vertex to slide selected edges or loops in the desired direction. Sometimes this doesn’t behave very well when selected edges share a vertex.
    If you cannot get it to slide in the right direction, rotate the viewport and/or select a different vertex on the loop or edge.

  • ctrl+mouse click and drag to make the edge even.

  • shift+mouse click and drag to try to preserve the loop’s shape

  • Edge constraint translation of selected edges or vertices

    • Press X, Y or Z to toggle edge constraint slide on their respective axis.
    • Press S to toggle selection mode. Warning: This just passes through all input. It’s possible to invoke any operators.

Supported orientations:

  • Global
  • Local
  • View
  • Cursor
  • Custom

Install:

  • Download the zip file from github.
  • Open Blender.
  • Edit → Preferences → Click Install button and choose the zip file you downloaded.
  • Click the Add-ons button on the left and then activate the addon by ticking the checkbox.

To use:

Fast Loop

  • Click on either Fast Loop Classic or Fast Loop Toolbar button to activate the active tool version.
  • Alternatively, use the shortcut keys: insert or alt+insert for Fast Loop Classic and Fast Loop operators respectively.

Edge Slide

  • Use the shortcut alt+`

See the help tab under preferences for each operators hotkeys.

Notes

There are some slight differences in how Fast Loop and Fast Loop Classic are used.

Because Fast Loop has more features and does not use ctrl for anaything but scaling (ctrl+mouse move) and zooming the viewport(ctrl+mouse wheel) when multi loop mode is active

Rather than using ctrl+mouse click to select a loop or ctrl+shift+mouse click to remove a loop,
you must open the right click pie menu to change the mode.
If you are using the active tool version, you can change the mode in the active tool panel or the tool header as well.
Lastly, since right click is used to open the pie menu, there is a button in the top right to exit the operator. When using the active tool you can just change to the select tool or w/e

These are terrible UI/UX choices for Fast Loop. I’m looking for suggestions to improve them.

Requires the Edge Flow addon which can be found here:

Get it here:
Jrome90/Fast-Loop (github.com)
Bmesh errors can occur at times.

9 Likes

Awesome I’ll try this out and let you know how it goes while i work today!

Ok so not sure if I’m doing something wrong but edge slide keeps you stuck in edge slide you can’t right click to cancel or click to confirm nor does escape work and pressing alt + ` again does nothing as well.

Right click should cancel it when the standalone operator is used via alt+`.
Does it say selection in the top center with a white border around the 3d view?

That would prevent you from being able to cancel. Need to press S again to get out first.

So i figured it out if you have no loop selected then you hot key to edge slide then press one of the axis to restrain it will error my guess is because nothing is selected and it stays stuck in that mode.

It doesn’t seem to be stuck in the mode for me. It’s that the status bar doesn’t change.
Either way, it needs to not error.

Thanks for testing!

It’s no longer should error. Instead, for now it just does nothing.

So far this is a really nice tool for quickly adding support loops for subD modeling. Will play around with it some more.

1 Like

Do loops need to be selected first to slide them ?

Yes, loops or edges need to be selected to slide them.

1 Like

Not sure what happened insert and pressing the tool icon causes an error.

Python: Traceback (most recent call last):
  File "C:\Users\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\Fast-Loop\addon\ui\gizmos\gizmo_preview.py", line 37, in test_select
    element_index, nearest_co = self.snap_context.do_snap(mouse_co, active_object)
  File "C:\Users\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\Fast-Loop\addon\snapping\snapping.py", line 197, in do_snap
    return self._snap_object(self.snap_objects[object_.name], mvals)
  File "C:\Users\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\Fast-Loop\addon\snapping\snapping.py", line 219, in _snap_object
    ray_origin, ray_vector = utils.raycast.get_ray(
  File "C:\Users\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\Fast-Loop\addon\utils\raycast.py", line 7, in get_ray
    ray_origin = region_2d_to_origin_3d(region, rv3d, mouse_coords)
  File "E:\Programs\blender\3.00\3.0\scripts\modules\bpy_extras\view3d_utils.py", line 94, in region_2d_to_origin_3d
    viewinv = rv3d.view_matrix.inverted()
ValueError: Matrix.invert(ed): matrix does not have an inverse

location: <unknown location>:-1


This is awsome @Jrome thank you for developping this!
This was the most important tool that I was still looking for to have in Blender! :+1:

Some things I noticed are:

  1. If I press a hotkey to switch to another tool (Q) for selection, I can only switch tools if my mouse does not point at the mesh. This also means I cannot deselect using Ctrl+D while over the mesh.
  2. Maybe there should be a way switch zooming and increasing loops with the ctrl + mouse wheel and mousewheel respectively (since zooming is intuitively performed while scrolling).
  3. I noticed that when I lock points, it does not update the snapping point count, unless I toggle the locking on & off:
  4. Toggling set flow on/off in the right click menu does affect the inserted loops.

I did have difficulties invoking the Edge Slide mode regardless of whether I used the header menu, through the button in the right click menu or via the alt+` hotkey. I am not sure why exactly.

Feature requests:

  1. The ability to specify the number of loops by pressing a numerical key in the Multiloop mode. That might eliminate the need to have a Multiloop to begin with…?
  2. Keymapping the hotkeys, for instance, I would prefer to use S for enabling/disabling snapping.
  3. You could then opt to use S for snaps and F (Freeze) to lock points, this moves both keys to the left hand side of the keyboard.
  4. In Fast-Loop (advanced) there seems to be no way to switch to selection mode other than pressing the button on the menu header. Could that be hotkeyed?
  5. I think it may be good to be able to toggle set flow, Slide Loop Even, Adjust Loop Preserve space as well as Remove loops as modals in case they are used for longer duration. That would be less of an effort for the user :wink:

The feature set is really solid (especially for an alpha release), well done.

I’ve had this error a few times before. For no apparent reason it just breaks sometimes. I shrugged it off and forgot about it. Worst part is that I recall it doesn’t correct itself. I had to close blender :expressionless:

LOL well that sucks yeah i just saved and reset was working again.

  1. Yeah I need to restructure Fast Loop’s modal loop to pass through properly. It’s on the todo list.
  2. An option? or just switch it by default? I originally had it by default mouse wheel to zoom and ctrl+mouse wheel to increase/decrease loops.
  3. Yeah locking locks the points. Never thought to be able to change the number. But I see why it’s a good idea to be able to.
  4. To avoid confusion on my end: Does or doesn’t? Because that shouldn’t do anything right now. It should be removed. :blush:
  5. This is one I’m not sure about. Would it actually be useful?
  6. The ability to do modal keymapping is something I would like to have. I’ll see if I can come up with something.
  7. Good points. I will change it. What should (S)ingle mode be mapped to?
  8. All hotkeys were intended to be the same as classic but ctrl+scale and ctrl+mouse wheel with multi loop broke it. I’m not satisfied until both select loop and remove loop are using ctrl+click and shift+ctrl+click respectively. There is another way to switch modes, it’s the right click pie menu. In fact it’s the only way for the modal operator (insert on the keyboard) :expressionless:
  9. Toggling set flow would need a hotkey too I’d think. No idea what key though
    Remove loops is a mode in the advanced variant that acts like a modal. Are you proposing a standalone modal operator?
    In an attempt to keep both variants the same in terms of hotkeys,
    the edge/loop slide stuff is meant to be activated while holding the alt key down with ctrl or shift acting as a modifier to change how the loops/edges are altered.
    The classic variant should be familiar to some people :wink:
1 Like

Well in that case, zooming to the mouse wheel should be the default imo (adding loops ctrl + mouse wheel). You are able to navigate around the model anyway while the tool is active. I asked for an option presuming you had a different preference.

Oops, typo, :sweat_smile: it doesn’t do anything, although it is in the menu. I actually do see use of this button in the menu if it works as you would expect it to. :wink: The ‘modifier key Set Flow’ would then act as reversal of the button setting instead of enforcing Set Flow at all times.

The way I see it is it allows you to reduce modes (unless you have particular features in mind that are specific to Mulitloop mode?). With a pen tablet, you don’t have a scroll wheel, which is why Machin3 opted to use 1 and 2 keys for adding/ removing (thus mimicing scrolling).
Second, you’ll have to switch modes anyways for multiloop (as is) which is equal to one user input, typing a number is equal to that while it sets the loop number in addition, thereby actually reducing input.

I see two possible implementations: numerical input could be an “always active” field, so it remembers inputs, pressing 1, and later a 3, results in 13. Though I doubt anyone would insert more than 9 loops, so 1-9 would probably be sufficient.

Considering 6. I would say the 1 key. :slight_smile:

Personally, I use Alt to “constrain” geometry, Alt+S (think of the S as a smooth curve) for Set Flow, Alt+\ for straigtening loops, etc. I guess making this one user configurable would be the way to go, so people use the same hotkey for Set Flow in Fast Loop as they are used to using for the Set Flow addon itself.
For Remove Loops I am indeed proposing it to have a stand alone modal operator (so you won’t have to keep the modifier keys pressed on prolonged use).

Ah okay, I was confused by the slide mode button, which in fact turns out not to have a seperate mode, if I understand you correctly. In that case, it works as you would expect it to.

To some, now, ancient loopcut tool that isn’t on steroids like this one :wink:

I’ll have to think about the Fast Loop (classic) and (advanced) hotkeys for a while. Ctrl to select would be the way to go, indeed. Mmm…

My preference is removing the need for ctrl to unify the hotkeys.

Oh this is what you meant. I like this idea.

You only need to hold the keys for classic. For the advanced variant it’s a mode that is toggled.

It’s confusing no doubt. I don’t like that it’s there. The edge slide is a mode and all modes are defined by an enum. The UI displays each enumeration(mode)
I don’t think there is a way to control what is included in the UI from enum properties

@Hologram I created an experimental branch that has the following changes:

  1. R key replaces F key to flip sides when even is enabled
    F key replaces L Key to lock the snapping points
    S key replaces I key to activate incremental snapping

  2. scroll wheel changes the viewport zoom

  3. numbers 1-9 on the keyboard change the number of segments.
    the keys (=, num+ ) and (-, num-) can increase or decrease the number of segments.
    ctrl + scroll wheel remains an option too.
    Automatically switches between single and multi loop modes based on the number of segments.

  4. You should be able to change the number of snapping points while they are locked.

Jrome90/Fast-Loop Experimental Branch (github.com)

2 Likes

@Jrome it works really nice like this. And I really like how you also addressed key pass through (which definitely is worth mentioning here too! :smiley:). Perfect!

A few remarks on the experimental addon:

Small note:

Please don’t forget to change the addon’s preference keymap options as those still mention the old buttons.

  1. Mirrored mode and Multi Loop don’t seem to be fully compatible with each other, as Mirrored mode does not accept any higher cut number inputs.

  2. I somehow managed to have snapping points visible even after exiting the tool, I have yet to reproduce this behaviour so I don’t know what the cause could be. They even remained after deleting the mesh somehow :thinking: I’ll keep an eye on it.

  3. I was thinking, for the Classic vs Advanced keymap issue: perhaps it’s an option to use the W key for changing the scaling (Width)? This is what Mesh Machine uses it for (and it works like a modal instead of as a modifier key to be pressed). It would allow you to use Ctrl for loop selection :wink:
    W in Mesh Machine:

Then I have three questions:


  1. What does the offset value mean? I have only seen it at zero or 000.0001 values.

  2. Is it an option/ could it be an option in the preferences to list the Modal hotkeys in the top bar, like so: (E) Even: False, (R) Flipped/Reverse: False, etc.

  3. With the monkey mesh, since the quads are very different in terms of size, do you think it’s possible for the scaling to extend on the larger faces, while the lower ones remain the same (as if clamping values that approach edges, whilst enabling other parts of the loop to be scaled)?

I won’t. Since it’s experimental, I decided to not change that yet. T hanks for the reminder though.

You’re right they aren’t. Mirrored mode is the same as single with an additional mirrored second loop.
I’ll see if I can get something working. Make mirrored mode a sub mode then. :thinking:

Thanks for letting me know it still happens.

Thanks for suggestion. Indeed that will free up ctrl :slight_smile:

Offset is the distance from the first vertex on the edge that is hovered over with your mouse from where the loop would be inserted. If even is on it would be the distance from the the pink dot.
The distance is some unit of measurement (meters or Bl units? I don’t even know)
Ideally it would be converted to the units that blender is set to, but the precision of the conversion was off.

I suppose I could make it an option.

Whats happening here is that I way toying with the option to make it so the spacing between loops was even. I should’ve commented out that line code. :blush: