diff options
Diffstat (limited to 'source/blender/editors/gpencil/gpencil_data.c')
-rw-r--r-- | source/blender/editors/gpencil/gpencil_data.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c index c7b46858df9..a047c1b8494 100644 --- a/source/blender/editors/gpencil/gpencil_data.c +++ b/source/blender/editors/gpencil/gpencil_data.c @@ -2675,7 +2675,10 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator *op) sub_v3_v3v3(offset_global, ob_active->loc, ob_iter->obmat[3]); copy_m3_m4(bmat, ob_active->obmat); - invert_m3_m3(imat, bmat); + + /* Inverse transform for all selected curves in this object, + * See #object_join_exec for detailed comment on why the safe version is used. */ + invert_m3_m3_safe_ortho(imat, bmat); mul_m3_v3(imat, offset_global); mul_v3_m3v3(offset_local, imat, offset_global); @@ -2686,7 +2689,7 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator *op) /* recalculate all stroke points */ BKE_gpencil_parent_matrix_get(depsgraph, ob_iter, gpl_src, diff_mat); - invert_m4_m4(inverse_diff_mat, diff_mat); + invert_m4_m4_safe_ortho(inverse_diff_mat, diff_mat); Material *ma_src = NULL; LISTBASE_FOREACH (bGPDframe *, gpf, &gpl_new->frames) { |