Grease Pencil - Material Stroke/Fill Workflow Revamp - Feedback

This is a proposal about revamping the way artists create fills and the way Grease Pencil materials work. Specifically the “Stroke” and “Fill” material toggles.

Current State

In the current version of Blender, the Grease Pencil material holds the settings for the stroke and the fill shading. Additionally, the material dictates if the stroke/fill is shown or not (can be toggled with the checkboxes):

image

The advantage of having these toggles in the material is that it makes it easy to toggle the stroke/fill of strokes that have already been drawn.

While it’s very common for artists to adjust other settings of a material after having drawn strokes (like the color, or style), it’s uncommon to want to toggle the fill or stroke.

When you want to draw a fill and you don’t have a material ready, there are multiple steps involved:

  1. Create a material with the “Fill” toggle enabled. Choose the settings (color, etc).
  2. Select the draw tool, choose the newly created material.
  3. Draw the fill stroke.

Proposal

The proposal is to let the strokes themselves decide if they show their stroke/fill, not the material.

The material settings no longer have toggles for the “Stroke” and “Fill”:
image

Instead, the users decides when creating new strokes if they should be stroked or filled. For example, the draw tool has a setting for “Stroke”/“Fill”.

The same applies to the primitive tools. The fill bucket tool always creates fill strokes.

Like other stroke settings (e.g. material, cyclic), users can toggle the stroke/fill in edit mode (e.g. from the right-click context menu) simply by selecting the strokes and then using the operator.

Feedback

This is a very big change in workflow, so of course I’d like to get as much feedback from Grease Pencil artists as possible. If you know somone who uses Grease Pencil, share this thread with them!

Please keep the feedback focused on this proposal and the material workflow, thank you!

Download

There’s a working prototype of this proposal that can be downloaded here: Blender Builds - blender.org
Disclaimer: Use this build at your own risk! Keep backups of files that you open with this build.

For now, the prototype implements the following:

  • Simple versioning for older files (this might not work without issues yet).
  • Remove Stroke/Fill toggles in the material settings.
  • Add setting for draw tool and primitives to set the “Stroke”/“Fill” mode. Use Shift+LMB to select both options.
  • The fill tool creates fill strokes.
  • Add an operator to set the stroke mode in edit mode. It can be found in the “Stroke” context menu (RMB) or in the “Stroke” menu.

Happy testing! Thank you!

18 Likes

Worth noting that stroke and fill will also become attributes, which opens up whole new workflows. Also, it can remedy what might be lost.

For example, if artist painted stuff, and later wanted to change stroke/fill properties of the drawing it will still be possible with modifiers, that can be fed layers or vertex groups. So while not 1:1, the general workflow will be kept. And in future if material selection is added it will be 1:1.

1 Like

My general feeling is that just like other areas of the software, aligning to the rest of the industry is good, and as such, having a bucket tool to “fill” an area is a more intuitive idea.

To be exact, instead of a toggle, there should be strokes and fill objects, with a fill being able to create a stroke surrounding it and a stroke being able to generate a fill inside its boundaries. Maybe that’s just a UX detail but that’s the most intuitive way to think about it. As such, same colour or material could be used to shade a stroke or a fill, presumably?

That said, currently the material holds also some crucial info related to strokes and fills that complements other things, such as brush textures or fill textures and also, it might break the “draw as fill” post process which could be an issue?

Right now that tool is kind of broken since the material used to generate the fill in the post process is the same as the one used for the line, and when using this workflow the artist typically only wants the fill, but needs the stroke to have something to convert.

It’s important to have materials that only handle stroke stuff such as line type etc. So how would a material like that behave if used for fills for ex?

Maybe brush stroke and brush colour should therefore somehow be handled by two different things. Maybe brush could “paint” a mask/alpha texture stretched along the GP edges, generated by a brush tip the same way Photoshop does it? And then that mask could be shaded as a colour the same way a fill would be? It’s currently very awkward for ex to change the colour of a stroke using a texture, unless using the colour attribute which poses problems when needing to do things like palette swaps etc

It could potentially be very confusing if the material held both line and stroke shading information and when switching between stroke or fill, the colour changed too (because it would start using the other “half” of the material), which is what is assumed from the current proposal and the existence of both settings.

