Sculpt, Paint and UV tool improvements


(LetterRip) #1

Hi all,

I’m starting to get back into Blender development after a (very long) hiatus.

What tools, workflow issues, etc. do you feel are most pressing.

My personal goals are

  1. Get completed features from previous GSoC sculpt, UV, and paint that I mentored into head.
  2. Fix issues with current brushes (falloff, settings) so they work more intuitive
  3. Add more brush presets since nearly every (95% or so) brush available in Mudbox, Sculptris and ZBrush can be done in Blender with the available settings but for whatever reason artists haven’t figured out how to do so…
  4. Address some workflow issues and bugs

What I don’t plan to do (at least not in the near term) are big new features (ie a layer system for multires sculpting)

So what I’d like from you are

a) list of stuff available in GSoC/old blender builds that you would like to have in Blender Head (should be predominantly the GSoCs I mentored, though I might be willing to port other features if they aren’t complicated)
b) broken python scripts related to sculpt/paint/UV workflow you’d like to have working again
c) workflow frustrations and issues
d) brush presets that you have created and think might be useful additions to head
e) list of useful sculpt/paint/UV scripts and tools (so I don’t reinvent the wheel :slight_smile: )

No promises to address every issue raised - and will mostly focus on what I find to be funnest or most frustrating for my own sculpting and painting.

So far here are the ideas list - no promises for any of them in particular …

UI

  • On Surface Brush
  • Way to load brushes independentally from Blends (‘assets folder’)

Sculpt/Paint Stroke

  • Adaptive spacing from GSoC 2011 that was accidentally dropped during merge

General Brushes

  • Antialiasing for brush textures

Sculpt Brushes

  • Connected Geometry for Grab Brush
  • More brush default combinations for common workflows (Polish Brushes, Trim Brushes)
  • Sampling radius for brushes from GSoC 2011 that was accidentally dropped during merge
  • Silhouette Brush
  • Clip/Cut Brushes
  • Improved defaults for current brushes (especially grab)
  • Insert Brush
  • Curve Brush
  • Fill Area Brush

Paint Brushes

  • Splash prevention feature from vertex paint GSoC

Projection Painting

  • Improved workflow (autodisable common settings - *patch ready)

Sculpt Mode

  • Transparency for sculpted mesh so you can use reference images behind the mesh

Masking

  • Extract mesh based on mask
  • Vertex groups from mask
  • Blur mask flood fill
  • Sharpen mask flood fill
  • Cavity masking available in sculpt
  • AO masking available in sculpt

Pose Tool

Vertex Groups

  • Autocolorization of vertex groups visible in sculpt mode

Using vertex grouping for masking and hiding

Multiresolution Modifier

  • Layers
  • Interpolate higher resolution data instead of copy/delete when inserting/deleting loops
  • Hard edge support

Better Automated/Guided Remeshing

UV Tools

  • Nudge Sculpt Brush for UVs (*patch ready)
  • Iso formula for UV unwrapping (onion branch - incomplete though)
  • GSOC 2016 UV packing and other features

(Ace Dragon) #2

The PBVH acceleration from the GSoC branch should definitely be worked on (as vertex and weight painting are incredibly slow on complex meshes, especially if subsurf is involved).

Another thing would be that branch’s splash prevention feature (it looks to be quite useful).

On that, it’s always nice to see a longtime pillar of the community return (even better if they also played an important role in development). Welcome back :slight_smile:


(KarlAndreasGroß) #3

Hi LetterRip,
this sounds very good. Even tough i am pretty new into sculpting, i found that compared with zbrush two additional issues to the ones you’ve mentioned above should be taken into account:

  1. Sculpting layers
  2. Dynamesh (as it is named in zBrush)

togehter with a higher amount of default brushes, it would be way more usefull than it is today.


(theApe) #4

Always nice to see old developers coming back to Blender dev. All of the areas you mentioned could use some love, so I´m just here to show appreciation :slight_smile:

PBVH work was useful. Was the GSOC 2016 UV editing stuff ever merged into master? I trust others to know where work needs to be done :slight_smile:


(Michael W) #5

@letterip… great that you’re doing this!

EDIT: in the early blocking stages dyntopo is better IMHO than dynamesh and more optimal.
BUT as primary forms near final and i want an even mesh subdivison like dynamesh:

you can already have a dynamesh like workflow in blender:

  • add remesh modifier
  • set mode to smooth.
  • increase octree level until appropriate detail is met
  • apply modifier
  • optionally set object to smooth shading
  • continue sculpting!

i know that 4 steps instead of ctrl dragging the background can be a pain but in zbrush it takes a while for the calculation to go at higher res meshes. EDIT: so dyntopo in early stages and use aboveworkflow a bit later! it’s irritating in zbrush to accidentally trigger dynamesh and sit there for it to calculate!

this method won’t remove internal geometry but otherwise is pretty much dynamesh,

it would be fairly trivial to make a python script that has the octree level set (like resolution in zbrush) and make this a one button operation. Maybe Tom has some ideas that could improve this?

EDIT: of course even in zbrush dynamesh only gets you so far… you are still going to want to retopologize nicely before doing final detail sculpt! and yes, at that point you do miss sculpting layers!


(xrg) #6

Good to see you back. I never know how much work things are, but here goes one for Sculpt, Paint, and UV:


#7

The Grab brush having a topological proximity falloff would be a great addition to sculpting.

thank you
paolo


(Ace Dragon) #8

