Dev:Ref/Release Notes/2.77/GPencil

From Blender Developer Wiki
Jump to: navigation, search

Blender 2.77 - Grease Pencil

This page describes the new features and improvements developed in the GPencil_Editing_Stage3 branch, and now included in Blender 2.77.

Highlights include:

  • Stroke Sculpting
  • A proper "Edit Mode" in the 3D View
  • Recoded eraser with pressure sensitivity
  • An operator to restrict editing to the active layer only (Isolate Layer)
  • Transform Manipulator support
  • Animation editing improvements including Copy/Paste and more advanced channel filtering
  • ... and many more UI tweaks

Stroke Sculpting

The biggest new feature is the addition of the new "stroke sculpting" functionality. This allows strokes to be edited using the familiar brush-based sculpting metaphor, as seen for mesh modelling and particle grooming.

Some demo videos:

<youtube width="600" height="340">krpuHYhOmOw</youtube>
First Stroke Sculpting Demo by Joshua Leung (aligorith)

<vimeo width="600" height="340">140485204</vimeo>
GP - Doodle#2 - Drawing & using sculpt tools & some animation in Grease Pencil by Daniel M. Lara (pepeland)

Hotkeys and Usage


  • ELMB Template-LMB.png - Hold and drag to sculpt
  • ECtrlLMB Template-LMB.png - Same as above, but with inverted effects (if the brush provides the option to apply the inverse effect)

While Sculpting (i.e. with the pen tip down, or LMB Template-LMB.png held):

  • WheelUp Template-MWUP.png - Increase brush size
  • WheelDown Template-MWD.png - Decrease brush size
  • ⇧ ShiftWheelUp Template-MWUP.png - Increase brush strength
  • ⇧ ShiftWheelDown Template-MWD.png - Decrease brush strength

Tools and Menus (in Edit Strokes mode, when not sculpting):

  • DE - Display pie menu with options for stroke sculpting tools. From here, you can access settings for the current brush, as well as change which brush is active.
  • ⇧ ShiftF = Set Brush Strength
  • CtrlF = Set Brush Size


Several tools for editing Grease Pencil strokes are provided in the form of brushes which you can use to "paint" or "sculpt" the appearance of the strokes without having to keep doing a tedious select-tweak-select-tweak pattern of edits. The brushes currently implemented are:

  • Smooth
  • Thickness
  • Grab
  • Push
  • Twist
  • Inflate/Shrink
  • Clone

Smooth Brush

The Smooth Brush allows you to selectively smooth out jitter/shake and bumpiness, to tidy up messy parts of your sketches. Compared to a one-click solution, this brush gives you more control over how much smoothing gets applied, and crucially, 'where'.

  • Affect Pressure - Use this option to perform smoothing on stroke thickness values.

Thickness Brush

The Thickness Brush can be used to increase or decrease the thickness of the parts of the stroke under the cursor.

  • Brush strength controls how quickly the brush will increase or decrease the thickness of strokes that it passes over
  • It can be used for two purposes:
    • Add = Make thicker
    • Subtract = Make thinner
  • It uses a timer, which means that if you hold the cursor over a particular region for a few seconds, that region will get progressively thicker/thinner
  • Beware: There is no smoothing of thickness values provided by this brush. Use the Smooth brush with the "Affect Pressure" option enabled if you need to fix this.

Grab Brush

The Grab Brush functions a bit like a combined single-click circle select + grab/translate operation would. This brush takes the stroke points which fall within the brush circle when the sculpting action begins, and allows you to translate this set of points.

The main advantage of this method over circle select + grab, is that it saves a few clicks and key presses, making the art creation process more fluid.

Push Brush

The Push Brush is very similar to the Grab brush, in that it also allows the user to translate stroke points. However, unlike the Grab Brush, the Push Brush is not restricted to operating only on the first set of points which were under the brush when the sculpt action was initiated. Instead, on each brush movement, the points currently under the brush get moved based on the amount the brush has moved since the last time it was evaluated.

Twist Brush

The Twist brush can be used to twist/rotate points around the cursor, creating a "swirling" effect. It is useful for applying low levels of distortion to stroke points.

The CW/CCW toggles can be used to control whether the points are rotated in a clockwise (CW) or anti-clockwise (CCW) direction

