GSoC 2017 Silhouette Brush

Hi Artists, Blenderheads and sculptors,

I am Sebastian Witt and I will be working on the “Silhouette Brush”. It is part of the GSoC 2017 sculpting projects!
https://wiki.blender.org/index.php/Dev:Ref/GoogleSummerOfCode/2017
related to: https://blenderartists.org/forum/showthread.php?417285-Sculpt-Paint-and-UV-tool-improvements

In this thread I will be posting from my first thoughts, ideas, the first implementations to the finished product. I hope to get your feedback as early as possible in the development process so the result is as useful as possible!
Besides this I will regularly report my GSoC journey here: https://wiki.blender.org/index.php/User:Witt/GSoC2017/Reports

So What is the Silhouette Brush?

The silhouette brush shall enable the sculptor to draw a new silhouette for his model. A tool for quick sketching of new shapes. It can create and alter completely new geometry. When used it adds a volume in the shape of the stroke. As an example, to add a horn to a head, the sculptor shall draw the rough shape from the side. Geometry is then added and connected to the mesh. The sculptor can further define it with the existing tools.

You can get further details in my Proposal: https://wiki.blender.org/index.php/User:Witt/GSoC2017/Proposal

The Silhouette Brush will go hand in hand with the clipping brush proposed by Raja Kumar Kedia. To illustrate a possible workflow check out this gif:
https://wiki.blender.org/uploads/0/02/SebastianWitt_proposal.gif
The red region drawn illustrates the stroke as drawn with the silhouette brush and the blue illustrates the usage of the clipping brush.

What is currently Planned?
In my current design I am planning multiple options for the Brush:

  • Slider for thickness
  • Switch for adaptive thickness/shape
  • Slider for smoothing
  • Resolution (May also have an adaptive mode)

When drawn out of context (in air), a shape is formed, centred on the cursor viewplane with the set thickness. When drawn in context (on a model), a shape is formed with the footprint of the overlapping parts if adaptive thickness is enabled. Smoothness controls the hardness of emerging sharp edges, like the transition to the existing geometry or the edges of the new shape. The resolution controls the vertex density on the created geometry.

This is my current plan. In the next few days i will start prototyping to see if i can implement it this way and will evaluate if it is even useful.
I need your feedback on it:

  • What are your thoughts on the tool in general?
  • Which subfeatures do you want the silhouette brush to provide?
  • Do you see problems in the current plan?

Best regards!
Sebastian Witt

1 Like

Hi Sebastian,

great initiative. The idea is really cool too. When I see that little gif demo, and read your explanation, I still don’t entirely understand how thickness is set (for the ibex horns, is it set to go all the way to the symmetry plane ? or does it sample the geometry under the cursor and set the created geometry to be equally thick ?). The substract mode is bound to be a godsend… I don’t have a particular suggestion. :slight_smile: Best wishes for this project.

Oh, em, there is something : it’s always nice to be able to do straight lines. Will the brush allow drawing a shape consisting of freehand segments and straight lines ? (either using the existing stroke methods or not)
If yes, then a good reference is Gimp’s lasso tool (drawing continuously creates a freehand shape, lifting and clicking creates line segments).

Hadrien

1 Like