As far as I know, the inability of Blender to have stuff like this is why Jason Wilkens decided to embark on the ambitious Viewport FX project for the next three GSoC seasons.

That didn’t go anywhere (so the outdated OpenGL code would still be a blocker for 2.79). It should be possible for 2.8 though.


(Michael W) #9

Probably out of scope but the biggest workflow issue i have is if i create a set of custom brushes/alphas i want to be able to have them as defaults separate from blends. Ton changed user preferences a while back to have separate settings and default content. would be great to have settings, default scene and default tools (brushes, alphas, materials, node froups or whatever) without having to clunkily append or link this stuff… biggest bug bear! so annoying going back to an old file and realising the default weight paint brushes aren’t in that blend (it’s that old) and have to go through the whole appending assets into a new file to get your default setup!

else:
Zbrush has insert mesh… (or even insert multi mesh) it would be nice to be able to do this in sculpt mode especially when dynameshing rather than multi res-ing. not a big deal as i can just append or duplicate objects and then merge them… but many steps rather than having a custom tool (add , position, confirm)

zbrush curve brushes are lovely! you can easily create a tool with a start mesh, tiling centre mesh and end mesh and just scribble away…
it’s very fluid to edit the curve afterward (until your next curve is added).
the zbrush fluidity of lock start, end, taper profile and dynamically dragging you curve from any point is super nice!

this is all do-able in blender too but instead of create start middleand end polygroups: create curve brush, use curve brush (again and again) in blender you have to do soooo many more steps for each one… it’s very slow and clunky! think zippers, criss cross shoe laces, tentacles etc… just build a library of brushes in zbrush and you’re good to go! in blender it can be done but much harder and more bespoke and even if you build a library its still a pain to append and use!

multires breaks often… at least i can recover somewhat with brute force hi resmeshes, shrinkwrap modifier etc…

really like the trim tools in zbrush…

to be honest these days i use zbrush as a power tool more and blender if im doing lower res tweaks to morph targets or whatever…


(Michael W) #10

+1 So useful!!! :slight_smile:


(YAFU) #11

Hi.
Any improvement on Sculpt is going to be welcome!

I have a small request here :slight_smile: (Continues in message #6319)

And maybe resume the failed project in 2016?
https://wiki.blender.org/index.php/User:Inlinebool/GSoC2016/Proposal


(mandragora) #12

pbvh
optimize dyntopo
hole brush
trim curve from zbrush
extract with line/mask


#13

Would you work in the multiresolution modifier and make possible change between levels and fix the bugs that make hard (or impossible) use this tool_?


(czerw) #14

Hello,

Topological grab brush and trim curve as mentioned before would be very usefull.

One thing that I totally abuse in Zbrush and can’t do easily in Blender is using those whole mesh deformations and smart polishing. I think those could be modifiers in blender. Few modifiers dedicated to high density meshes - sculpts, 3dscans etc. with option to use masking.

Additionally,

maybe ability to change sculpt mask to vertex groups and masking tools simmilar to those:


And adding more brushes is of course always a good idea.



(yii7) #15

well there is a lot to do/fix actually… but since you clamped the scope Its hard to know what you will be willing to and capable to do in the given time frame… so might as well throw wishlists towards you, maybe you’ll find an idea which is reasonable… good luck.

Sculpting improvements for multi-res and general sculpting tools; multi-res needs an overhaul (refactor ?) ability add/disolve edge loops without breaking sculpt levels.

Sculpting layers

Ability to bake sculpt masks to textures and vice versa (this can be partially done with Vertex Weight edit modifier atm; this is the legit way to save masks for multi-res. This is also the same method used in specialized proprietary sculpt tools like Zbrush).

Create vertex group from mask vice versa (saving mesh state in dynatopo (Bmesh Vertex array) then projecting saved state to current sculpt mesh; bypassing changed vertex order problems which brake saved masks in dynatopo).

Brush evaluation from surface normal

Shadow box or similar tool (I think this is what “Silhouette tool” proposal was in GSOC)

Trim and Clip sculpt object using 2D curve or Line stroke

3D curve stroke type and snap 3D curve stroke to surface feature

Make spline object from selected 3D sculpt curve

Cavity masking + Edge Masking

  • Workflow related but not necessarily sculpt tools related -

Better boolean execution

Better automatic retopo (non sculpt related, but touches the workflow subject)

… These are the essentials which come to mind…


(3DLuver) #16

@LetterRip, One thing ive been wanting for years is to be able to use textures is sculpt either in direct paint or stencil mode but also have a set of images painted to individual layers. E.g I have a displace map for the sculpt stencil, But also Diffuse, Normal, Gloss etc, When i paint with the displace map in sculpt i would like it to also paint the other maps so they match the sculpt.

That would be Awesome.


(m9105826) #17

This would be incredibly difficult to do in a non-hacky way. The different painting and sculpting modes all use different projection methods and acceleration structures under the hood without any real way of sharing stroke information. It would really take a refactor of all of the existing “painting” tools to make this work in a coherent way.


(motorsep) #18

Refining existing tools, fixing bugs and optimizing performance is something I am looking forward to :slight_smile:

Maybe some new sculpting brushes and vertex paint tools would be a big plus to have too :wink:


(Tosky) #19

For sculpt workflow: something like Zbrush’s ShadowBox or Modo curves/profiles intersection


for fast base mesh creation. This dude has made that addon http://ch.nicovideo.jp/Arasen/blomaga/ar1052167 for blender, it look like is possible to implement it.


(czerw) #20

I would also give my kidney for an option to quickly pose dyntopo.