# Grease Pencil Strokes Have Depth?

Hello, I’m a little confused. Grease Pencil is intended for 2D work, but I see that GP’s Stroke materials have depth (relative to the axis of the drawing) whereas fills are truly flat. See image below.

My black stroke was filled in with a puplish fill. The stroke has depth (and roundness), while the fill is a flat plane.

I’m assuming this is “just how strokes work,” but I’d like to know if there’s an option I’m overlooking to generate flat stroke shapes, or to flatten them after drawing. I tried scaling Y to 0, but that caused a uniform scaling of my GP samples along all axes.

Hi,

Sorry in advance, perhaps I didn’t get you that right, but from what I’ve understood, you wanna know if there’s any possibility to be able to draw something like a 3D figure, is that right?

Let me try to clarify my concern.

I’m trying to use GP to create 3D characters with the “perfectly flat” aesthetic of PaRappa the Rapper. See image below.

It seems that GP Strokes (or at least their samples/pixels) are volumetric in nature, and not actually 2D. Fills, on the other hand, appear to be perfectly flat.

Since posting, I’ve learned about the Outline tool, where you effectively trace a stroke. I also realize I can draw fill shapes instead of strokes.

Both of those options involve an awful lot of extra work over time, and the results are much less editable than strokes.

So, I’m trying to determine if there’s a way to flatten strokes and remove their visible depth.

You can use the outline modifier. Restrict its influence to the stroke material and you should get the flat shapes you are looking for.

1 Like

Maybe I’m not applying the modifier correctly, but it’s not achieving the desired results. Here is a quick GB doodle with no modifier applied:

Here it is with the modifier applied, and its settings:

Rather than outlining the strokes, it’s just converted the stroke to a fill, eliminating the lineart and leaving me with blobs. I’ll grant you, that it is at least flat, but I could just as easily have drawn with the fill in the first place and omitted the modifier.

Also, the Outline modifier apparently depends on the active camera, so if I rotate the camera at all, the end result distorts unpredictably.

Yeah, you are right. I didn’t really test it thoroughly, the modifier behaves somewhat… unexpected.
To be honest - I don’t really get your first doodle (the grey circle with the red one inside) but the camera dependency is really weird. To solve the latter it might be best to place the camera 90° in front and then apply the modifier at the end. Even then the result is kind of crumpled. I could make it comletely flat by scaling Y to zero and apply scale. No idea if that would solve the problem for you.

Already tried that. At a certain point, the Stroke samples stop scaling if the scaling is consumed to Y, or of course disappear entirely if not constrained.

As to having geometry restrict the camera movement, that’s kind of a deal breaker in and of itself.

I’m getting the feeling that GP just won’t work for this kind of flat geometry, which is really bizarre.

Might be a compromise between strokes being some kind of hybrid 2D/3D thing. I like the system a lot, but it has some annoying limitations sprinkled in between. Let’s hope the new GP 3 they are working on will take care of some.

The nearest thing to a workaround I’ve thus far established for myself is to use the Outline tool (not the Outline Modifier!) from Edit Mode > Stroke > Outline, but it isn’t as simple as just using that feature.

Much like the Outline Modifier, the tool I’m referring to also seems to depend on point of view. Unlike the modifier, Stroke > Outline works from the current perspective of the 3D viewport used to trigger it.

You could, in other words, have x number of 3D viewports active in your Blender window, and you can go to Stroke > Outline from any one of them. The outline will then look perfectly outline from that perspective but totally incorrect from any different angle.

“Before,” noting which 3D Viewport I’m using to call up Stroke > Outline:

“After,” comparing left and right viewports:

The long and short of it is, if you want perfeclty flat GP objects, you have to draw everything locked to one particular perspective or axis (I prefer “Front X-Z”), and you have to Stroke > Outline while viewing that perspective!

And then you have to have to swap your Stroke material for a Fill.

• You can select all currently visible instances of a specifc Material (or Layer) inside a GP object in Edit mode by first selecting one vertex of something you want to outline, pressing Shift+G, and selecting “Material.” See “Select Grouped”

Assuming you only ever use a single material for your Stroke drawing/s, you can do all of your drawing work and then convert it all without having to worry about forgetting to put something in a Vertex Group. You’ll have to perform the Outline for every keyframe of your GP object, though. You also have to pray to all forgotten elder things that you never need to go back and adjust a “line.”

• Instead of swapping out materials, you can switch the settings of your Stroke material from stroke to fill, which will swap out every instance of that material across your .blend. You can even switch back and forth, if you realize you need to add more line art.

Importantly, this does not bypass the need to peform the Stroke > Outline operation, as all of your beautiful lineart will be converted to random filled-in blob shapes.

In Closing:
While this “workaround” does eventually result in a GP Object as genuinely “lacking in depth” as PaRappa the Rapper, it might as well be a Rube Goldberg machine. Not to mention you still end up losing the editing flexibility of Stroke lineart.

It boggles my mind that a tool touted as “2D” requires this much work to flatten. Please if anyone can clue me into a faster (functional) workaround, or point out some magical setting that causes Stroke materials to actually lack depth, I would love to hear it.

And yes, my intention is to then rig a depthless character and flap them around in 3D space while moving the camera around. It’s crazy, I know.

This post is pretty old but unless I am misunderstanding the question you can solve it in the following manner.

a) put your linework and fills on separate layers (lines on the top layer)
b) set stroke thickness to screen space
c) make certain stroke depth is set to “2d layers” (which is the default)

That should result in what you ask. In the screenshot the GP object lies flat on the xz plane and were looking at an angle. As you can see the stroke thickness is equal all around, not influenced by perspective and not clipped by the fill.

1 Like

Anyway, swing and a miss. I’m not sure what the Screen Space thickness option does, but it doesn’t seem to remove the depth of the strokes. See below:

I realize it plays a bit quickly, but in the version with no stroke, we see that the Fill has no depth and effectively vanishes when viewed at 90°. The Stroke, set to Screen or World space, retains its depth value and can be clearly discerned to have depth and contour from any viewing angle.

Still capture with settings, in case I did something wrong:

Yes, nearly a year on and I haven’t figured this out yet. Or rather, I’m still convinced Grease Pencil can’t do what I’m asking of it.

Funny, this thread bubbled up just now. I’ve been doing a lot of experiments with grease pencil V3 the recent days and you’re right, there is no reasonable way to do this conveniently with the latest stable blender.

But if you can wait just a another few month longer or if you are willing to maybe give the alpha version a try you can sail around a lot of GP’s shortcomings by just using geometry nodes.
It is not yet feature complete though. Not all nodes work and everything is still a bit wonky. But this is what you’re after, right?

flat_stroke.blend (2.8 MB)

I used @higgsas edge offset node.
It’s a great node. I use it all the time. Thankyou higgsas

and as it is a curve to mesh conversion, we are working with standard materials. So procedural stuff is also on the table now.

1 Like

I am now excited. Thanks!

1 Like