Grease Pencil -- "Draw in 3D" correction

A suggestion was made in my comment on the video above to create a new topic here to clarify the meaning of the “question” asked by Romain Guimbal about GreasePencil and drawing in 3d, as it was quickly brushed over and seemed to be misunderstood:

Great job on Grease Pencil!! @Blender – That question around 58:30 about “Drawing in 3D” (by Romain Guimbal) was probably about drawing on “curved” / “distorted” geometry for easier camera distortion effects upon rotation (i.e. for areas where the camera rotates in place in the motorcycle demo). It would help if you had an invisible “curved surface” to draw your strokes on (or adapt them to) so you can keep your art 1:1 during shots like this – This is so that the artist doesn’t have to manually draw such distorted perspectives to get the “3D” effect of the buildings distorting with the camera movement as it rotates around its pivot. – I’d like to know about support for this kind of thing too.

This is in regards to “painting 3D backgrounds” using 3D geometry (to get neat distortion effects) as guides for our strokes “in 3D”. These “guides” are simply geometry that we can later hide (and display our strokes in their stead). There have been times when I simply wanted to use GreasePencil to paint a curve on a 3D model’s face (that I can later turn into a real 3D curve and convert it to a strip of polygons), but I’m unable to do this. GreasePencil hates me trying to use it for “Drawing/Painting in 3D”. :frowning:

As you can see, Grease Pencil is very useful, but the “Drawing in 3D” part is what I need it for most – yet this kind of painting is still not its strong suit. A lot of the work of constructing your drawings in 3D could be alleviated by simply allowing one to draw a stroke as it automatically “warps” or “sticks” to 3D geometric surfaces as we paint.

That “Tarzan” video was a great example of the kind of amazing animation and worlds we could create with this ability – and to brush off such a clear example of artistic-badassery is sacrilege. I mean, Blender cannot even draw a curve with the mouse (that sticks to 3D objects) without GreasePencil (i.e. for CAD-based stuff), so at the very least we should be able to legitimately “stick” our strokes to 3D objects WITHOUT requiring a modifier for every single stroke.

Sorry Pablo, I think you’re awesome, but a modifier isn’t what we need.

For painting 3D environments, we need a checkbox to tell GreasePencil to allow our beautiful paint strokes to stick to (and wrap around) the normals of the nearest 3D surface the tip of our pencil finds, and “layer” the materials depending on their stroke order (and perhaps let us “combine” a group of them into a single texture!).
And if we DO go the modifier route, at least “auto-add” the modifier when that checkbox is enabled, and remove the modifier if the checkbox is disabled for the group of strokes. This way, our strokes can be applied to the object as if they were decals, and layered upon one another as if they were a single texture.


Isn’t that Stroke Placement > Surface?

I’m sure there are improvements possible for this use case, but you seem to be saying this is not possible at all?

CC @Antonio_Vazquez

You can draw on 3D surfaces by using Surface Stroke Placement since the beginning of grease pencil, one decade ago.
So, that is not surprising that people desiring to share newest improvements are expediting the question.

For Hero movie, one part of environment was Grease Pencil objects. One part was subdivided meshes painted in Vertex Paint mode.

There have been times when I simply wanted to use GreasePencil to paint a curve on a 3D model’s face (that I can later turn into a real 3D curve and convert it to a strip of polygons), but I’m unable to do this.

You can do that. A Grease Pencil Object can be converted to a Curve object (path or Bézier or Polygon Curve) . And that curve can be converted to a mesh.

Here, you are wrong , too.
Blender can do that.
You just have to pass a 3D curve object in Edit mode to have access to a Draw tool in toolbar.
Draw Curve tool uses by default a Cursor Stroke Placement but same Surface Stroke Placement is available in Curve Stroke panel.

Currently, modifiers are applied to the entire Grease Pencil object data. A modifier can be limited to a layer or to vertex group.
So, if a shrinkwrap modifier is added, one day ; it will not be per stroke.

Currently, there are 3 modifiers to help to deform drawing by using other object type :. Armature, Hook, Lattice.
So if you want to deform something you have already drawn, you can.
You can also distort your drawing by using tools in Edit mode or in Sculpt mode (just use View Plane instead of default Front (X-Z)).
Especially in Edit mode, there is an operator useful for that, in Grease Pencil menu > Clean Up > Reproject Strokes.

I wish. But not quite – While yes, I can put my strokes on a 3D surface, the normals are all wrong for when you want to create a strip of polys across a mesh surface and align them with it in any useful way. You’d need something like “convert poly strip” instead. Seems like it should just be there. :frowning:
Overall, there’s really no way to do that Tarzan background painting thing with Blender + GreasePencil as it is now due to the normals issue.

See above about the normals…

Wow — consider me corrected!

It took me nearly two hours of fiddling around with it to just figure out how to get the “Draw tool” to appear in the toolbar. Thanks for pointing this out. Sadly, I still see no way to reproduce anything close to that Tarzan background painting experience with Blender… but one can hope?

This is a good place to start with a scenario like that motorcycle situation. Thanks for sharing.

This does kind of concern me though – I think a shrinkwrap modifier really does need to exist, and like you said, it really shouldn’t be per-stroke (for speed purposes). However, a shrinkwrap modifier would (ideally) grab a copy of the mesh it is painting on, and create a new GreasePencil object (with a new modifier automatically-added to it) for any new mesh a user would paint upon. It’d kind of act like “color picker” – except it grabs surface geometry instead of colors. You would use this to deform the stroke as it is drawn, but in more of a “decal” like way, then apply it to the object’s texture map/UV later on perhaps (to make it run more quickly). I think limiting this to a collection would be useful too so you can have something resembling “layers” as was suggested modifiers adhere to (and could be limited to). So, perhaps, one could “unapply strokes” from the texture map this way too. Just something to think about.

I think if something like this were to be added, it is probably a good idea to consider adding it now, rather than later, just because, I mean – 3D painted backgrounds that look 2D. – How could Blender not support that? :slight_smile:

In Curve Edit Mode, you have the ability to manage Tilt of curve per control point.
That may be laborious if you draw lots of points.

Draw Curve tool was thought for beveled extruded curves.

Grease Pencil Strokes have a thickness following same principle.
So, there is no normal issue. When expected result is just a cylindrical thickness.

For obtaining a flat surface, those tools are not satisfying.
But there are several addons using Grease Pencil that are providing that : BSurfaces or Quick Draw.

Well. Current painting experience was sufficient to produce Hero movie.
It was recently improved.
Grease Pencil refactor will bring Vertex Colors Painting in 2.83.
So, that should be possible to do something closer to Tarzan in 2.83 in an intuitive way.

But Grease Pencil strokes are 3D data. And choosing to do things exclusively with GP objects may be problematic with you want a detailed environment.
That might be less memory consuming to use a mesh with a UVmap painted in Texture Paint mode for a large part of environment.

The problem is not much as strokes placement or drawing in 3D but how the brush engine works/feel.
Greace Pencil doesn’t use bitmap brushes, I think it’s a shader or something, you can’t get that traditional painting for the backgrounds, it must be done in a 2d software.

But you can get good results by combining different techniques like this one.