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
This commit is contained in:
YimingWu 2022-05-23 16:15:15 +08:00
parent b81f1b8cf1
commit c4e5a7d59a
Notes: blender-bot 2023-02-14 05:43:04 +01:00
Referenced by issue #98258, GPencil: Double vertices after simplify with short sample length
4 changed files with 11 additions and 6 deletions

@ -1 +1 @@
Subproject commit fb1eac2ec80c0adee69990a5386b74a5bd4ca00c
Subproject commit 647c85462d87c3a9d3a189d28d72d1bd93f4d4a8

@ -1 +1 @@
Subproject commit 7025cd28ede25eb44208722f842e35b10325c6cc
Subproject commit d936e4c01fa263a71a7d0665628ae621283b15ee

View File

@ -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;
}
}

@ -1 +1 @@
Subproject commit 53b7c02a062c3d6ec6b38ce670836321b4e78fab
Subproject commit ccc8fceb6bd83ffbf6e5207247fb8f76fc47a5b6