Page MenuHome

Curves: Support symmetry in curves sculpting brushes.
ClosedPublic

Authored by Jacques Lucke (JacquesLucke) on Apr 28 2022, 5:40 PM.

Details

Summary

This adds support for X/Y/Z symmetry for all brushes in curves sculpt mode. In theory this can be extended to support radial symmetry, but that's not part of this patch.

It works by essentially applying a brush stroke multiple times with some transform. This is similar to how symmetry works in mesh sculpt mode, but is quite different from how it worked in the old hair system (there it tried to find matching hair strands on both sides of the surface; if none was found, symmetry didn't work).

Diff Detail

Repository
rB Blender

Event Timeline

Jacques Lucke (JacquesLucke) requested review of this revision.Apr 28 2022, 5:40 PM
Jacques Lucke (JacquesLucke) created this revision.
  • Merge branch 'master' into curves-sculpt-symmetry
  • use symmetry in remaining brushes
  • use matrix for symmetry, this can also support radial symmetry (there are no ui options for this yet though)
  • don't use use_mesh_mirror_x on Object in rna
Jacques Lucke (JacquesLucke) retitled this revision from Curves: Support symmetry in curves sculpting brushes. (WIP) to Curves: Support symmetry in curves sculpting brushes..May 2 2022, 11:19 AM
Jacques Lucke (JacquesLucke) edited the summary of this revision. (Show Details)

This looks mostly good, it's nice that using a transform allows for more complex uses of symmetry in the future.

I'm skeptical of the implementation for the delete brush though-- it looks like the actual delete operation is done potentially 8 times.
It would probably be better to keep track of all of the curves to remove then only do the actual deletion once.
Maybe this could be implemented with a more general utility to merge several IndexMasks (one from each symmetry transform).

source/blender/editors/sculpt_paint/curves_sculpt_intern.hh
56
  • Merge branch 'master' into curves-sculpt-symmetry
This revision is now accepted and ready to land.May 3 2022, 7:40 PM