Page MenuHome

Add Retopology Mode as Snapping Option
Needs ReviewPublic

Authored by Jon Denning (gfxcoder) on Jul 8 2022, 5:56 PM.

Details

Summary

This commit adds a retopology mode to snapping options.

When retopology mode is enabled, the following "filtering" is applied to
the enabled snapping options:

  • Vertex, Edge, Edge Center, Edge Perpendicular snapping methods apply only to edited objects.
  • Face Raycast and Face Nearest snapping methods apply only to non- edited objects.

Note: the snapping method(s) and target selection options still need to
set/enabled in order for snapping to happen.

Previously, Blender's snapping options were universally applied to all potential targets, which is not ideal for retopology work.

For example, an artist may wish to retopologize a highly tessellated mesh, perhaps one that was created using dyntopo sculpting tools. Vertex snapping allows the artist to snap geometry of source (low res, retopo mesh) to itself, which is especially useful with automerge enabled. Face Raycast snapping allows the artist to snap the source geometry to the target (high res mesh being reconstructed), which is critical for retopo work.

However, with Vertex snapping enabled, transformed source geometry would also snap to the vertices in the target mesh, which could be very frustrating when working on a highly tesselated mesh. Furthermore, Face Raycast snapping could snap source geometry to faces of source object rather than the underlying target object, which is likely not what the artist intended.

The retopology snapping mode limits which methods are applied to potential targets. Note: the snapping method(s) used is/are still ultimately controlled by which snapping methods (called "Elements" in snapping menu) are enabled, and the snapping targets are still controlled by target selection options. This new retopology mode only filters down which methods/targets are considered.

Diff Detail

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

Event Timeline

Jon Denning (gfxcoder) requested review of this revision.Jul 8 2022, 5:56 PM
Jon Denning (gfxcoder) created this revision.
Jon Denning (gfxcoder) retitled this revision from Added retopology snapping mode option. to Add Retopology Mode as Snapping Option.Jul 8 2022, 6:22 PM
Jon Denning (gfxcoder) edited the summary of this revision. (Show Details)

I'm not sure if this is something that you're interested in reviewing, @Germano Cavalcante (mano-wii), but would you mind taking a look at this?

Personally, I'm not very comfortable with adding more and more options for snapping. Especially when the benefit is very specific and unclear.

I would like to see options that benefit all areas (I have a personal interest in precision modeling for architecture).

I feel that by adding more and more options, we are making the interface confusing. This hinders the learning of new users and the addition of new features.

Is there any discussion of what the final plans are in this area with user feedback?

You're absolutely right that this patch is very specific to retopology work. I'm not sure what you mean by the benefit being unclear, though.

The current snapping settings were far too simplistic to do retopology work without much effort on the user. We ended up writing our own snapping routines in RetopoFlow, because Blender lacked the implementation (nearest face snapping), the exposure of functionality through bpy (pretty much all snapping options through bpy.ops.transform.*), and the control of those features (vertex snap to source geo only, face snap to target only, ability to snap to non-edit objects, ability to prevent snapping to non-selectable objects, etc.). Some of these issues have been addressed through my previous patches, and this patch is adding more control over snapping.

I have outlined this work in T95584: Retopology in Blender (recently updated) and several other docs linked therein. If it would be helpful, I can add to this thread more detailed arguments for why this control is necessary for retopo work.

I'm in the process of updating the blender manual regarding the snapping options. But with more patches to upload that clean up the options and make them clearer, I have waited to submit the changes to the manual.

I've split this work up over several patches (with more to come) to make reviewing easier, but I'm afraid that that splitting the work up has lost the forest for the trees. These smaller patches are a means to an end, but there is still much more to do to get to the end.

It would great be to able to include precision modeling (CAD-like), but that's out of my area of expertise and well beyond the scope of my work. If other devs are interested in collaborating, I'm more than happy to start that conversation, but I'm not planning to spend too much of my time on enabling CAD-like work.

I have discussed with stake holders earlier on in this project. I will ping them again to get some additional thoughts and feedback.