In 2008, Joshua Leung started to work on Grease Pencil for the first time. It started out as an annotation tool, directly in the 3D viewport.
(Credits Virgilio Vasconcelos)
Joshua designed it to be very simple with just the functionalities it needed. But the community that formed around Grease Pencil had bigger plans and started to use it for things he did not anticipate.
Fast forward to 2019, when Grease Pencil became its own object for 2D animation in Blender 2.80 - a big milestone from the initial implementation. This version was a major overhaul and had many new features, better performance, and new rendering capabilities. The main developers working on it were Antonio Vázquez and Clément Foucault.
(Credits Sergi Miranda)
Today, Grease Pencil has grown even more. It is used by smaller and bigger studios around the world. Some movies, like "Unicorn Wars", have been fully animated with it.
And while many aspects of the tool have immensly improved over time, the core data-structures of Grease Pencil have remaind the same for about 15 years. We are now facing the limitations of its initial design - introducing: Grease Pencil 3.0.
"Grease Pencil 3.0" is a full rewrite of the current Grease Pencil implementation. It is meant to lay a solid foundation for the next 10+ years for Grease Pencil.
In short, the goals of the project are as follows:
The new implementation is based on the same back-end as the new hair curves, designed with multi-threading in mind, capabable of handling much more data, and written in a modern C++ style.
Because the timeline is rather short, the main focus will not be on new features but rather on making sure that we have all the functionality of the current Grease Pencil in place. It is mostly a big refactor. That being said, there will be some new things to look out for.
The ability to group layers is part of the redesign of the new data-structure.
Layer groups allow the user to easily group multiple layers, collapse them in the layer tree, control visibility, editability, onion skinning, and more. Groups can also be color coded.
(A UI mock-up of the new layer-tree)
The new data-structure allows for things like frames having a start and an end as well as instancing a drawing (even on different layers). Instanced drawings share the drawings data, e.g. changing one will change the other.
(A UI mock-up of the reworked timeline)
Grease Pencil layers now render the keyframes as boxes to indicate the amount of time the drawing is held for. Instanced keyframes are shown as faded.
With this completly new implementation, we expect the Python API to break in Blender 4.0. That being said, we will try to make sure the same functionality is there, so that any script can be adapted to work with Grease Pencil 3.0. There will be more info on this for Python developers.
Once the rewrite is completed, and we have the more flexibile architecture in place, we can focus on improving and expanding the Grease Pencil feature set.
End of 2022, the Grease Pencil module conducted a survey to figure out what the community (hobbyists and professionals alike) wanted the most. The results showed us that our plans are well aligned with what people expect to have in Grease Pencil.
Here is an (incomplete) list of things on our radar:
If you are interested in the development, you can follow the progress over on the Grease Pencil 3.0 workboard.