Page MenuHome

Refactors and simplifies loop sliding code; changes loop sliding to clamp to edges.
Needs ReviewPublic

Authored by Dennis Ranish (dennisranish) on Jun 21 2022, 1:03 AM.
This revision needs review, but there are no reviewers specified.

Details

Summary

Reasoning behind changes...

  • offset_on_edge_between is only called when offset_meet_edge returns true for both sides of emid (ok1 and ok2). The code for cases when they are not both true are removed. Note that all cases now return true.
  • offset_meet_edge is called twice with the same inputs. Instead good_offset_on_edge_between is merged into offset_on_edge_between.
  • The special case for absolute and percent is moved to offset_meet_edge and simplified by using the offset in the EdgeHalf data.
  • offset_meet_edge_co is added to find the meeting point along an emid, taking into account the offset type and clamping the meeting point to the edge.

This fixes T95335.
Note that this issue is caused by loop sliding along an edge just under 180 causing the optimal meeting point to be far off in the distance. This change clamps the meeting point to the edge, but a squashed bevel is caused. For the best result disabling loop sliding works best.


This shows how loop sliding clamps to edges.

Diff Detail

Repository
rB Blender
Branch
loop-sliding-refactor (branched from master)
Build Status
Buildable 22607
Build 22607: arc lint + arc unit