Note: This currently doesn't work so well in 2D editors.

Pinch/Inflate Brush

The Pinch/Inflate Brush can be used to draw points away from the cursor, or towards it.

  • Like the Thickness brush, this can be used in two modes:
    • Pinch = Draw points towards the cursor
    • Inflate = Push points away from the cursor

Clone Brush

The Clone Brush can be used to paste whatever is on the Copy/Paste buffer on the active layer, located at the point where you clicked.


  1. Before use, select some points, and Ctrl-C to copy them.
  2. Position the cursor over where you'd like to paste the copied strokes
  3. Hold and drag to position and adjust the pasted strokes

A demonstration:

<youtube width="600" height="340">_vTAVKFYxXw?t=1m55s</youtube>
Clone Brush Demo (from 1:55)

There are 3 modes of operation:

  • Stamp Mode - Move the newly pasted strokes so that their center follows the movements of the brush/cursor.
  • Stamp + Smudge - When the Use Falloff option is enabled, instead of moving all the newly pasted strokes by the same amount, only the points that are currently under the cursor get affected. Thus, this in this mode of operation, the brush is closer to a Paste + Push operation instead.
  • Continuous - As the brush moves, repeatedly just paste new copies for where the brush is now. In effect, this treats the contents of the copy buffer as the "brush template/kernel" used for "dabbing" samples all over the canvas

General Sculpting Notes

  • The Use Selection Mask toggle (per brush setting) can be used to restrict the brush to only operating on the selected points.
  • When Use Falloff is enabled, a linear falloff is used when calculating the influence of the brush on a point. That is, a point closer to the midpoint of the brush (i.e. the point under the cursor) will get affected more than the ones at the edges.
  • As in the Mesh Sculpting tools, the Use Pressure toggle beside the Strength slider is used to determine whether the tablet pressure values are used to control how strong the effect of the brush is

Drawing Tool Improvements

Eraser Improvements

