[Bf-blender-cvs] [69240a66e0a] master: GP: Fix mirror modifier with parent object

Antonioya noreply at git.blender.org
Sun Jan 20 19:20:25 CET 2019


Commit: 69240a66e0a9914b8bfafb7a401c43cc757ad9ae
Author: Antonioya
Date:   Sun Jan 20 17:57:13 2019 +0100
Branches: master
https://developer.blender.org/rB69240a66e0a9914b8bfafb7a401c43cc757ad9ae

GP: Fix mirror modifier with parent object

Still problems when local rotation.

Some cleanup done.

===================================================================

M	source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c

===================================================================

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
index 52de1529b72..00ffabe3c36 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
@@ -84,24 +84,26 @@ static void update_position(Object *ob, MirrorGpencilModifierData *mmd, bGPDstro
 	clear[axis] = 1.0f;
 
 	float ob_origin[3];
-	float mirror_origin[3];
 	float pt_origin[3];
 
-	copy_v3_v3(ob_origin, ob->loc);
+	if (mmd->object) {
+		float inv_mat[4][4];
+
+		invert_m4_m4(inv_mat, mmd->object->obmat);
+		mul_v3_m4v3(ob_origin, inv_mat, ob->obmat[3]);
+	}
+	else {
+		copy_v3_v3(ob_origin, ob->obmat[3]);
+	}
+
 	/* only works with current axis */
 	mul_v3_v3(ob_origin, clear);
-	zero_v3(mirror_origin);
 
-	if (mmd->object) {
-		mul_v3_v3v3(mirror_origin, mmd->object->loc, clear);
-	}
+	mul_v3_v3fl(pt_origin, ob_origin, -2.0f);
 
-	/* clear other axis */
 	for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
 		mul_v3_v3(&pt->x, factor);
 		if (mmd->object) {
-			sub_v3_v3v3(pt_origin, ob_origin, mirror_origin);
-			mul_v3_fl(pt_origin, -2.0f);
 			add_v3_v3(&pt->x, pt_origin);
 		}
 	}



More information about the Bf-blender-cvs mailing list