Page MenuHome

Fix T88060: Expand freezing when deleting a Face Set with multiple loose parts
ClosedPublic

Authored by Pablo Dobarro (pablodp606) on May 5 2021, 5:27 PM.

Details

Summary

When checking if the mesh has only one Face Set only the current active
component for expand needs to be checked. Otherwhise other components
that won't be modified by Expand that contain other IDs will be taken
into account, making the Face Set deletion go into an infinite loop.

Diff Detail

Repository
rB Blender
Branch
T88060 (branched from master)
Build Status
Buildable 14389
Build 14389: arc lint + arc unit

Event Timeline

Pablo Dobarro (pablodp606) requested review of this revision.May 5 2021, 5:27 PM
Pablo Dobarro (pablodp606) created this revision.
Jacques Lucke (JacquesLucke) added inline comments.
source/blender/editors/sculpt_paint/sculpt_expand.c
2083

I do wonder, why is the expand cache passed separately if it is part of SculptSession already?

This revision is now accepted and ready to land.May 7 2021, 1:15 PM
source/blender/editors/sculpt_paint/sculpt_expand.c
2083

The entire expand operator is coded assuming that the ExpandCache can be in a different place than the geometry source. Right now it is allocated in the Sculpt Session, but this should make easier in the future to refactor it replacing the SculptSession for something more generic.
For example, by just removing the references to the SculptSession and storing the ExpandCache in Edit Mode, it should not be hard to use it to create selections in edit mode.