I’ve wanted this ever since I used Teddy3D (http://www-ui.is.s.u-tokyo.ac.jp/~takeo/teddy/teddy.htm), and I’ve been dissapointed that nothing’s picked up this lovely way of working since.
If you haven’t looked at that, it’s a very logical system, and I like the results a lot.
The gif makes me worry a little that this won’t be good at creating round shapes, with the way it connects the horns in the middle. With that shape drawn, I would’ve expected the horns to just be tubes!

If you can manage to get test builds out, I’d love to test your progress!

1 Like

Hi, good luck with the project!

Just thinking on future testing, is ‘soc-2017-sculpting_improvements’ the branch created for your project?

Thanks for those quick replies!

For the thickness I am planning two modes: Static and Adaptive

  • If set to static the thickness will be constant relative to the working plane / cursor plane. The shape will then be relatively simple as well. You draw a square, you get a box with the set thickness.
  • If set to adaptive the existing geometry is taken into account. This mode is most likely going to change a lot during development. The idea is: depending on the “footprint” or the overlapping part of the stroke + sculpt a new 3D shape will be approximated. This is hard to explain and i will maybe draw an image to illustrate it further later.

I am totally agreeing on that point! In my proposal I proposed a similarish stroke type. With the new Silhouette Brush you need tools to define areas rather than lines. I will maybe revisit this point when the Silhouette Brush is done :eyebrowlift:

This system will definitely be an inspiration for the silhouette brush. As you might see above the “adaptive thickness” mode is not yet very refined. Maybe a two stroke system might be also interesting. You define a footprint and then draw the shape?

Yes, this is currently the branch i am working in. We might change the name though, it is a little confusing with the two sculpting projects!

Thanks for those quick replies!

For the thickness I am planning two modes: Static and Adaptive

  • If set to static the thickness will be constant relative to the working plane / cursor plane. The shape will then be relatively simple as well. You draw a square, you get a box with the set thickness.
  • If set to adaptive the existing geometry is taken into account. This mode is most likely going to change a lot during development. The idea is: depending on the “footprint” or the overlapping part of the stroke + sculpt a new 3D shape will be approximated. This is hard to explain and i will maybe draw an image to illustrate it further later.

I am totally agreeing on that point! In my proposal I proposed a similarish stroke type. With the new Silhouette Brush you need tools to define areas rather than lines. I will maybe revisit this point when the Silhouette Brush is done :eyebrowlift:

This system will definitely be an inspiration for the silhouette brush. As you might see above the “adaptive thickness” mode is not yet very refined. Maybe a two stroke system might be also interesting. You define a footprint and then draw the shape?

Yes, this is currently the branch i am working in. We might change the name though, it is a little confusing with the two sculpting projects !

Shade has that. https://shade3d.jp/en/

Edit: I should add that it is less useful that it seems like it should be. Like metaballs.

Hi Sebastian the functionality looks cool. For the subtractive side of things (clipping brush) https://github.com/MadMinstrel/blender-sculpt-tools/blob/master/greaseTrim.py might be of interest.

1 Like

I don’t deny the need of a fast stroke method.
But I would like a stroke method like curve one to take time to do a precise shape but with ability to close the curve to define an area.
Or it would be great if it was able to load svg files.

Anyways, at the end, any area stroke method could be useful for fill brush in texture paint mode, too.

Speedsculpt already do this ^^

http://pitiwazou.com/screenshots/speedsculpt_cut_tool.gif

1 Like

Wow not bad. Looks a bit slow though, and many steps to cut a simple shape, but a nice ad hoc solution. What about adding volume ?

Yes it’s not as fast as something coded in C but that works.
You can create forms yes.
But it’s not the place to discust about the addon ^^

Judging by the colors used in the mockup, I think the project will support weights, which could give it interesting capabilities like depth and gradients to the brush (only assuming here)

Sorry, it was my own mistake.

Hi Sebastian,
I just saw your latest weekly update, you sure got a mockup up and running fast, nice one :slight_smile:

Have you considered the approach of using the brush radius and filling in the silhouette shape instead of switching to a ‘you-better-make-this-1-stroke-count’ mode? Maybe have it as an option?

Thanks so far!

Hi!
I like the “brush version” a lot!

it looks like a fast and intuitive shape builder tool which this project aims to be.
Perfect that and you are done :slight_smile:

the operator version looks slow and less intuitive in comparison, simply because it suggests more planning which shouldn’t happen in your head. You should develop your idea while seeing the result.

mStuff: I like that it is not about brush thickness (it would be too much like a strong pinch)…
With this you will be able to sketch out highly irregular shiluettes with one stroke.

So would you with what I was proposing, if not even more irregular.
The current implementation makes a screenspace area selection by drawing the edge of it that the model “fills out” somehow. My proposition would allow you to paint the area by using the brush without having to trace it’s edge, that means you can put in holes as well as making silhouettes if that is even possible.

EDIT: like this


where the red is painted by the user. Might be a bit more intuitive for some users compared to fill edge method. This might also give the user control over what parts of the model is dragged out.

I do agree with you +1

Another week is over and there is still no Silhouette Brush!

Even though i can’t give you a first prototype to try and play around with i am slowly progressing. You can see latest developments in the last weekly report: https://wiki.blender.org/index.php/User:Witt/GSoC2017/Reports/weekly02

Getting the base structure running takes quite some time and will still take some time but I will post as soon as i get something noteworthy running.

The code is developing but also my plans. Even though most people liked the idea of a brush i decided to go with an operator. From a code perspective this makes more sense. But i will try to address all the problems with a non brush workflow. Besides the problems, this also adds possibilities which would not be possible with the brush approach. With an operator it is possible to change the settings after creating the shape. One can adjust the smoothness, resolution, depth etc. after drawing the stroke!

I share your point and i will try to find a good balance between a quick and a precise workflow. My Idea: Maybe it is possible with the operator workflow to have a “sticky” overlay.
Here an example workflow:The sculptor draws a shape (one-stroke-counts).
The operator is then running, you can change values etc.
While running the drawn stroke is still displayed.
Now you can add or refine the stroke by drawing again. (Maybe right click to subtract from drawn strokes)
It is kind of like a drawing layer which you can change while the operator is running.
Exiting the operator (by regular sculpting for example) applies the changes.

Have a nice day and weekend,

Sebastian Witt

Maybe it is just a user feeling, wrong from a developer point of view.
But it looks like you are trying to generate a really complex rounded geometry.

Maybe it is too ambitious.
As long as enough quads are created, created shape don’t need to be rounded.
User is in sculpt mode. He can use a smooth brush immediately, after the operator to round it.

And, if we are in dyntopo mode; we don’t care about quads or regular topology.
A retopology of model would be done, anyways.