Smooth brush in sculpting mode breaks edit mode symmetry
Closed, ArchivedPublic

Description

System Information
Win 8.1, GTX1070

Blender Version
Broken: 2.79RC1, 2.78c

Short description of error
The smooth brush in sculpting mode breaks edit mode symmetry. Which means it isn't 100% accurate. Of course this isn't really a problem when doing any pure dyntopo style sculpting and all you're after is a high poly mesh for baking/retopo and so on. It is a problem however when using sculpting as a poly modeling tool in tandem with edit mode proportional editing.

In reality it means that when working on characters you have to keep in mind to keep in mind whether your character really is symmetrical or not when switching between sculpt mode and edit mode. If you have broken symmetry by using the smooth brush in sculpting mode (or the smoothing "mode" of any brush) and continue working on your character you can quickly run into problems, especially if you use shapekeys and happen to mess up the basis key. You would then have to use Symmetrize or similar workarounds and hope that the symmetry is restored in the way you expect.

Maybe the Smooth brush works in this way because it's more performant (which would be good for dyntopo sculpting) but performance isn't really an issue most times when using sculpting as a poly modeling tool. For example the characters I make are at most 100k polys. I can sculpt at realtime speeds at at least 2 million tris. This means that a perfect symmetry version of the Smooth brush could be ten times slower without me even noticing.

Without sculpting working reliably I have resorted to using a mirror modifier for the whole workflow instead of using the sculpting symmetry at all. This method works but is kind of a mess because you rely on addons for applying mirror modifiers on meshes with shapekeys, working with UVs which shouldn't be mirrored and other issues. Still it's more reliable and harder to mess up your characters which is regrettable because the ability to use sculpting for poly modeling is a very cool feature in Blender. If this issue was fixed and you could use sculpting and edit mode proportional editing without worrying about symmetry it would make character creation workflows a whole lot smoother.

Exact steps for others to reproduce the error

  1. Create a new file and add a cube (or use a cube if it already exists).
  2. Add and apply subsurface modifiers with the Simple algorithm until you've got a reasonable amount of tris, maybe 50k.
  3. Enter sculpting mode and select the Smooth brush, enabling X mirror (symmetry).
  4. Sculpt the edges of the cube until it has slightly rounded edges.
  5. Enter edit mode, enable X-mirror and proportional editing (increasing the radius until it's big enough).
  6. Drag the edge of the cube. The symmetry has been broken and some vertices are not affected at all. Operators such as Select Mirror confirm this.

.blend:


Layer 1: cube before sculpting. Layer 2: cube after sculpting with broken symmetry.

Details

Type
Bug
Bastien Montagne (mont29) triaged this task as Confirmed priority.Aug 8 2017, 12:55 PM

Afraid this is yet another floating point issue, not really a bug. Our current (fixed) threshold to detect mirrored items is #define BM_SEARCH_MAXDIST_MIRR 0.00002f, which will not work when an item's coordinates have been applied more than a few operations (example of failing-to-mirror cos: -62.499916 vs 62.5…).

@Campbell Barton (campbellbarton), instead of adding yet another userpref, why not simply use the Double Threshold value for that as well?

You did not mention Snap to Symmetry operator available in edit mode.
https://docs.blender.org/manual/en/dev/modeling/meshes/editing/basics/symmetry.html#snap-to-symmetry

It should help you to work around the issue. As an edit mode tool, it should also work on shapekeys.

Sergey Sharybin (sergey) closed this task as Archived.Sep 13 2017, 4:30 PM
Sergey Sharybin (sergey) claimed this task.

Accumulated error might be quite hight, so any epsilon will fail sooner or later. As was mentioned by @ronan ducluzeau (zeauro), for such cases you can always resort to Snap to Symmetry operator, which has all required knobs to bring mesh back to perfect symmetrical state.

So thanks for the report, but it's rather limitation than a bug in design.

So what should you do when you don't notice that the mirroring has failed and snap to symmetry also fails?

If snap to symmetry fails with large enough threshold, there is no easy way to solve it. In some models using topology mirror will be the way to go.

Or he can do it manually delete the edge loop close to the center and L key select the unwanted part and then delete it, add mirror mod. and then apply it.