I guess my point is, if a rework is planned, why not fully address all the issues related to the current weird way that materials handle brush strokes shapes and textures as well as define both a line and a fill simultaneously? This quirk right now leads most people to define materials just for lines, and materials just for fills, to draw the lines with one and then paint the fill by following the line as closely as possible (or use an addon to auto fill such as nijipen) this generates tons of duplicate materials.

Does anyone really use both the line and the fill in the same material?

And while we’re at it, can we solve how unreadable the line materials are in terms of previews? How would previews be handled if the material always handles both? My prediction is that people would still use separate materials but would now have to set alpha of whichever they don’t use to 0 which could lead them to draw objects that would then appear invisible?

1 Like

Nice one! I like it! Toggling both stroke and fill with shift is very nice.
When using quick favorites (or shortcuts) the stroke/fill switching in Edit mode is super fast compared to the old workflow.
It also reduces material clutter where you would always need a new material for specific stroke and fill colors (if color attributes don’t count)

While testing I found a small bug where color attributes doesn’t work for fill color unless you use a primitive first :sweat_smile:

4 Likes

My only concern would be the ease of editing/removing lines and fills, especially when dealing with multiple frames. I believe these options should be easily accessible and preferably located within the same context menu. Perhaps reducing the radius and strength sliders slightly and adding a button to assign the operation of adding or removing could be a good solution

1 Like

My artist opinion is that I liked it mainly because it is more faster and intuitive.
As I always say there are 2 ways to draw, bitmap style and vector style, I think it is important to understand and make it very clear in mind because the way you draw in each one is different.

Bitmap Style
In bitmap style like mine here I will never draw shapes with “fill and stroke” actived, look kinda goofy, if you search in youtube “drawing in opentoonz/photoshop/krita/” the way people draw is usually sketch/lineart/fill or paint under lineart layer. It is default bitmap style (actually even in vector software many only use that way)

What is necessary in that style?
to be fast in create new colors, I would use many, sometimes differents tones, in any software to make new colors is kinda fast, I dont want make a complete new material only to make white circle in eyes of dragon, other for pupil, other to Iris color etc. I would like something intuitive like “Paint Mode: Color atribute” but retaining color memory, to me to edit that color later, but not the rest. Other thing if Im drawing in Color Atribute with fill mode and I switch to stroke it should maintains the same slot color (independent from any material settings) so you would remove the stroke/fill option inside of Color atribute, to be used only in fill/stroke new buttons outside

That way I will be fast making new colors inside Color Atribute panel, editing current colors (not possible now), switching between fill and stroke without worry about what stroke color of what material I am using to go there and change it. (by the way why two clicks to fill with bucket ? it is annoying)
You can think “Color Atribute” mode as bitmap mode.

I probably would use “Material” mode very rarely after that lol.

1 Like

The stroke and fill toggles are the biggest thing that separate Materials from just using a color attribute. The way materials work now gives you SO much control over the gp stroke. Maybe artist who don’t focus on rigging won’t need to toggle the stroke and fills. But anyone who creates complex rigged characters is going to need it left the way it is. Why?

  1. For clean solid shape design. : It’s more clean and efficient to make solid shapes out of a strokes with a fill on it. By grouping these solid “stroke fills” you can make any part look like it’s in different perspectives.

Example video: https://files.catbox.moe/sxee3a.mp4

It also works better with the interpolation tool because it’s one shape. And you can use the time offset modifier to control it.

  1. creation of parts and editing. Some times we make mistakes and it’s beautiful to be able to just go back and change anything after the fact. like you said , It’s Just so easy to go into the material and toggle the stroke/fills. that’s the point of using materials instead of using a color attribute. I’ve also used this to trace my drawing into gp. Start out with just the lines and switch to fills. Sketch with any normal line material and then change it to a custom one latter with different line styles , fills , or a full on single texture. It’s just so much utility the way it is now…

As for the new proposal, You can already decide when creating new strokes if they should be stroke or filled. But then for example you want to change a shape and you don’t want to re do the weights . You can just change it’s material and it will change it’s line style. And you can
also control it’s stroke and fill separately. It’s such a good tool and works well the way it is.

what would be the positive to change it in this way? And who is it benefiting? I feel like this is just going to break current work flows and restrict new comers who want to use gp for rigged animation

