Annotation Pencil Design
Closed, ResolvedPublic

Description

In Blender 2.8, the old Grease Pencil feature has been changed to become a separate object type, and a separate mode for drawing and editing. The Grease Pencil object type is designed for 2D animation and illustrations, not note-taking.

However, we still want to keep a simple way to create simple notes and annotations in all our Editors. We call this system Annotation. Here's how we intend to make it work:

The main design goal for the annotation system is for the UI to be very simple and minimal. We don't want to burden users with complex layers and many advanced features while making simple notes. If some users do want that, they can simply use the new GP-objects instead. Think of the Annotation tools as a stripped down, simplified version of the Grease Pencil feature, specifically designed for note taking, without requiring a special object type.

The annotation tools will work as active tools. This kind of tool is exactly the kind of thing active tools was introduced to solve. This way, we can always show the contextually relevant tool settings when a given Annotation tool is active.

As you can see, we can group the Annotation tools in the toolbar like so:

The thickness and orientation will be set in the tool settings, and won't be a layer property. This makes it easier and simpler to use, and for most things users won't even need to use the sidebar.
We may add more Annotation tools, such as rectangles and ovals.

In the Sidebar, we will include a panel called 'Notes'. This replaces the old layers, but is much simpler. This allows users to group different notes, like so:

This will simply allow users to enable/disable various notes.

Annotations will still be able to change over time, so that notes can appear at relevant times in the animation. The keyframes for this can be manipulated in the Dopesheet, just like with the old Grease Pencil feature.

Annotations can be enabled or disabled completely from the Overlays popover.

That's it. For more advanced illustration and drawing, we will recommend users use the Grease Pencil objects instead.

Details

Type
Design
William Reynish (billreynish) triaged this task as Normal priority.
Oleg (DotBow) added a subscriber: Oleg (DotBow).EditedJun 25 2018, 10:01 PM

@William Reynish (billreynish) Hi. It will be very convenient to have "Camera Facing Billboard" option per "annotation" object, when it automatically face to camera view all the time like 3d sprites in games.

Not sure about only one layer.

Internally, we are going to reuse all struct data, and we have already the layers in place. As the color is assigned by Layer, maybe when you are doing annotations you need different colors (red for notes about character A, green for character B).

Adding a layer system support is not complex and it will allow to hide/unhide notes easily.

Edit: I think your "Notes" are the same as layers.

Are we going to support annotations by frame? I mean, if you can create an "animated" annotation. This was my first idea. Maybe you want annotate something about animation in frame 5 and frame 17.

@Matias Mendiola (mendio) Could you upload here the designs you did for annotation panels?

Antonio: The second image shows layers, but here they are renamed to 'Notes', because they don't act like traditional layers anyway, they are just groups of notes, that's all.

The main difference is that colors and thickness are not layer properties, but simply tool settings. Before in 2.7, the thickness was *both*. We think that's not necessary, and overly complex for a simple annotation system, hence why we'd like this change.

I think yes, absolutely, we should still support notes that change over time. That's very useful for giving animation notes, so that they can update and fit with what happens in the current frame. The nice thing is that we don't actually need a UI to control that, because the Dopesheet does the heavy lifting here to allow you to move and delete annotation keys.

I think the new thing billreynish is bringing here is that colors (and thickness) is an individual property of the strokes, not something that is shared among all the strokes in a layer.
That allows for what @Joshua Leung (aligorith) was proposing, which was to have in the same document different revisions of notes (note v1, note v2, ..., note final-final).

I think that can work. I'm not sure about enabling/disabling Notes in the Notes panel though. I feel that they should be an overlay option.

Do you think it's a good idea to add a text input tool?
For people who have no drawing tablet or who have terrible handwriting.

Use the color at top level for annotations is good idea, but it will need some adjust in the internal structs.

The idea is reuse the current GPD datablock, and the color was (<2.77) in layers, later (2.78..9) in Palettes and now (2.8) in materials. The stroke has a reference to this color and any change in the color affects all strokes.

For annotations, we need to add a new field at stroke level with RGB value (not sure we need implement RGBA, maybe this could be a overlay general parameter). Of course if we use this idea in annotations you cannot change the color after draw the annotation, you must erase it and redraw again with a new color.

We also need a flag in GPD datablock to indicate if this datablock is a Annotation or not to use the corresponding color in the internal drawing engine (we will try to reuse drawing methods as much as possible). This flag would have to be used to filter ID datablock selector.

I think this can work.

Antonio: Makes sense and sounds good.

Conclusions from today's meeting - attended by @Dalai Felinto (dfelinto), @Antonio Vazquez (antoniov), @Daniel Lara (Pepeland) (pepeland), @Matias Mendiola (mendio), @Joshua Leung (aligorith).

By and large, we follow William's design, with a few amendments/clarifications:

  • We will reuse the GP datablocks for annotations
  • Color will be a per-layer setting. All strokes in a layer will have the same color. The layers list will show the color swatch for that layer
  • Thickness will be per stroke, and defines the maximum thickness of the stroke. Pressure (0-1) scales the thickness relative to this
  • No onion skinning - Otherwise is ultimately too confusing for users
  • No layer locking options
  • No editing/sculpting functionality will be available for now. We can review this situation down the track if/when the need arises. (It's possible to find solutions here involving just active tools, without requiring separate editing modes, but we won't look into these for now)
  • We briefly discussed the issue of where the data lives. (e.g. If we have it per editor/viewport, loading the files without UI will result in lost notes). Decision was to stick with what's done in 2.7 for GP - that is, a single notes datablock for 3D view (stored on scene level), then the other 2D editors keep doing what they were doing before

I think we can make the color management a little easier with one simple trick.

Instead to create a new note always with default color, we could add different (predefined set) color.

For example, first annotation (layer) is Red by default, second Green, Third Yellow. We could create any rule, but the idea is when create an annotation; don't need to change the color. Maye, this could be a theme parameter.

Did I miss anything?

Also, a quick note that as of a few hours ago, I'd already done some work to get the core functionality working again in at least 3 editors (Image, Nodes, Movieclip). 3D view needs a bit more work (e.g. is it ok to be calling stuff from editors from the DRW module? It's done for bg pictures still, but if we don't do it that way, things could get messy). There are also some issues remaining in the Sequencer Preview (I need to figure out why nothing's happening there atm).

IMO for notes simplicity the stroke thickness should be fixed by default, without use the pen pressure. Pressure could be activated by the user only if needed.

Antonio: That makes sense I think. We could even make it so you can pick the note/color in the tool settings, like so:

It would let you pick from your list of notes. We could even pre-populate the list with two or three useful ones.

This also illustrates the pen pressure.

Yes, an importat ponit in my opinion is that the user see at a first use the diference between Annotation and GPencil. So
a pre-populate list, a default RED Layer color (for example) and no pressure by default (activated by the user only if needed), send the right message to the user in the first
interaction with the Annotation tool.

I completely agreee with this sentiment. Default color set to red is a good choice too.