Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYimingWu <xp8110@outlook.com>2022-05-23 11:15:15 +0300
committerBastien Montagne <bastien@blender.org>2022-05-23 13:13:33 +0300
commit3fe1079ecfb4b50936c3ed5d56984fad3c000879 (patch)
tree56d1ad196afffd707dd21503f466e0cd9d51ac75
parent2d67b375a15f8bb96233fc56a40be8cf545d08df (diff)
Fix T98258: Duplicated last vertex after GPencil sample.
Also fixed an unreported issue of incorrect interpolation of thickness. Reviewed By: Aleš Jelovčan (frogstomp), Antonio Vazquez (antoniov) Differential Revision: https://developer.blender.org/D15005
m---------release/datafiles/locale0
m---------release/scripts/addons0
-rw-r--r--source/blender/blenkernel/intern/gpencil_geom.cc11
m---------source/tools0
4 files changed, 8 insertions, 3 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale
-Subproject fb1eac2ec80c0adee69990a5386b74a5bd4ca00
+Subproject 647c85462d87c3a9d3a189d28d72d1bd93f4d4a
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 7025cd28ede25eb44208722f842e35b10325c6c
+Subproject d936e4c01fa263a71a7d0665628ae621283b15e
diff --git a/source/blender/blenkernel/intern/gpencil_geom.cc b/source/blender/blenkernel/intern/gpencil_geom.cc
index 041696fa8d3..dd22d64aee1 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.cc
+++ b/source/blender/blenkernel/intern/gpencil_geom.cc
@@ -236,6 +236,7 @@ static int stroke_march_next_point(const bGPDstroke *gps,
}
else {
next_point_index = gps->totpoints - 1;
+ remaining_till_next = 0;
break;
}
}
@@ -263,15 +264,18 @@ static int stroke_march_next_point(const bGPDstroke *gps,
float ratio = remaining_march / remaining_till_next;
interp_v3_v3v3(result, step_start, point, ratio);
*ratio_result = ratio;
+ float d1 = len_v3v3(result, &gps->points[*index_from].x);
+ float d2 = len_v3v3(result, &gps->points[next_point_index].x);
+ float vratio = d1 / (d1 + d2);
*pressure = interpf(
- gps->points[next_point_index].pressure, gps->points[*index_from].pressure, ratio);
+ gps->points[next_point_index].pressure, gps->points[*index_from].pressure, vratio);
*strength = interpf(
- gps->points[next_point_index].strength, gps->points[*index_from].strength, ratio);
+ gps->points[next_point_index].strength, gps->points[*index_from].strength, vratio);
interp_v4_v4v4(vert_color,
gps->points[*index_from].vert_color,
gps->points[next_point_index].vert_color,
- ratio);
+ vratio);
return next_point_index == 0 ? gps->totpoints : next_point_index;
}
@@ -320,6 +324,7 @@ static int stroke_march_next_point_no_interp(const bGPDstroke *gps,
}
else {
next_point_index = gps->totpoints - 1;
+ remaining_till_next = 0;
break;
}
}
diff --git a/source/tools b/source/tools
-Subproject 53b7c02a062c3d6ec6b38ce670836321b4e78fa
+Subproject ccc8fceb6bd83ffbf6e5207247fb8f76fc47a5b