[Bf-blender-cvs] [efc03eaf594] temp-gpencil-bezier-stroke-type: GPencil: Cleanup armature deform code
Falk David
noreply at git.blender.org
Wed Apr 7 08:46:28 CEST 2021
Commit: efc03eaf5947ac3e3c390ce10092187082be5d27
Author: Falk David
Date: Wed Apr 7 08:44:42 2021 +0200
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rBefc03eaf5947ac3e3c390ce10092187082be5d27
GPencil: Cleanup armature deform code
===================================================================
M source/blender/blenkernel/intern/armature_deform.c
M source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
===================================================================
diff --git a/source/blender/blenkernel/intern/armature_deform.c b/source/blender/blenkernel/intern/armature_deform.c
index 32624c85cc8..94eb046e46e 100644
--- a/source/blender/blenkernel/intern/armature_deform.c
+++ b/source/blender/blenkernel/intern/armature_deform.c
@@ -524,10 +524,9 @@ static void armature_deform_coords_impl(const Object *ob_arm,
if (GPENCIL_STROKE_TYPE_BEZIER(gps_target)) {
bGPDcurve *gpc = gps_target->editcurve;
dverts = gpc->dvert;
- if (dverts) {
+ if (dverts != NULL) {
dverts_len = gpc->tot_curve_points * 3;
temp_dverts = MEM_mallocN(sizeof(MDeformVert) * dverts_len, __func__);
- dverts = temp_dverts;
for (i = 0; i < gpc->tot_curve_points; i++) {
MDeformVert *dvert_src = &gpc->dvert[i];
int idx = i * 3;
@@ -541,6 +540,7 @@ static void armature_deform_coords_impl(const Object *ob_arm,
}
}
}
+ dverts = temp_dverts;
}
}
else {
@@ -638,7 +638,7 @@ static void armature_deform_coords_impl(const Object *ob_arm,
MEM_freeN(pchan_from_defbase);
}
- if (temp_dverts) {
+ if (temp_dverts != NULL) {
bGPDcurve *gpc = gps_target->editcurve;
for (int i = 0; i < gpc->tot_curve_points * 3; i++) {
MDeformVert *dvert = &temp_dverts[i];
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
index 1180e49d09f..085b19192aa 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
@@ -41,6 +41,7 @@
#include "BKE_armature.h"
#include "BKE_context.h"
#include "BKE_gpencil.h"
+#include "BKE_gpencil_curve.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
@@ -117,15 +118,14 @@ static void gpencil_deform_bezier_verts(ArmatureGpencilModifierData *mmd,
bGPDstroke *gps)
{
bGPDcurve *gpc = gps->editcurve;
- bGPDcurve_point *pt = gpc->curve_points;
const int totpoints = gpc->tot_curve_points * 3;
float(*vert_coords)[3] = MEM_mallocN(sizeof(float[3]) * totpoints, __func__);
- int i;
BKE_gpencil_dvert_ensure(gps);
/* prepare array of points */
- for (i = 0; i < gpc->tot_curve_points; i++, pt++) {
+ for (int i = 0; i < gpc->tot_curve_points; i++) {
+ bGPDcurve_point *pt = &gpc->curve_points[i];
BezTriple *bezt = &pt->bezt;
int idx = i * 3;
copy_v3_v3(vert_coords[idx], bezt->vec[0]);
@@ -145,8 +145,8 @@ static void gpencil_deform_bezier_verts(ArmatureGpencilModifierData *mmd,
gps);
/* Apply deformed coordinates */
- pt = gpc->curve_points;
- for (i = 0; i < gpc->tot_curve_points; i++, pt++) {
+ for (int i = 0; i < gpc->tot_curve_points; i++) {
+ bGPDcurve_point *pt = &gpc->curve_points[i];
BezTriple *bezt = &pt->bezt;
int idx = i * 3;
copy_v3_v3(bezt->vec[0], vert_coords[idx]);
@@ -154,6 +154,9 @@ static void gpencil_deform_bezier_verts(ArmatureGpencilModifierData *mmd,
copy_v3_v3(bezt->vec[2], vert_coords[idx + 2]);
}
+ /* Recalculate the handles. */
+ BKE_gpencil_editcurve_recalculate_handles(gps);
+
MEM_freeN(vert_coords);
}
More information about the Bf-blender-cvs
mailing list