Open Pullusb opened 1 year ago
That sounds like a good idea. I do not use boundary strokes myself, so I completely forgot about them. I will try to add this option.
I have one question about boundary strokes. I noticed that they show the stroke color on the screen instead of the fill color. It looks kind of confusing and I wonder how you deal with it. Do you manually set the same color for stroke and fill?
Hi, Yes, I usually have same color for fill and stroke, I'm so used to that setup that I forgot this could be different ! :grin:
Probably the biggest flaw in this design, it's always hard to find a compromise. But I think it's not a problem in most cases, and the usefulness far outweighs the problem. In all studio uses I have seen, we always used a single color for both fill and strokes, but I'll ask around to see different opinions.
If user want to have an active and different stroke color on fill materials, it's definitely problematic. But even in this case, it means the user would also want to output the original material, not create a new one as in current implementation. So another method would be needed anyway (probably basic material "_line" duplication).
On the other end, it could also be interesting to purposely set a different color. For example, a slightly more "flashy" variation, so the hint could still be visible above the final color.
(Arguably, user just have to tune down the opacity of the Color
layer to achieve this. Similar to Krita's colorize mask behavior)
Thank you for the explanation. I am glad to know how your studio works as I have little knowledge about collaborative art creation.
I tend to implement this feature as 3 separate options:
I think this will allow users to choose their own workflow. I have uploaded a prototype in the recent commit.
I add the option to keep the original material
@chsh2 The feature is really nice ! Sorry for testing and responding this late.
With boundary stroke as hints, you did a really nice setup ! I think It would be very interesting to keep the hint layer field available.
Having a dedicated layer is still very interesting, because other layer can be dimmed with overlay, so you can see the result and where hints strokes actually are.
Both could be used as hint source.
In this scenario, for better modularity, I think exposing a toggle to disable hint scans in Fill layer could be a good idea.
like a "Use hints in Fills".
It will allow multiple workflow. e.g: In Fill layer, user could still use boundary stroke the way they were intended, without affecting the smart fill feature based on Hint layer only.
In any case. This is already a great addition !
Maybe the option text is a bit ambiguous, but if you select a separate layer as the hint (and leave the boundary stroke option unchecked), the boundary strokes in that layer will still be considered inputs.
The boundary stroke option is more like "use boundary strokes only". It makes more sense in the case where both hint strokes and fill strokes exist in the same layer, because the add-on needs a method to distinguish between them.
I try to make the workflow flexible, but without adding too many options. With a dedicated hint layer, you can use either boundary strokes or regular fill strokes (by drawing a small circle or something), or a mixture of the two:
Ok! I did not test Boundary strokes as hints
off. I didn't get it was already considering them without this option.
Then the behavior is perfect :+1:
Hello !
I followed the evolution of the tool for some times and the new smart fill is a really cool addition!
I wanted to do the same, but so far only made a slow pixel based prototype (rendering hints and line as pixel > generate the fill areas using Gmic CLI with a krita-like colorize mask > then tracing back to vector in Blender...) Your approach is much nicer and efficient.
I have some enhancement suggestions for the tool.
First the need
Output with existing material
I noticed in the output choice you can only create
new material
oruse vertex color
output. Those options are interesting, but I think using only current material in stack is more useful in most cases. Whether it's on my personal files or in studio productions, there is usually a crafted material palette we want to keep (sometimes material are even linked, and we want to use those).The thing is, those are fills material, not stroke type, and it's easier to hint with line (I don't know if you consider the fills differently btw).
First I thought you could plainly duplicate all material "as stroke", with a
_line
suffix, then smart fill would use related fill material as output. But it's not user-friendly, ends up with a doubled material stack and unsynced with original linked material...Then the mean
Use boundary strokes as source
I think there is a way more elegant solution and ready-to-use for this use case. Using blender built-in boundary strokes feature!
With bucket fill tool selected, pressing
Alt
and tracing make a stroke that appears like a line, with same material source and color, the perfect hint.The Stroke is tagged as
nofill_stroke
, so they are clearly identified. Meaning they could even be used within the same color layer, thus allowing to combine work, using smart fill then quickly add some finishing touches directly on the color layer ! That could be the default behavior if hint layer field is empty.And final bonus, there is already a function that would clean those special hints
Grease Pencil > cleanups > boundary strokes
. So user can get rid of them whenever he wants whatever the source layer.Sorry for the long post, but I was excited by this idea and wanted to explain the idea in details :D
Samuel