Page MenuHome

Grease Pencil: various issues
Open, Confirmed, MediumPublic

Description

Note: this tasks can be split up once we get feedback on issues, for now this is to discuss changes to make.


  • Brush pixels are not pixels, shouldn't we use a meaningful value? (pixels or blender units).
  • Grease pencil brushes have material pointers which are globally overwritten.

    When you set a material, all brushes are looped over and have their material values clobbered.

    Why have a material attached to the brush at all? This could be a scene level setting (or at least not stored per-brush).

    See: BKE_brush_update_material called by rna rna_Brush_material_update when setting any material.
  • Grease pencil sculpt uses it's own brush system, is there a good reason for this?

    Since these brushes are fairly advanced (pressure & curve mapping options) wouldn't it be better to use the existing brush system?

    Note: while particle system for eg: has 'simple' brush types like this, grease-pencil sculpt brushes are more advanced and duplicate more of what we have for regular brushes used elsewhere.
  • Grease pencil weight brush seems to have no way to paint a weight value (only add weight).

    As with mesh weight paint we should be able to paint a weight.
  • In edit-mode, vertex selection exists but is hidden by default (0.0 opacity).

    Shouldn't they be visible?

Lower Priority

  • Internally grease pencil sculp is called:
    • grease pencil edit (GP_BrushEdit_Settings, GP_EditBrush_Data, GP_BRUSHEDIT_FLAG_APPLY_UV)

      This is highly confusing since we have grease pencil edit-mode, can't we rename these GP_Sculpt*. ?
    • grease pencil paint (GPENCIL_OT_brush_paint)

      Paint is easily confused with draw, seems this is for sculpt/weight painting.

Details

Type
Design

Event Timeline

Campbell Barton (campbellbarton) triaged this task as Normal priority.
Campbell Barton (campbellbarton) raised the priority of this task from Normal to Confirmed, High.Nov 13 2018, 10:34 PM

Brush pixels are not pixels, shouldn't we use a meaningful value? (pixels or blender units).

During the development, we tested the use of a brush cursor with the size of the brush and this had two problems:

a) The cursor was too intrusive when drawing. After a lot of test, a small point was the best solution.
b) The size of the cursor is not a real representation of the size of the final stroke (it's the same if you get a real pixel size not implemented now)... the problem is teh stroke is projected and maybe the distance to the plane makes the stroke thinner.

Why have a material attached to the brush at all?

When you select a material, all brushes are set to this material except materials pinned. The reason to do this is that a type of "stroke" is the combination of material and brush, so to get some artistics effects you need define a combination of both. If we link the material, when you append a brush to new scene, you get the material too.

Grease pencil weight brush seems to have no way to paint a weight value (only add weight).

Not sure what you mean... add new strokes?

In edit-mode, vertex selection exists but is hidden by default (0.0 opacity).

This an error of the default scene. The default value must be 1.0

Grease pencil sculpt uses it's own brush system, is there a good reason for this?

Yes, the reason is this is legacy code and we haven't time/resources to redo all this system. This is a future ToDo.

This is highly confusing since we have grease pencil edit-mode, can't we rename these GP_Sculpt*. ?

Yes, some is legacy code and some new, so we can harmonize the names.

grease pencil paint (GPENCIL_OT_brush_paint)
Paint is easily confused with draw, seems this is for sculpt/weight painting.

Again, legacy code, we could rename it to something like GPENCIL_OT_sculpt_paint

Your answers seem good to me @Antonio Vazquez (antoniov)

Among all the issues, IMO the most important is to convert the actual Gpencil sculpt operators to real Blender brushes as soon as we can. I totally agree with that, is the way to go for better consistency.

@Antonio Vazquez (antoniov) - is there anything that makes grease pencil sculpt using regular brushes complicated?

Brush pixels are not pixels, shouldn't we use a meaningful value? (pixels or blender units).

During the development, we tested the use of a brush cursor with the size of the brush and this had two problems:
a) The cursor was too intrusive when drawing. After a lot of test, a small point was the best solution.
b) The size of the cursor is not a real representation of the size of the final stroke (it's the same if you get a real pixel size not implemented now)... the problem is teh stroke is projected and maybe the distance to the plane makes the stroke thinner.

In this case why not use an absolute size for brushes?

Why have a material attached to the brush at all?

When you select a material, all brushes are set to this material except materials pinned. The reason to do this is that a type of "stroke" is the combination of material and brush, so to get some artistics effects you need define a combination of both. If we link the material, when you append a brush to new scene, you get the material too.

Grease pencil weight brush seems to have no way to paint a weight value (only add weight).

Not sure what you mean... add new strokes?

If you want to paint a weight (0.5 for eg) onto an existing stroke, as far as I can see this isn't possible currently.

In edit-mode, vertex selection exists but is hidden by default (0.0 opacity).

This an error of the default scene. The default value must be 1.0

In that case it's a simple fix.

Grease pencil sculpt uses it's own brush system, is there a good reason for this?

Yes, the reason is this is legacy code and we haven't time/resources to redo all this system. This is a future ToDo.

Is this such a big task? Or is there some feature that makes this more difficult then using regular brushes for gpencil-paint for eg?

The hassles we get from having a separate system also give some overhead.

This is highly confusing since we have grease pencil edit-mode, can't we rename these GP_Sculpt*. ?

Yes, some is legacy code and some new, so we can harmonize the names.

grease pencil paint (GPENCIL_OT_brush_paint)
Paint is easily confused with draw, seems this is for sculpt/weight painting.

Again, legacy code, we could rename it to something like GPENCIL_OT_sculpt_paint

Could we try do this renaming before 2.8x release?
Otherwise people will end up with keymaps using the confusing names.

If you want to paint a weight (0.5 for eg) onto an existing stroke, as far as I can see this isn't possible currently.

Done in ec908beab321

This is highly confusing since we have grease pencil edit-mode, can't we rename these GP_Sculpt*. ?

Done in 64920a8febde

could rename it to something like GPENCIL_OT_sculpt_paint

Done in 991bb0076219

I agree that the many types of brushes is confusing, I think we should ideally get down to three types of brushes :

  • Raster brushes : texture paint, image paint, weight paint (not sure for this one)
  • Vector brushes : grease pencil
  • Sculpt brushes : sculpt mode, but also gp sculpt

I feel that Blender is missing a rich collection of brushes, especially since the move to 2D animation : we're competing with software that has hundreds of downloadable brushes both for raster and vector painting. With many redundant brush systems, it is going to be hard for users to create and share their own collections of brushes...

Brecht Van Lommel (brecht) lowered the priority of this task from Confirmed, High to Confirmed, Medium.Apr 12 2019, 8:06 AM

If you want to paint a weight (0.5 for eg) onto an existing stroke, as far as I can see this isn't possible currently.

Done in ec908beab321

I have an addition to this. (Please let me know if I should open a separate bug report for it.)
I've noticed that Weight Painting on Grease Pencil also respects if "Selection Mask" in Sculpt Mode is turned on. This can be quite confusing because the option to turn it off is not available in Weight Painting and the selection is also not visible.