[Bf-blender-cvs] [0ecbe2171a0] greasepencil-object: New Grease Pencil Offset modifier
Antonio Vazquez
noreply at git.blender.org
Wed Nov 29 16:48:10 CET 2017
Commit: 0ecbe2171a074a5644cb1055ecaf93ab4b6773e9
Author: Antonio Vazquez
Date: Wed Nov 29 16:47:25 2017 +0100
Branches: greasepencil-object
https://developer.blender.org/rB0ecbe2171a074a5644cb1055ecaf93ab4b6773e9
New Grease Pencil Offset modifier
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/editors/space_outliner/outliner_draw.c
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/CMakeLists.txt
M source/blender/modifiers/MOD_modifiertypes.h
A source/blender/modifiers/intern/MOD_gpenciloffset.c
M source/blender/modifiers/intern/MOD_util.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 99dae1c17e4..4b37991d077 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1938,6 +1938,33 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "use_falloff_uniform")
+ def GP_OFFSET(self, layout, ob, md):
+ gpd = ob.data
+ split = layout.split()
+
+ col = split.column()
+ col.prop(md, "location")
+ col.prop(md, "scale")
+
+ col = split.column()
+ col.prop(md, "rotation")
+
+
+ col.label("Layer:")
+ row = col.row(align=True)
+ row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
+ row.prop(md, "inverse_layers", text="", icon="ARROW_LEFTRIGHT")
+
+ col.label("Vertex Group:")
+ row = col.row(align=True)
+ row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+ row.prop(md, "inverse_vertex", text="", icon="ARROW_LEFTRIGHT")
+
+ row = col.row(align=True)
+ row.prop(md, "pass_index", text="Pass")
+ row.prop(md, "inverse_pass", text="", icon="ARROW_LEFTRIGHT")
+
+
classes = (
DATA_PT_modifiers,
)
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index fd88188f117..fa1e57ba377 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -1059,6 +1059,9 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto
case eModifierType_GpencilHook:
ICON_DRAW(ICON_HOOK);
break;
+ case eModifierType_GpencilOffset:
+ ICON_DRAW(ICON_MOD_DISPLACE);
+ break;
/* GPencil VFX Modifiers */
case eModifierType_GpencilBlur:
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 9a667ba7d5b..50276ea685d 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -104,6 +104,7 @@ typedef enum ModifierType {
eModifierType_GpencilSmooth = 68,
eModifierType_GpencilHook = 69,
eModifierType_GpencilFlip = 70,
+ eModifierType_GpencilOffset = 71,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -1824,7 +1825,6 @@ typedef enum eGpencilBuild_Flag {
GP_BUILD_RESTRICT_TIME = (1 << 2),
} eGpencilBuild_Flag;
-
typedef struct GpencilLatticeModifierData {
ModifierData modifier;
struct Object *object;
@@ -1895,6 +1895,24 @@ typedef enum eGpencilSimplify_Flag {
GP_SIMPLIFY_INVERSE_PASS = (1 << 1),
} eGpencilSimplify_Flag;
+typedef struct GpencilOffsetModifierData {
+ ModifierData modifier;
+ char layername[64]; /* layer name */
+ char vgname[64]; /* optional vertexgroup name, MAX_VGROUP_NAME */
+ int pass_index; /* custom index for passes */
+ int flag; /* flags */
+ float loc[3];
+ float rot[3];
+ float scale[3];
+ char pad[4];
+} GpencilOffsetModifierData;
+
+typedef enum eGpencilOffset_Flag {
+ GP_OFFSET_INVERSE_LAYER = (1 << 0),
+ GP_OFFSET_INVERSE_PASS = (1 << 1),
+ GP_OFFSET_INVERSE_VGROUP = (1 << 2)
+} eGpencilOffset_Flag;
+
typedef struct GpencilBlurModifierData {
ModifierData modifier;
int radius[2];
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 29894bccd8f..ebe8e5d605b 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -628,6 +628,7 @@ extern StructRNA RNA_GpencilSwirlModifier;
extern StructRNA RNA_GpencilFlipModifier;
extern StructRNA RNA_GpencilSmoothModifier;
extern StructRNA RNA_GpencilHookModifier;
+extern StructRNA RNA_GpencilOffsetModifier;
extern StructRNA RNA_TexMapping;
extern StructRNA RNA_Text;
extern StructRNA RNA_TextBox;
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 37af6b92247..da9b97396ba 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -126,6 +126,7 @@ const EnumPropertyItem rna_enum_object_modifier_type_items[] = {
{eModifierType_GpencilNoise, "GP_NOISE", ICON_RNDCURVE, "Noise", "Add noise to strokes" },
{eModifierType_GpencilSmooth, "GP_SMOOTH", ICON_MOD_SMOOTH, "Smooth", "Smooth stroke" },
{eModifierType_GpencilSubdiv, "GP_SUBDIV", ICON_MOD_SUBSURF, "Subdivide", "Subdivide stroke adding more control points" },
+ {eModifierType_GpencilOffset, "GP_OFFSET", ICON_MOD_DISPLACE, "Offset", "Change stroke location, rotation or scale" },
{eModifierType_GpencilSimplify, "GP_SIMPLIFY", ICON_MOD_DECIM, "Simplify", "Simplify stroke reducing number of points" },
{eModifierType_GpencilLattice, "GP_LATTICE", ICON_MOD_LATTICE, "Lattice", "Change stroke using lattice to deform" },
{eModifierType_GpencilHook, "GP_HOOK", ICON_HOOK, "Hook", "Change stroke using object as hook to deform" },
@@ -489,6 +490,8 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr)
return &RNA_GpencilSmoothModifier;
case eModifierType_GpencilHook:
return &RNA_GpencilHookModifier;
+ case eModifierType_GpencilOffset:
+ return &RNA_GpencilOffsetModifier;
/* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
@@ -586,6 +589,7 @@ RNA_MOD_VGROUP_NAME_SET(GpencilOpacity, vgname);
RNA_MOD_VGROUP_NAME_SET(GpencilLattice, vgname);
RNA_MOD_VGROUP_NAME_SET(GpencilSmooth, vgname);
RNA_MOD_VGROUP_NAME_SET(GpencilHook, vgname);
+RNA_MOD_VGROUP_NAME_SET(GpencilOffset, vgname);
static void rna_ExplodeModifier_vgroup_get(PointerRNA *ptr, char *value)
{
@@ -5182,6 +5186,67 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
+static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "GpencilOffsetModifier", "Modifier");
+ RNA_def_struct_ui_text(srna, "Offset Modifier", "Offset Stroke modifier");
+ RNA_def_struct_sdna(srna, "GpencilOffsetModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE);
+
+ prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "layername");
+ RNA_def_property_ui_text(prop, "Layer", "Layer name");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "vgname");
+ RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_GpencilThickModifier_vgname_set");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "pass_index");
+ RNA_def_property_range(prop, 0, 100);
+ RNA_def_property_ui_text(prop, "Pass", "Pass index");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "inverse_layers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERSE_LAYER);
+ RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "inverse_pass", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERSE_PASS);
+ RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "inverse_vertex", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERSE_VGROUP);
+ RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_ui_text(prop, "Location", "Values for change location");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
+ RNA_def_property_float_sdna(prop, NULL, "rot");
+ RNA_def_property_ui_text(prop, "Rotation", "Values for chages in rotation");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
+ RNA_def_property_float_sdna(prop, NULL, "scale");
+ RNA_def_property_ui_text(prop, "Scale", "Values for changes in scale");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+}
+
static void rna_def_modifier_gpenciltint(BlenderRNA *brna)
{
StructRNA *srna;
@@ -5980,6 +6045,7 @@ void RNA_def_modifier(BlenderRNA *brna)
rna_def_modifier_gpencilsubdiv(brna);
rna_def_modifier_gpencilsimplify(brna);
rna_def_modifier_gpencilthick(brna);
+ rna_def_modifier_gpenciloffset(brna);
rna_def_modifier_gpenciltint(brna);
rna_def_modifier_gpencilcolor(brna);
rna_def_modifier_gpencilarray(brna);
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt
index 85c8d33b0f8..2e8219f3bbc 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -132,6 +132,7 @@ set(SRC
intern/MOD_gpencilflip.c
intern/MOD_gpencilsmooth.c
intern/MOD_gpencilhook.c
+ intern/MOD_gpenciloffset.c
)
if(WITH_ALEMBIC)
diff --git a/source/blender/modifiers/MOD_modifiertypes.h b/source/blender/modifiers/MOD_modifiertypes.h
index 49c5e357b42..008d7418b76 100644
--- a/source/blender/modifiers/MOD_modifiertypes.h
+++ b/source/blender/modifiers/MOD_modifiertypes.h
@@ -99,6 +99,7 @@ extern ModifierTypeInfo modifierType_GpencilOpacity;
extern Modi
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list