The eraser has been recoded to make it nicer to use when creating art.

  • The eraser now has much "softer" behaviour. Specifically, it is now pressure sensitive (with a linear falloff from the center of the eraser circle), and will try to reduce the thickness of strokes before removing them.
  • The eraser now operates on all visible and editable layers, instead of just the active layer
    • This reduces "mode/context errors" (e.g. trying to erase, and then realising that you've got the wrong layer active). Care is advised, as you may not accidentally erase stuff you wouldn't have before (e.g. the rest of the scene, when working with screen-space overlays)
    • If you need the old behaviour, it's possible to easily lock all the other layers with just a single click (or to even bind that to a dedicated hotkey)
    • If the active layer is locked, it will not be possible to erase any strokes at all.

  • By default, the eraser can be activated by just using the "eraser" end of your stylus, thanks to the event system changes (noted below)
  • Various bugs have been fixed (e.g. when sharing the datablock between different editors, or with the eraser size if the paint operation doesn't work.

Additive Drawing

The new "Additive Drawing" option makes it easier to animate shots where you're building on a result from a previous frame. The following video demonstrates how this can be used in an animation workflow:

<youtube width="600" height="340">Fqjv_CKgLlI</youtube>
"Additive Drawing" Demo - Ocean Ripples by Joshua Leung (aligorith)

For more details, see 2cdd34e

Stroke Placement Settings

The "Stroke Placement" settings are now stored as part of the Tool Settings, instead of being per datablock. There are no changes to where you'll find these settings in the UI (i.e. in most editors, you'll still find these in the Tool Settings region); this is purely an internal/under-the-hood change.

The main benefit of this change though, is that it means that you don't need to create a datablock first to be able to specify how you'd like your strokes converted to 3D (or 2D) space. Since these settings are now stored in tool settings, they are "always available".

On a technical level, these settings are now stored in context.tool_settings as one of four new properties. The specific one to use depends on which editor you're working in:

  • View 3D
    • context.tool_settings.gpencil_stroke_placement_view3d - The "Stroke Placement" enum
    • context.tool_settings.use_gpencil_stroke_endpoints - The "Only Endpoints" toggle
  • Sequencer (Preview Region)
    • gpencil_stroke_placement_sequencer_preview
  • Image Editor
    • gpencil_stroke_placement_image_editor
  • View2D (e.g. Nodes Editor)
    • gpencil_stroke_placement_view2d
Python API Breakage Warning
Addons which use the [GreasePencil].draw_mode setting will now need to be modified to use the new settings via context.tool_settings. In most cases (e.g. for most modelling addons, which use context.object.grease_pencil.draw_mode), the existing code should be changed to use context.tool_settings.gpencil_stroke_placement_view3d

Editing UI

  • Stroke editing now has its own dedicated Edit Mode (Edit Strokes) when working the 3D View.
    • Menus in 3D View Header - Easier tool access is now presented via the 3D View menus, which now show the appropriate Grease Pencil tools now
    • Easy access to some useful tools is now provided on the 3D View header - e.g. Copy/Paste.
    • There's a dedicated mode selector in the 3D View header to make editing GP strokes seem more like working with nay other type of Blender geometry data
    • Full compatability with older versions of Blender - No new/special stuff was really needed, so there shouldn't be any problems loading older files
    • The "Enable Editing" toggle is now in the main Grease Pencil panel, instead of the "Edit Strokes" panel (which is now collapsed by default). The "Edit Strokes" and "Sculpt Strokes" panels are only available when in Strokes Edit Mode (i.e. "Enable Editing" is enabled).

  • DW pie menu has been tweaked to provide more tools for managing layers
    • There's now a dropdown beside the active layer's name for changing the active layer
    • There's also a button to delete the active layer

  • The Isolate Layer operator can be used to toggle whether the active layer is the only one able to be edited or not. It can be activated using either the "Star" button (below the Up/Down buttons) or by using Numpad*

  • Various tweaks have been made to the Onion Skinning UI, to make it easier and nicer to use
    • There is now a toggle on the header (when in Strokes Edit Mode) for quickly turning Onion Skinning on and off
    • Default colours have now been defined for the before/after onion skin colours. Currently there is no way to customise this manually, as can currently be done for the default stroke colour (on new layers).
    • Onion skins are not displayed when scrubbing the view and/or playing back animation. This makes it easier to see the motion "as-is" instead of being clouded by all the onion skins.

  • Event System - It is now possible to bind things to Stylus Tip and Eraser events when defining keymaps.
    • By default, the Eraser is now mapped to Grease Pencil's eraser
    • Stylus Tip is not bound to anything by default, as this could make Blender unusable for those using Blender with a stylus only (i.e. no mouse).
    • Care is needed when mapping events using the Stylus Tip. This tends to be a bit over-eager to match events, and may end up blocking/catching events it shouldn't be catching.


  • Several improvements have been made to the Transform tools:
    • It is no longer necessary to set the "gpencil_strokes" property when calling transforms to work on strokes. The context is automatically detected now, so this isn't necessary now.
    • Transform manipulators can be used to transform Grease Pencil strokes

  • ⇧ ShiftS now brings up the "Snap To" menu when working in the 3D View. (Other 2D views are currently not supported, as they lack a "2D cursor")

    This makes it possible to snap the 3D Cursor to stroke points (useful for targeting the start of a stroke, etc.) or to snap the stroke to some point in space.

  • ⇧ ShiftG (Select Grouped) can be used to select all strokes on the same layers as the selected points.

  • M can now be used to move Grease Pencil strokes between Grease Pencil layers (including to a new layer).

  • AltC can be used to access the "Convert to Geometry" operator

Animation Editing

  • Copy/Paste for keyframes now works in the Dope Sheet Editor ("Grease Pencil" mode) again for the first time since 2.4x
  • It is now possible to only show the Grease Pencil blocks attached to the current scene and the objects within in.
  • Layers can now be filtered based on their names in the Dope Sheet Editor
  • I can now be used for creating blank Grease Pencil frames at a particular time in the Dope Sheet Editor
    • It will create blank frames if Additive Drawing is disabled
    • Otherwise, it will make a copy of the active frame on that layer, and use that
  • Keyframes can be mirrored in time using ⇧ ShiftM in the Dope Sheet Editor again

Sequencer Integration

  • Fix: Rendering OpenGL previews using the sequencer will now render the world backgrounds associated with each film instead of defaulting to the gray background (and transparent, when saved to certain formats).
    This is useful when using the sequencer to render out a film made by cutting together Grease Pencil shots from different scene files, in a non-destructive workflow. It is also useful for rendering out nicer looking animatics.