GPv3: Onion Skinning
Implements the GPv2 onion skinning functionality. There are no functional changes exept for the `use_ghosts_always` option, which has been removed. This was used to show onion skinning in the final render. Pull Request: https://projects.blender.org/blender/blender/pulls/119792
This commit is contained in:
@@ -231,6 +231,72 @@ class DATA_PT_grease_pencil_layer_relations(LayerDataButtonsPanel, Panel):
|
||||
col.prop_search(layer, "viewlayer_render", context.scene, "view_layers", text="View Layer")
|
||||
|
||||
|
||||
class DATA_PT_grease_pencil_onion_skinning(DataButtonsPanel, Panel):
|
||||
bl_label = "Onion Skinning"
|
||||
|
||||
def draw(self, context):
|
||||
grease_pencil = context.grease_pencil
|
||||
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
col = layout.column()
|
||||
col.prop(grease_pencil, "onion_mode")
|
||||
col.prop(grease_pencil, "onion_factor", text="Opacity", slider=True)
|
||||
col.prop(grease_pencil, "onion_keyframe_type")
|
||||
|
||||
if grease_pencil.onion_mode == 'ABSOLUTE':
|
||||
col = layout.column(align=True)
|
||||
col.prop(grease_pencil, "ghost_before_range", text="Frames Before")
|
||||
col.prop(grease_pencil, "ghost_after_range", text="Frames After")
|
||||
elif grease_pencil.onion_mode == 'RELATIVE':
|
||||
col = layout.column(align=True)
|
||||
col.prop(grease_pencil, "ghost_before_range", text="Keyframes Before")
|
||||
col.prop(grease_pencil, "ghost_after_range", text="Keyframes After")
|
||||
|
||||
|
||||
class DATA_PT_grease_pencil_onion_skinning_custom_colors(DataButtonsPanel, Panel):
|
||||
bl_parent_id = "DATA_PT_grease_pencil_onion_skinning"
|
||||
bl_label = "Custom Colors"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_header(self, context):
|
||||
grease_pencil = context.grease_pencil
|
||||
self.layout.prop(grease_pencil, "use_ghost_custom_colors", text="")
|
||||
|
||||
def draw(self, context):
|
||||
grease_pencil = context.grease_pencil
|
||||
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.enabled = grease_pencil.users <= 1 and grease_pencil.use_ghost_custom_colors
|
||||
|
||||
layout.prop(grease_pencil, "before_color", text="Before")
|
||||
layout.prop(grease_pencil, "after_color", text="After")
|
||||
|
||||
|
||||
class DATA_PT_grease_pencil_onion_skinning_display(DataButtonsPanel, Panel):
|
||||
bl_parent_id = "DATA_PT_grease_pencil_onion_skinning"
|
||||
bl_label = "Display"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw(self, context):
|
||||
grease_pencil = context.grease_pencil
|
||||
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
# This was done in GPv2 but it's not entirely clear why. Presumably it was
|
||||
# to indicate that the settings will affect the onion skinning of the
|
||||
# other users.
|
||||
layout.enabled = grease_pencil.users <= 1
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.prop(grease_pencil, "use_onion_fade", text="Fade")
|
||||
sub = layout.column()
|
||||
sub.active = grease_pencil.onion_mode in {'RELATIVE', 'SELECTED'}
|
||||
sub.prop(grease_pencil, "use_onion_loop", text="Show Start Frame")
|
||||
|
||||
|
||||
class DATA_PT_grease_pencil_settings(DataButtonsPanel, Panel):
|
||||
bl_label = "Settings"
|
||||
|
||||
@@ -257,6 +323,9 @@ classes = (
|
||||
DATA_PT_grease_pencil_layer_masks,
|
||||
DATA_PT_grease_pencil_layer_transform,
|
||||
DATA_PT_grease_pencil_layer_relations,
|
||||
DATA_PT_grease_pencil_onion_skinning,
|
||||
DATA_PT_grease_pencil_onion_skinning_custom_colors,
|
||||
DATA_PT_grease_pencil_onion_skinning_display,
|
||||
DATA_PT_grease_pencil_settings,
|
||||
DATA_PT_grease_pencil_custom_props,
|
||||
GREASE_PENCIL_MT_grease_pencil_add_layer_extra,
|
||||
|
||||
@@ -7861,6 +7861,8 @@ class VIEW3D_PT_overlay_grease_pencil_options(Panel):
|
||||
'OBJECT': iface_("Grease Pencil"),
|
||||
}[context.mode], translate=False)
|
||||
|
||||
layout.prop(overlay, "use_gpencil_onion_skin", text="Onion Skin")
|
||||
|
||||
if ob.mode in {'EDIT'}:
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
|
||||
Reference in New Issue
Block a user