[Bf-blender-cvs] [4ed65048efe] greasepencil-object: GPencil: Add switches to Array modiifer
Antonio Vazquez
noreply at git.blender.org
Thu Feb 27 10:55:47 CET 2020
Commit: 4ed65048efeb255dae87b17e5eb4e6d8c5876024
Author: Antonio Vazquez
Date: Thu Feb 27 10:55:38 2020 +0100
Branches: greasepencil-object
https://developer.blender.org/rB4ed65048efeb255dae87b17e5eb4e6d8c5876024
GPencil: Add switches to Array modiifer
New switches to enable Offset, Shift and Object transform.
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/blenloader/intern/versioning_280.c
M source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
M source/blender/makesdna/DNA_gpencil_modifier_types.h
M source/blender/makesrna/intern/rna_gpencil_modifier.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index f4ac128519b..3e0d4f217b3 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1965,13 +1965,21 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Offset:")
- col.prop(md, "offset", text="")
- col.prop(md, "offset_object", text="Object")
+ col.prop(md, "use_offset")
+ subcol = col.column()
+ subcol.enabled = md.use_offset
+ subcol.prop(md, "offset", text="")
+
+ col.prop(md, "use_object_offset")
+ subcol = col.column()
+ subcol.enabled = md.use_object_offset
+ subcol.prop(md, "offset_object", text="")
col = split.column()
- col.label(text="Shift:")
- col.prop(md, "shift", text="")
+ col.prop(md, "use_shift")
+ subcol = col.column()
+ subcol.enabled = md.use_shift
+ subcol.prop(md, "shift", text="")
split = layout.split()
col = split.column()
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 310cd73829a..a09c29c29a2 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -4477,6 +4477,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
const GpencilModifierTypeInfo *mti = BKE_gpencil_modifierType_getInfo(md->type);
switch (mti->type) {
+ case eGpencilModifierType_Array: {
+ ArrayGpencilModifierData *mmd = (ArrayGpencilModifierData *)md;
+ if ((mmd->offset[0] != 0.0f) || (mmd->offset[1] != 0.0f) ||
+ (mmd->offset[2] != 0.0f)) {
+ mmd->flag |= GP_ARRAY_USE_OFFSET;
+ }
+ if ((mmd->shift[0] != 0.0f) || (mmd->shift[1] != 0.0f) || (mmd->shift[2] != 0.0f)) {
+ mmd->flag |= GP_ARRAY_USE_OFFSET;
+ }
+ if (mmd->object != NULL) {
+ mmd->flag |= GP_ARRAY_USE_OB_OFFSET;
+ }
+ break;
+ }
case eGpencilModifierType_Tint: {
TintGpencilModifierData *mmd = (TintGpencilModifierData *)md;
srgb_to_linearrgb_v3_v3(mmd->rgb, mmd->rgb);
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
index f5eb15a54dc..76c0340e45f 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
@@ -72,6 +72,7 @@ static void initData(GpencilModifierData *md)
gpmd->rnd_rot = 0.5f;
gpmd->rnd_size = 0.5f;
gpmd->object = NULL;
+ gpmd->flag |= GP_ARRAY_USE_OFFSET;
/* fill random values */
BLI_array_frand(gpmd->rnd, 20, 1);
@@ -95,9 +96,11 @@ static void BKE_gpencil_instance_modifier_instance_tfm(Object *ob,
int ri = mmd->rnd[0];
float factor;
- offset[0] = mmd->offset[0] * elem_idx;
- offset[1] = mmd->offset[1] * elem_idx;
- offset[2] = mmd->offset[2] * elem_idx;
+ if (mmd->flag & GP_ARRAY_USE_OFFSET) {
+ offset[0] = mmd->offset[0] * elem_idx;
+ offset[1] = mmd->offset[1] * elem_idx;
+ offset[2] = mmd->offset[2] * elem_idx;
+ }
/* rotation */
if (mmd->flag & GP_ARRAY_RANDOM_ROT) {
@@ -131,7 +134,7 @@ static void BKE_gpencil_instance_modifier_instance_tfm(Object *ob,
copy_m4_m4(r_offset, r_mat);
/* offset object */
- if (mmd->object) {
+ if ((mmd->flag & GP_ARRAY_USE_OB_OFFSET) && (mmd->object)) {
float mat_offset[4][4];
float obinv[4][4];
@@ -206,7 +209,7 @@ static void generate_geometry(GpencilModifierData *md,
float mat_offset[4][4];
BKE_gpencil_instance_modifier_instance_tfm(ob, mmd, x, mat, mat_offset);
- if (mmd->object) {
+ if ((mmd->flag & GP_ARRAY_USE_OB_OFFSET) && (mmd->object)) {
/* recalculate cumulative offset here */
mul_m4_m4m4(current_offset, current_offset, mat_offset);
}
@@ -214,8 +217,9 @@ static void generate_geometry(GpencilModifierData *md,
copy_m4_m4(current_offset, mat);
}
/* apply shift */
- madd_v3_v3fl(current_offset[3], mmd->shift, x);
-
+ if (mmd->flag & GP_ARRAY_USE_SHIFT) {
+ madd_v3_v3fl(current_offset[3], mmd->shift, x);
+ }
/* Duplicate original strokes to create this instance. */
LISTBASE_FOREACH_BACKWARD (tmpStrokes *, iter, &stroke_cache) {
/* Duplicate stroke */
@@ -225,7 +229,7 @@ static void generate_geometry(GpencilModifierData *md,
for (int i = 0; i < iter->gps->totpoints; i++) {
bGPDspoint *pt = &gps_dst->points[i];
/* Apply object local transform (Rot/Scale). */
- if (mmd->object) {
+ if ((mmd->flag & GP_ARRAY_USE_OB_OFFSET) &&(mmd->object)) {
mul_m4_v3(mat, &pt->x);
}
/* Global Rotate and scale. */
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index 017af2173dd..e0bf8750025 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -342,6 +342,9 @@ typedef enum eArrayGpencil_Flag {
GP_ARRAY_INVERT_PASS = (1 << 3),
GP_ARRAY_INVERT_LAYERPASS = (1 << 5),
GP_ARRAY_INVERT_MATERIAL = (1 << 6),
+ GP_ARRAY_USE_OFFSET = (1 << 7),
+ GP_ARRAY_USE_SHIFT = (1 << 8),
+ GP_ARRAY_USE_OB_OFFSET = (1 << 9),
} eArrayGpencil_Flag;
typedef struct BuildGpencilModifierData {
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 7fe97e2313e..cbd35157a37 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -1370,6 +1370,21 @@ static void rna_def_modifier_gpencilinstance(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
+ prop = RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_OFFSET);
+ RNA_def_property_ui_text(prop, "Offset", "Enable offset");
+ RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
+ prop = RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_OB_OFFSET);
+ RNA_def_property_ui_text(prop, "Object Offset", "Enable obejct offset");
+ RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
+ prop = RNA_def_property(srna, "use_shift", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_SHIFT);
+ RNA_def_property_ui_text(prop, "Shift", "Enable shift");
+ RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilbuild(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list