[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