What if, alongside each stroke being able to have a toggle for both line and fill, it also had the possibility to assign a separate material to each?

This way, it’s possible to remove the toggles, it’s possible to use the same material for both, and it’s also possible to keep a shape with both line and fill shaded to use for rigging?

It could make materials simpler, and give more flexibility to users? maybe even the possibility to use general materials such as procedural materials or even bsdf (procedural materials would be a great way to implement custom brushes, rather than geometry nodes for ex) ? And maybe even assigning materials to edges / faces like meshes do in order to allow recoloring part of a line for ex?

Oh wait…Ok…i guess I didn’t understand what’s being done here. I commented before testing the prototype…:sweat_smile: . I tried it out and it seems to make since. Nothing about the material is changed except the fills and strokes get changed on the stroke it self…And you can still change anything after the fact. I thought the Pre-making of the strokes being fill would work like color attributes (having to use the tint tool to remove color) . i thought it would lock the person into a stroke type. Though i still feel like this diminishes the material a bit :thinking: ( having less inside it)

The only Feedback so far is , i wish the new strokes could make fills fully closed from the start instead of having to go into edit mode and selecting “close”

:sweat_smile: I’m gonna test it more

I like it :+1: . A cyclic toggle could be useful I think. Geometry tools support too :pray:

  • With Toggle Stroke and Toggle Fill operators now is possible to leave an strokes without any visible material (stroke or fill). Is this intentional?

  • UI: It is more discoverable if three buttons toggle are used to change the Stroke Mode: Stroke-Fill-Stroke and Fill. Also this Stroke Mode selector should be after Radius and Strength.
    Here is mockup, later we can think of better icons.

5 Likes

Thanks for the feedback so far! I’ll update the prototype with a few suggestions from here soon.

Support to the 3 button layout. Does not take that much more space, but can be toggled with a drawing pad alone

1 Like

I really like this. The indirect ‘fill-is-in-the-material’ way was always cumbersome and unintuitive to me.

This change would also be great if the same material could be applied to both: strokes or fills, but that change needs to be carefully analyzed later with the conversion of materials to nodes.

I’ll try and answer some of the points being made so far. Let me know if I missed some.

Q: What about having a material for the stroke and a different kind of material for the fill?
A: This is problematic for several reasons, but I think the most important one is that this is just a massive change in architecture. We would have to store two materials per stroke. Which would mean we would have to rewrite large parts of Grease Pencil, the render engine, etc. Maybe this is something we can discuss in the future, but I’d like to keep this thread on the topic of the current proposal.

Q: What happens when both the Stroke and the Fill are toggled off? Wouldn’t this be confusing/problematic?
A: Indeed, it’s possible to turn off both the Stroke and the Fill. This problem already exists now with the materials too, e.g. you can turn off both Stroke and Fill or make one of the fully transparent. I don’t think we should have a hard coded prevention of this, but I do think that we can make it harder for the user. For example, in Draw Mode, you will always have at least one of the Stroke and Fill turned on. It shouldn’t be possible to draw a stroke with them both turned off. In Edit Mode it would be possible to change them to both be off, but since this is something the user would have to do deliberatly through operators, I think that’s ok. Also note that in edit mode, you would still see the selection overlay even if you turned both the stroke and fill off.
One thing we could do is make it so that the material color for stroke and fill can’t have an opacity. And we would always use the opacity on the strokes instead. This way, the material always has a stroke and fill and if you draw with the fill enabled, you always get a result.

@MatiasMendiola Thanks for the great suggestions! Indeed using three buttons is a lot better. I’ll try and update the prototype build.

The operator that I added for toggling the stroke and the fill can be used with multiframe editing. Maybe you can give it a try, see if you run into any hassles, and let me know :slightly_smiling_face:

That’s a good suggestion. We already have toggles for the end caps, so it seems natural to have this as well. Will look into it.

1 Like

A small dropdown arrow button containing the settings for each icon might work. I’m sure you’ve already explored similar options, like Inkscape, where settings are based on the selected or last-selected object. This way, when adjusting the fill or stroke settings, they would update naturally.

This could also be an opportunity to align with a program like Inkscape and take advantage of development they have already done.

Good luck with your project!