GSoC: Multires/sculpting/brush improvements (N. Bishop ect...), discussion thread

This thread is for the discussion of everything done to improve to the sculpting, multires, brush, and painting systems in Blender as seen in multiple GSoC projects this year assigned to them since these systems are somewhat related to each other.

Nicholas Bishop is one of the first to commit to one of these branches by coding a temporary operator for masks (for testing purposes, no one should be offering builds yet)

  • Added a temporary operator to set masks, does nothing yet
  • Added a temporary UI for the temporary operator for testing

Here’s an older commit related to strokes and brushes back on the 18th of March by Konrad Kleine

Report, discuss, be excited ect…

Initial work to bring in contrast, scrape and fill brushes to Blender by jwilkens

Upgrades to the sculpting architecture by Nicholas Bishop


Updated the wiki with some notes on paint masks:

Testing welcome :slight_smile:


Nice work Nicholas!

However I can’t get it to compile with Scons + MSVC (on win 7 64-bit). I’m getting this error:

As soon I’m able to compile I’ll upload a win 64-bit build on graphicall…

Thanks for the note Gustav, fixed in SVN. MSVC uses a different way of declaring functions inline for some reason.

Nicholas, if you are working on the multires code, do you think there could be a way how to make level switching faster in the future? For me it’s currently the biggest issue/bottleneck on my work machine(2x4core xeon, 24 Gb ram, hd5870) and also on my old laptop (pentium m 2Ghz, 2gb ram, gfx ati with 128mb ram). While sculpting allready works much better than it used to(also with the new improvements from jwilkins), the levelswitching is quite annoyingly long. I thought about some ways I imagine it could work, sorry if they are totally wrong, I have not much clue about multires code:

Blender is now very good with memory savings in sculpt mode, which is good, but I’m not sure if during the sculpt it wouldn’t be able to have all levels in memory for machines which have enough of it?
I guess 8Gb is pretty much standard/minimum for workstations nowadays. with my 2gb laptop, the sculpting performance regarding polycount can go to models which take about 500mb in memory, so even there bigger mem use couldn’t hurt much. I understand that out of sculptmode, memory should be as little as possible, mainly for rendering.

Another idea how to help faster level switching would be to allow some background thread to distribute the displacement changes to the other levels during sculpting. Blender’s sculpt can currently not use more cores effectively, so with multicore machines, a special thread just for distributing changes to other levels/getting those ready for switching couldn’t probably hurt the sculpting performance?

Sorry if this is offtopic and out of the scope of your GSoC project, and thanks for the great work on masks and vcols.

Masking is working nicely! An Invert mask tool would be nice, also sharpen/blur mask is very useful. Zbrush as a couple of other masking feature, but not sure how useful they really are ( However Zbrush’s topology mask feature combined with their transpose tool is very powerful, but maybe that’s outside the scope of the project ( .

btw I’ve uploaded a win 64 build on graphicall:

Yes masking and transpose are very useful :).

When is ranspose gonna work the transpose ?

or is working now???

Looking good so far, the masking brush works very nicely… A few comments though.

  1. The clay brush seems to ignore the boundaries of the mask by a small amount (It bulges out and seems to push the mask outwards)

  2. Perhaps having Ctrl+I as an inverter to invert the mask, I don’t think that key combination is used in sculpt mode and I think it would be a good idea to have this for a number of reasons.

  3. One more option for Masking (Texture!) I’m not sure how hard this would be, but the ability to load a black/ white or use a procedural texture as a mask template would be such a powerful thing, for example you could load in a tile-able leather texture, choose the texture (With a texture pop-out menu) hit ‘Texture’ and it would mask out the following that pattern.

Anyway, just a few ideas which you’ve probably already thought of :wink:

Looking forward to seeing more goodies, thanks :smiley:

EDIT: Not sure if it’s a bug, but when enabling ‘quick navigate’ the whole object turns orange when rotating. Is this a feature?

You have the proportional editing tools in Blender instead the transpose. What is really interesting is the mask softness, to create gradual masks.

Would be really nice, but how should you map it on to the model? instead this might be better ingerated as a stencil. Here’s how it works in zbrush:

and in mudbox

This would be extremly useful, however not sure if such feature is related to nicholas mask code? It also been mention as a possible feature for Jwilkins to work on here:

You have the proportional editing tools in Blender instead the transpose
Proportional editing works only in edit mode, which means that you have to apply work multiresolution modifier (which btw is very destructive), enter edit mode, select right polygons and rotate/move/scale them properly… try that with a 5 million polygon mesh…

when we are gonna have a transpose tool and the sculpt System???’’

pildanovak - I’d love to improve the speed of level switching, but let me assure you it’s not a trivial matter :slight_smile: On the positive side, I’ve already learned quite a few useful things in coding up the masking tools about how subsurf works, which might lead to me making performance improvements eventually. That’s not my goal right now, however, since it’s not part of my gsoc project.

Gustav - I added mask inverting as you suggested. Some of those other tools will probably make it in to Blender, time permitting. And thanks for posting a build!

Daniel - 1) Wasn’t able to reproduce this, but I haven’t done a lot of testing on the brush/mask interaction yet. 2) Added mask inverting, no shortcut key yet though. 3) This is somewhat possible already; the mask brush is like any other in that you can attach a texture (including tiling and procedural textures.) And the turning orange thing is a bug, not sure what’s causing it (I see it too.)

