Maniphest T48365

Bridge tool fails in a few cases
Closed, Archived

Assigned To
Campbell Barton (campbellbarton)
Authored By
Leon Cheung (leon_cheung)
May 7 2016, 3:38 AM
Tags
  • BF Blender
Subscribers
Campbell Barton (campbellbarton)
Leon Cheung (leon_cheung)
Sergey Sharybin (sergey)

Description

System Information
Win8.1 64bit | GTX680

Blender Version
Broken: v2.77 3045011
Worked: N/A

Short description of error
After testing the fix for T48356, I found there are a few other cases failed. Not sure if it deserves further attention.

Exact steps for others to reproduce the error

Related Objects

Mentioned Here
rBe0e7d94f79a5: Fix error introduced by removing faces before executing bridge
T48356: Bridge tool creates self-intersecting loop bridges

Event Timeline

Leon Cheung (leon_cheung) created this task.May 7 2016, 3:38 AM
Leon Cheung (leon_cheung) raised the priority of this task from to 90.
Leon Cheung (leon_cheung) updated the task description.
Leon Cheung (leon_cheung) added a project: BF Blender.
Leon Cheung (leon_cheung) edited a custom field.
Leon Cheung (leon_cheung) added a subscriber: Leon Cheung (leon_cheung).
Campbell Barton (campbellbarton) added a subscriber: Campbell Barton (campbellbarton).May 8 2016, 6:46 PM

Currently the method used to calculate bridge direction relies on the face regions _not_ being planar to each-other.

Probably the best solution in this case is to always use the use the face winding when its defined for both loops (instead of relative orientation).

Campbell Barton (campbellbarton) added a comment.May 9 2016, 8:23 AM

Note, rBe0e7d94f79a512dd33d2f8cdf1685112a8327674 fixes the cases where boundary edges were being removed.

Campbell Barton (campbellbarton) lowered the priority of this task from 90 to 50.May 9 2016, 10:46 AM
Sergey Sharybin (sergey) assigned this task to Campbell Barton (campbellbarton).May 17 2016, 5:52 PM
Sergey Sharybin (sergey) added a subscriber: Sergey Sharybin (sergey).
Campbell Barton (campbellbarton) changed the task status from Unknown Status to Unknown Status.Aug 3 2016, 6:32 AM

Summary if the problem, bridge is split into 2 steps.

  • The bridge is calculated and connected.
  • The edges from the bridge are then subdivided and made into a curve.

In the case where both loops are on a flat plane, its possible that the curve direction selected is different to the winding direction used when connecting the bridge.

For this to work as expected, either:

  • the bridge normals used for calculating the initial bridge would need to be passed to the subdivision function.
  • the winding of faces would need to be evaluated to calculate the normals for the curve.

Note that its possible to use an entirely different method of calculating handles, however this would need to be applied only for flat cases, which are tricky to detect since there would be some threshold which loops would not be considered flat, and this may give unpredictable behavior.

This whole situation is kind of a corner case, when bridging between 2 loops which are exactly aligned next to eachother, then applying curvature -it's not very obvious what the outcome should be regarding curvature. Using face normals one can be selected, so its possible of course. But still something the bridge tool isn't really setup to solve well.

Closing this report. If someone likes to solve its fine, but this is really at the limit of whats supported by this tool.