diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/gpencil.c | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/gpencil_modifier.c | 9 |
2 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 8d6f8a06e8c..bfffd44e73d 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -2785,11 +2785,14 @@ void BKE_gpencil_update_layer_transforms(const Depsgraph *depsgraph, Object *ob) changed = !equals_m4m4(gpl->inverse, cur_mat); } - /* Calc local layer transform. */ + /* Calc local layer transform. Early out if we have non-animated zero transforms. */ bool transformed = ((!is_zero_v3(gpl->location)) || (!is_zero_v3(gpl->rotation)) || (!is_one_v3(gpl->scale))); + float tmp_mat[4][4]; + loc_eul_size_to_mat4(tmp_mat, gpl->location, gpl->rotation, gpl->scale); + transformed |= !equals_m4m4(gpl->layer_mat, tmp_mat); if (transformed) { - loc_eul_size_to_mat4(gpl->layer_mat, gpl->location, gpl->rotation, gpl->scale); + copy_m4_m4(gpl->layer_mat, tmp_mat); } /* Continue if no transformations are applied to this layer. */ diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c index 8361d8e1849..70b8717abbe 100644 --- a/source/blender/blenkernel/intern/gpencil_modifier.c +++ b/source/blender/blenkernel/intern/gpencil_modifier.c @@ -720,7 +720,14 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o do_parent = true; break; } - if ((!is_zero_v3(gpl->location)) || (!is_zero_v3(gpl->rotation)) || (!is_one_v3(gpl->scale))) { + + /* Only do layer transformations for non-zero or animated transforms. */ + bool transformed = ((!is_zero_v3(gpl->location)) || (!is_zero_v3(gpl->rotation)) || + (!is_one_v3(gpl->scale))); + float tmp_mat[4][4]; + loc_eul_size_to_mat4(tmp_mat, gpl->location, gpl->rotation, gpl->scale); + transformed |= !equals_m4m4(gpl->layer_mat, tmp_mat); + if (transformed) { do_transform = true; break; } |