ousnius / BodySlide-and-Outfit-Studio

BodySlide and Outfit Studio, a tool to convert, create, and customize outfits and bodies for Bethesda games.
GNU General Public License v3.0
290 stars 64 forks source link

"Affect only one vertex" option for brushes #415

Closed sts1skj closed 2 years ago

sts1skj commented 2 years ago

Currently, if you want to use an Outfit Studio brush (such as move, inflate, weight paint, or smooth) on exactly one vertex (or two if x-mirror is on), you have to adjust the Brush Size so that the brush is small enough to only hit one vertex. You also have to click close enough to the vertex so that it's well inside the brush radius. So I have to constantly adjust the Brush Size and precisely position the mouse pointer to get the various brushes to do what I want.

It would be nice if there were some option for the brushes that limited their area of effect to just one vertex (or two if x-mirror is on).

The usefulness of this option would vary by brush, depending on what proportion of the time I want to use that brush on just one vertex. Here are my estimates per brush:

Note that the mask brush already has a single-vertex alternative: the Select tool with the Vertex Edit option.

sts1skj commented 2 years ago

Assuming we want to do this, I think the main issue is how to present the option in the user interface. The actual functionality would not depend on the presentation in the user interface.

Idea 1: add a new option toggle: Affect Only One Vertex. When this option is on, the existing brushes would affect only one vertex (or two if x-mirror is on). Maybe the Size and Focus brush-setting sliders would disappear when this option was on. Maybe the brush tool icons would change to indicate their different functionality when this option was on. The brush radius should be hidden, and the affected vertex highlighted instead. A new icon would be needed for the new option's toolbar button. The option's toggle button should probably be added to the same group as X Mirror, Edit Connected Only, and Global Brush Collision.

Idea 2: same as idea 1, only instead of adding a new option, repurpose the existing Vertex-Edit option. Right now, if Vertex Edit is on:

As far as I know, the Vertex-Edit option has no other effect.

For idea 2, the existing functionality of the Vertex-Edit option would be deleted, and its icon re-used for the Affect-Only-One-Vertex option (which could still be called Vertex Edit, if "Affect Only One Vertex" is too long).

Idea 3: create one or more new single-vertex tools: a move-one-vertex tool, a weight-paint-one-vertex tool, and so on. If we did them all, that would be nine new tools, expanding the size of the horizontal toolbar by about 50%.

Idea 4: add an Affect-Only-One-Vertex checkbox to the Brush-Settings window. It would work the same as idea 1, but no new icon would be needed.

Any more ideas for how this option could be presented in the user interface?

I currently favor idea 2 (repurpose Vertex-Edit).

sts1skj commented 2 years ago

Another question is whether it would be better to do a "Limit Number of Affected Vertices" option instead of the "Affect Only One Vertex" option. This option would need a slider, perhaps in the Brush-Settings window, to control the maximum number of vertices affected.

I wouldn't expect this fancier option to be useful. I don't think it would be much more difficult to implement.

GrafPanzer commented 2 years ago

I don't understand the utility of this. Currently, Vertex Edit allows you to unmask a single vertex to isolate it for editing. Doesn't this already give you the effect you're proposing?

sts1skj commented 2 years ago

@GrafPanzer That's an excellent point. I didn't think of that.

sts1skj commented 2 years ago

In light of the insight provided by GrafPanzer, I am now inclined to abandon this feature request. Does anyone still want it?

ousnius commented 2 years ago

While having to mask/unmask everything/one vertex only to be able to do an action on said vertex isn't really a user-friendly experience, I'd also agree that making a specific feature (that maybe clutters the UI some more) for it isn't needed right now.

themilkdrinker0 commented 2 years ago

I don't see how it would clutter the UI, in Softimage, you press "M" and you can go around moving vertices, "Space" toggles any current tool off. A single vertex tool would be useful to fix sliders in new outfits, and this could be a base feature for snap/merge vertices.

sts1skj commented 2 years ago

@themilkdrinker0 Would you prefer a single-vertex-move tool that is distinct from the existing move brush? Or would you prefer a single-vertex toggle button that changes the behavior of the move brush?

themilkdrinker0 commented 2 years ago

A distinct tool might be better, it's usually a good idea to have mesh editing and sculpt tools separated, which is something you guys can implement in the future for the UI, a mesh editing mode and a sculpt one, this would unclutter the UI by hiding/unhiding related tools as needed.

sts1skj commented 2 years ago

@themilkdrinker0 Do you think we should have single-vertex tools corresponding to every existing brush? Or just one, a single-vertex move tool?

(The brushes are mask, inflate, deflate, move, smooth, undiff, weight, color, and alpha.)

themilkdrinker0 commented 2 years ago

No, just a single vertex move is enough.