GSoC 2017 Silhouette Brush

Indeed, my goal is to create a tool which can generate very complex geometry. From a developer perspective, the main challenge is not to have rounded shapes but shapes with a useful topology. A quick approach which might be feasible as well would be to generate a triangulated shape with random but evenly distributed triangles. As you’ve said this would need a retopo afterwards.

With my current approach I am expecting a topology like this:



I will see how it turns out. If its not generating properly or I run into too many issues i might still try the other approach.

This kind of generated topology looks really okay - it’s a bit stretched in places but if it can accomodate any shape drawn by the user it’s actually pretty convincing ! after all this is a tool for concepting and early shaping, so I wouldn’t expect it to output final animation-ready topology… just more or less regularly spaced polygons with a flow that makes sense - the goal is to be able to sculpt on top of this and not need a complete remesh right off the bat. This looks a bit like the skin modifier output, by the way… if you’re looking at other means of generating topology there’s also the method used in remesh modifier - dual contouring (https://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.62/Remesh_Modifier) and there’s dyntopo too, although I have no idea how it works…

+1 for the brush version as well - I reckon it cannot be tweaked after a stroke while an operator can, but maybe it can have options of its own.

Good continuation !

I disagree. It does not look able to handle sharp concave shapes.
If there is a way to do a negative stoke after the first one, concave shapes with sharp angles will be something wanted.
It already seems to produce triangles that will be problematic if user wants to go to a higher level.

You have control of the drawn stroke. You can force it to have an even number of edges.
So, surface can be filled by a grid and extruded and loop of extrusion can by divided.
As is, you obtain a quads only geometry done without a remeshing.
It is as stupid as a cube subdivided and as a cube subdivided, it can be kept sharp by user or smoothed with a smooth brush.

Wouldn’t geodesic triangles be a better pattern to fill arbritary shapes? That’s what I was expecting, something similar to a dyntopo detail fill.
Something like


It is always better to have such tool build-in in Blender, and not everyone can afford it (me thinking about very poor student artists)

I have to agree with other artists here, I was thinking that you will implement the tool only for dyntopo and full triangles. I was thinking that GSOC is so short that it might be better to do something quick and usable and if you need a better implementation, you will fix the old one bit by bit when you have time even after Gsoc. You are the coder and it is all up to you.

Hi.
Just to say that I am currently not able to compile “soc-2017-sculpting_improvements” branch on Linux:
http://pasteall.org/463416

Thanks for the report.
I have reworked a big portion of the code now. It should build now successful.
I am hoping to get the basic mesh generation done tomorrow currently it is not much to see.
If you want to try you can rebind the keys in the preferences/input/3DView/Sculpt/Draw Silhouette or use alt+leftclick if available.
The binding will change, it is just temporary for testing.

I will update my branch now more regularly.

Looking at the gif in your report, the generated geometry looks very rather flat. Will it always be this thickness, or is the thickness dependent on shapes complexity?
When drawing a circle, I’d hope for the shape to be a sphere (as the image up there), will that be the case? I brought up Teddy3d as an example before, and I still think it’s a nice example to take your cues from.

Hi Mighty Pea,
the thickness will be dependent on different factors.
The most basic setting is the depth option. You can set your preferred depth and it will generate a shape with that thickness.
If you draw a circle, depending on the smoothing factor, either a sphere or a cylinder is created.
The smoothing factor is fixed between 0…1.
0 = being a cylinder with hard corners.
1 = results in a sphere.
0.5 = is a cylinder with rounded corners.
Don’t expect a perfect sphere though, a circle is basically the worst case for my topology analysis algorithm.

Yo Witt, how to you call the brush? what is the shortcut key to use?

You can draw a new silhouette by pressing alt+LMB within sculpt-mode.
This is just a temporary key-binding. If you are on Linux and pressing alt is system reserved you will need to rebind the key in the user preferences.
preferences/input/3DView/Sculpt/Draw Silhouette

hope it works!

Yes it working pretty well here, i tested it and made some notes and a short video:
The operator is looking good so far it crashes with default setup: https://youtu.be/VdIV5Mb2XX4

Wow, thanks for the great video!
I am glad you got it working.

I will try to fix and improve the points you mentioned in the video.
About the crashes with default setup:
The values are restricted to a certain range but when loading with older factory settings it is out off bounds.

  • Should be an easy fix

Thanks again for the video, very motivating!

Here in Linux it crash whit segmentation fault when I use my Blender configuration. But I can use the brush with clean Blender config folder. I’m not sure if the problem is some addon I installed or something else …

Hey Witt, maybe “ShrinkWrap Smooth” from this addon might be useful for you?:
http://www.kjartantysdal.com/scripts/

It is useful to get more uniform quad meshes (you need to remove doubles first).

It would be nice to get that in C++ :slight_smile:

By the way, if anyone wants to collaborate with KTools developer, here where to buy the addon:
https://blenderartists.org/forum/showthread.php?383998-Addon-Kjartan�s-Scripts

Yo witt, I m getting compiler error with today build (10 min ago) -> http://pasteall.org/pic/show.php?id=118099

I’m really interested in this feature. How far has this branch reached? Is it ready for widespread use?

Thanks for the info! Should be fixed now. Your compiler is a little more strict about pointer arithmetic. :wink:

Unfortunately it is not ready for widespread use yet. In the last week i finished the features i want to implement in the GSoC timeframe. I added a lot of new methods to support connecting new and old geometry. This also introduced a lot of bugs. It is currently barely usable due to two or three mayor bugs. In the next week i will try to solve as many bugs as possible and polish the tool.
In addition to that a couple of other features still need to be implemented. General usability features are not yet implemented. For example drawing on the virtual view plane set by the 3D Cursor is tedious and the depth settings are just a gamble to get right.

I am planning to polish the tool and add a couple of usability features after the GSoC. But for now I am trying to get the bare basics working.

http://imgur.com/a/mB7xm

Btw. to use the subtract mode press alt+right instead of alt+left (Bindings will change)
(performance is currently horrible as well…)

I did build it but it is crashing when i finish drawing the first silhouette.

Hello.

This does not crash here on Linux. But as I mentioned time ago, there is no crash but only with empty user configuration folder (I rename “2.79” folder in /home/USER/.config/blender). I’m not sure where the incompatibility that makes crash is in case you use your usual blender configuration folder.