This commit is a full refactor of the grease pencil modules including Draw Engine, Modifiers, VFX, depsgraph update, improvements in operators and conversion of Sculpt and Weight paint tools to real brushes.
Also, a huge code cleanup has been done at all levels.
Thanks to @fclem for his work and yo @pepeland and @mendio for the testing and help in the development.
Differential Revision: https://developer.blender.org/D6293
Add new icons and panels Grease Pencil Dopesheet to manage layers without having the properties panel visible.
Also, the icons are in the same order in Dopesheet, Layers and Material list to keep consistency.
As the number of columns for icons is limited to 3 and we also need use a factor, I have impleted the change using slider area. Also, the slider option is enabled by default for 2D Template.
See T72026 for more info.
Reviewed By: mendio, pepeland, billreynish
Differential Revision: https://developer.blender.org/D6328
Rename and separate Layers and Materials Specials menu from other buttons for better consistency
Reviewed By: antoniov
Differential Revision: https://developer.blender.org/D6271
This new filter allows to select only some type of keyframe (keyframe, breakdown, etc).
This was a request of artists that are used to work with other 2D softwares.
Also some cleanup to remove aninmatable option to some properties.
A new parameter in the layer adjustment panel allows to define the color of the channel in Dopesheet.
This is needed when there are a lot of layers.
See D4623 for more details.
In keeping with convention to match code & UI naming.
- No user visible changes.
- Include 'menu' in the name since context is an overloaded term.
- While a few of these are panels, from a user perspective they are
still context menus.
The UI was trying to use screen_context.c for its poll and draw
functions. So the active object and active object data and active layer
was used in the UI, instead of the context one.
Besides, for the material, the wrong context path was used altogether
when the active object was a greasepencil.
This would lead to all sort of pinning problems:
* A Mesh panel is pinned, but the active object is a grease pencil, the
grease pencil panels would show.
* If a Grease Pencil (data) panel is pinned, but the active object is not
the one pinned, nothing would show.
* Material panels and pinning were totally broken, showing the material
context for pinned mesh data panels even.
I also sanitized the name of the panels, their inheritance and poll
functions.
Reviewers: antoniov, brecht
Subscribers: billrey
Differential Revision: https://developer.blender.org/D4470
There was a conflict between Object "In Front" and how the strokes were managed in Stroke panel for grease pencil datablock.
In order to keep consistency, the order of the object has been moved to Object level and now it's using the standard "In Front" flag. As all it is 3D, the option "Back" has been removed.
This also fixes the problem with task T62137.
Also related to commit 54ffc4e19d and D4405
Note: Things were working fine if you were to pin the Grease Pencil
object, but not if you were pinning the GP data.
In too many poll functions context.object was being requested when
a simple context.gpencil_data would suffit.
Panels that are still not showing in pinning:
* DATA_PT_gpencil_display.
The panel needs to be split in sub-panels, leaving all object-dependent
properties in its own panel so we can poll it away, while showing the
rest.
* * *
This commit doesn't handle greasepencil material. In this case I
recommend we do as properties_material.py and have a generous poll(),
followed by different drawing logics whether or not we have an object.
- Add a new panel to differentiate between viewport display and stroke options
- Use clearer naming for depth ordering and stroke thickness properties
Reviewers: antoniov
Differential Revision: https://developer.blender.org/D4405
Add a new Draw Mode to display panel in order to define the z-.depth order of the strokes using the real 3D position and not the 2D layer position.
This change makes possible to use VR with grease pencil drawings because the depth of the strokes change with camera position. Also, provide an alternative solution to tasks: T57859, T60325,
The parameter only works with 3D space depth ordering. The Back and Front depths are incompatible with 3D Space mode.
Options are:
- Back
- Front
- 3D Space->2D Layers (default)
-3D Space->3D Location (new mode)
This commit groups a set of new tools that were tested in grease pencil object branch before moving to master. We decide to do all the development in a separated branch because it could break master during days or weeks before the new tools were ready to deploy.
The commit includes:
- New Cutter tool to trim strokes and help cleaning up drawings.
- New set of constraints and guides to draw different types of shapes. All the credits for this development goes to Charlie Jolly (@charlie), thanks for your help!
- Segment selection mode to select strokes between intersections.
- New operator to change strokes cap mode.
- New option to display only keyframed frames. This option is very important when fill strokes with color.
- Multiple small fixes and tweaks.
Thanks to @pepeland and @mendio for their ideas, tests, reviews and support.
Note: Still pending the final icons for Cutter in Toolbar and Segment Selection in Topbar. @billreynish could help us here?
Too many things done wrong in original rBd12b3767f81d to list them all
here, hopefully nothing bad sneaked in again this time :|
Also cleaned up a little the 'sort by name', even though (since we only
have two options by default, sort by index and by name) we can abuse it
as a binary option for now, this is not a bitflag...
Now it's possible define the blend mode between layers including the option to clamp the layer using underlying layers.
Also a new Simplify option has been added to disable blend layers.
Now the grid is always controlled by the topbar selector and not in the canvas panel. To have two places to define orientation was confuse.
The orientation by default (no lock) is always to view plane.
- Draw on back buttons moves near mode
- zDepth offset moved from View Panel to Popover
- Target for Stroke mode moved to popover
- New First point snap mode
After a lot of discussion about this option (see 18f1175940) we have decided set always the order of GP layers in 2D mode (Top->Down) and remove the parameter from User Preferences screen.
Internally all works equal, but in the UI the list is inverted.
The filter buttons to reverse the list or sort alphabetically have been removed because these buttons are not logic in this context.
Now by default the UVs are calculated with a fixed size and this makes easier to add patterns for drawings like Manga. Before, the texture changed depending of the stroke size.
The grid now can be configured by object because this helps to identify objects and allows to define diferent grid parameters for each objects.
Also added a color option.
This parameter allows to define the percentage of offset of a stroke when uses surface mode.
Before, this was a fixed value, but for some artists' purposes, it's good to have the option to change it.