[Bf-blender-cvs] [f7c0fce0612] soc-2019-npr: Gpencil: Fix stroke duplication offset and UI slider.
YimingWu
noreply at git.blender.org
Fri Jul 5 06:04:41 CEST 2019
Commit: f7c0fce061266803627edd1636834a90ed6fcc3f
Author: YimingWu
Date: Fri Jul 5 12:04:01 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBf7c0fce061266803627edd1636834a90ed6fcc3f
Gpencil: Fix stroke duplication offset and UI slider.
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
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 81ee8a3dc37..782850f68af 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -2357,7 +2357,7 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
if md.enable_duplication:
col.prop(md,"duplications")
col.prop(md,"distance")
- col.prop(md,"offset")
+ col.prop(md,"offset", slider=True)
col = sp.column()
col.prop(md, "enable_angle_splitting")
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
index 07bff517b8e..2ec84ea6505 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
@@ -148,6 +148,26 @@ static void duplicateStroke(
normalize_v3(stroke_normal);
}
+ float* t1_array = MEM_callocN(sizeof(float)*3*gps->totpoints,"duplicate_temp_result_array_1");
+ float* t2_array = MEM_callocN(sizeof(float)*3*gps->totpoints,"duplicate_temp_result_array_2");
+
+ pt= gps->points;
+
+ for (int j = 0; j < gps->totpoints; j++) {
+ if (j == 0) {
+ minter_v3_v3v3v3_ref(minter, NULL, &pt[j].x, &pt[j + 1].x, stroke_normal);
+ }
+ else if (j == gps->totpoints - 1) {
+ minter_v3_v3v3v3_ref(minter, &pt[j - 1].x, &pt[j].x, NULL, stroke_normal);
+ }
+ else {
+ minter_v3_v3v3v3_ref(minter, &pt[j - 1].x, &pt[j].x, &pt[j + 1].x, stroke_normal);
+ }
+ mul_v3_fl(minter, dist);
+ add_v3_v3v3(&t1_array[j*3], &pt[j].x, minter);
+ sub_v3_v3v3(&t2_array[j*3], &pt[j].x, minter);
+ }
+
for (i = 0; i < count; i++) {
if (i != 0) {
new_gps = BKE_gpencil_stroke_duplicate(gps);
@@ -159,32 +179,19 @@ static void duplicateStroke(
}
pt = new_gps->points;
- offset_factor = (float)i / (float)count;
-
- float* result_array = MEM_callocN(sizeof(float)*3*new_gps->totpoints,"duplicate_temp_result_array");
-
- for (int j = 0; j < new_gps->totpoints; j++) {
- if (j == 0) {
- minter_v3_v3v3v3_ref(minter, NULL, &pt[j].x, &pt[j + 1].x, stroke_normal);
- }
- else if (j == new_gps->totpoints - 1) {
- minter_v3_v3v3v3_ref(minter, &pt[j - 1].x, &pt[j].x, NULL, stroke_normal);
- }
- else {
- minter_v3_v3v3v3_ref(minter, &pt[j - 1].x, &pt[j].x, &pt[j + 1].x, stroke_normal);
- }
- mul_v3_fl(minter, dist);
- add_v3_v3v3(target1, &pt[j].x, minter);
- sub_v3_v3v3(target2, &pt[j].x, minter);
- interp_v3_v3v3(&result_array[j*3], target1, target2, offset_factor + offset / 2);
+
+ if(count == 1){
+ offset_factor = 0;
+ }else{
+ offset_factor = offset_factor = (float)i / (float)(count-1);
}
+
for (int j = 0; j < new_gps->totpoints; j++) {
- copy_v3_v3(&pt[j].x,&result_array[j*3]);
+ interp_v3_v3v3(&pt[j].x, &t1_array[j*3], &t2_array[j*3], interpf(1+offset,offset,offset_factor));
}
-
- MEM_freeN(result_array);
-
}
+ MEM_freeN(t1_array);
+ MEM_freeN(t2_array);
}
static void bakeModifier(Main *UNUSED(bmain),
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 13c1f96fd1d..f9284f4a992 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -1780,7 +1780,7 @@ static void rna_def_modifier_gpencilmultiply(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, 0, 10);
+ RNA_def_property_ui_range(prop, -1, 1, 0.1, 3);
RNA_def_property_ui_text(prop, "Offset", "Offset of duplications. -1 to 1: inner to outer");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
More information about the Bf-blender-cvs
mailing list