Integrated keyframes display + editing in the Dopesheet
High-Priority - In Progress
1) Make it possible to edit Grease Pencil keyframes in the DopeSheet alongside normal animation
While doing some animation tests, I quickly found that indeed, this is one of those things that would really come in handy. Indeed, as seen in the screenshot above, showing all the channels/keyframes together in the same view is quite easy to do. The "hard" part is the fact that I have to go through fixing all the operators in the Dopesheet Editor to work on a mix of both! That's because, the majority of the operators in the Dopesheet currently assume that they will only ever encounter keyframes, and will crash if they encounter anything else!
2) Copy + Paste Keyframes
Well, this is really a sub-task of the above really. The copy and paste tools were not restored for GPencil keyframes in the Dopesheet when porting from 2.4 to 2.5; in fact, a there are a few other tools which have a similar fate.
High Priority - Planned
3) Copy + Paste Strokes
Currently, while you can duplicate strokes within the same layer, there's no easy way to copy/move them between layers. The idea here is that we would implement a copy/paste buffer for Grease Pencil strokes so that you can copy all the selected (and visible strokes), then be able to paste them into which layer is active. With this in place, it should be much easier to animate just the outlines in one layer, then copy these into another to animate the fills (and/or potentially the shadows too!).
4) Shrink/Fatten Transform Tool - To adjust pressure values of stroke points
Just like how Alt-S is used on curves to change the thickness of the curve at the selected points, the same should work for strokes.
(Somewhat related is also the ability to set the "scale" at which volumetric stroke thicknesses are interpreted. While the current hardcoded value was OK for the tests I did initially, in the snowman file, this turned out to be far too large in a few cases)
5) Ability to parent a layer's strokes to an object/bone
For object-attached GP datablocks, this feature would make it so that a layer can be made to be transformed by the owner's transforms. There are two potential issues that need to be worked through here: 1) issues when drawing new strokes (i.e. ensuring that the right inverse transforms are applied, and that it all works correctly), 2) ensuring that the layer order is still respected
6) Isolate Layer
A quick way to make just the active layer the only one editable. This could also be paired with a way to only show the active layer...
Medium Priority - Planned
7) Smooth Strokes
A brush-like tool to selectively remove the jitter/wobble from parts of strokes. This may end up being folded in with the "sculpt" functionality noted below...
8) Snap to Cursor / Snap Cursor to Selected / etc.
I just realised the other day that this functionality is missing
9) Duplicate Layer
A quick way to copy everything in a layer into another layer, to have a quick base to start from (e.g. as another way of doing fills for an already animated set of outlines
Planned - Initial Design Investigation Phase
10) Stroke sculpt tools
This is just basic brush-based warping and distortion of strokes. How exactly this would work and/or how it should be integrated is still to be decided (for instance, should this be a separate operator, or just another little mode?) Possibly by mid-2015.
11) Freestyle Integration
Perhaps in collaboration with Tamito, we'll try to figure something out here. From initial investigations, it seems that if we just let these strokes get added during one of the early geometry-import stages in the pipeline it might be enough to get what we want. Then again, it's likely there might be other complications I'm not aware of here yet. Anyways, it is definitely on the cards as something I'd like to see in 2015 (optimistically by the end of the year).
12) Better ways to manage the layers
What's clear from seeing several workflows is that multiple layers are often needed to fully render each character and/or prop. This presents the natural issue of how can we more efficiently manage groups of such layers?
13) Strokes being deformed by armatures/modifiers
For more "Paperman"-like goodness, it would be interesting to look into letting modifiers deform GPencil strokes too. But, then again, that would start adding a whole other level of complexity under the hood. It might have to wait until the viewport refactor requires some changes (see below).
14) Split by depth?
One (non-intuitive) issue I ran into when doing the snowman test were issues surrounding where strokes placed at different depths in 3D space didn't always get ordered in the expected ways, due to the way that layers are ordered. The simplest (to implement) solution here is to have some tools to split layers out so that they behave appropriately according to scene depth. More investigation will be needed here though. It could also be a case here that Stroke Copy/Paste is enough to render this a mere nuissance.
Longer Term - No firm dates yet
Port stroke drawing to newer OpenGL techniques (i.e. GLSL shaders + persistent vertex/geometry buffers)
Depending on how the Viewport Project progresses, we'll eventually need to look into porting the Grease Pencil drawing code to some newer OpenGL/GLSL techniques. My current understanding is that most of the drawing code should still function fine in the interim - that is, there will be a compatability layer which emulates the behaviour of the
Having said that, once we have some nicer drawing code in place, with the ability to use fancier shader techniques (and hopefully with a nice system for easily swapping in/out the shaders needed), it makes sense to upgrade the Grease Pencil drawing code to a more sophisticated set of drawing techniques. One of the main benefits to come out of this is that we can finally have ways of drawing good quality lines (i.e. with properly rounded tips/corners, as thick as we want them to be, control over the hardness/softness of the line, and maybe even different types of stroke texturing).