Alekzsander - I reckon we’ll have the transpose tool when you write the code to create it :wink:

Thanks for the feedback, please keep it coming :slight_smile:

Here’s a win32 build of the gsoc sculpt branch of Nicholas.

Yay , that’s really helpful , thank you Nicholas !


Great addition Nicolas! Masking works really smooth, and you can control the levels of the mask much easier than in sculptris!!! I love it!

I had an idea last night. Don’t know if this is related to your soc.
What about masking an area and say for example relax mesh! so the Mesh is relaxed in this painted area without losing the shape of the mesh! I think this is very important in some cases.

Just a little brainstorming!

I am not really an animation guy (well not at all tbh) but since we can use modifiers in sculpt mode, doesn’t that mean we can use a modifier for deforming it? Isn’t the whole armature/bone stuff done with modifiers?

yes it is
and we’ve got proportional editing with rotation around cursor. thats imo already as powerfull (or even more) as transpose. so i dont know if devs should waste time copying something from another programm when that functionality already exists.

so many cool things happening to sculpting and painting in blender, which will make creation an ultimative intuitive process.
realy thanks to all the developers involved! keep up the good work!

Agree. It is probably much more powerful. On the other side I guess the transpose tool is much more intuitive which is why people are looking for a simple way to do that instead of using “complicated” armature techniques.

I really wish:

  • we have hotkey for switching multires up and down 1 level (in zbrush it’s ctrl+d for subdivide -or go up 1 level, and shift+d for level down). And i would like it to switch also render level and preview (it’s annoying to click all 3 level buttons just to go 1 level down)

  • masking by cavity especially for painting. It’s really cool in zbrush and allows for making base for texture fast. I usually paint rised areas in 1 color then invert mask and paint deep areas in second color (usually changing valuse is ok) and I have good base for further painting. But i guess it may be hard so don’t give it hight priority.

  • layers with blending modes would be cool

  • changing access to brush textures; right now you need to go to world button then texture then brush - wtf, really bad design imo. And there is no texture panel in uv/ image Editor

  • it may be out of scope but… we already have brightens contrast controls for texture. I wish there would be possible in paint mode + hue + saturation controls that apply these changes for image.

  • symmetry painting in-x

It’s a lot but blender need some love in painting

One thing I forget to mention was, will it be possible to get the shapekey’s working with sculpt. I’d image that this would be quite hard and perhaps it is outside of the GSOC project scope, but I could see this feature being extremely powerful, for example you could sculpt a heroic man figure transforming into a werewolf or something along those lines by storing shapekeys as you sculpt.

EDIT: I think this is a bug, or at least a bad way of working. When using the masking brush with a texture and anchored enabled, it projects every movement onto the mesh. This means you end up with a big blob of masking in the centre (getting large the more you put the texture out) and the faint markings of the texture as it’s moved over the surface when rotating the brush.

If the mask could be projected only once the mouse is released it would solve this issue, I think anyway.