Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJishan Singh <ringmaker>2021-03-22 18:55:37 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-03-22 19:22:45 +0300
commit2c427d594f37d47b469ffac514b6ecd247ad9305 (patch)
tree730060d445a1bc97288be6b326204ab2d844997c /source
parent21268ad20ae2f672e116e06721c5e46ee63a1c9b (diff)
Fix T83638: mirror modifier with mirror object renders wrong motion blur
In this case both the mirror object and object itself moving in time may change the geometry and must be checked. Differential Revision: https://developer.blender.org/D10757
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/object.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 704d6d1cf4f..76c96ec9603 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -4885,7 +4885,7 @@ static bool object_deforms_in_time(Object *object)
return object_moves_in_time(object);
}
-static bool constructive_modifier_is_deform_modified(ModifierData *md)
+static bool constructive_modifier_is_deform_modified(Object *ob, ModifierData *md)
{
/* TODO(sergey): Consider generalizing this a bit so all modifier logic
* is concentrated in MOD_{modifier}.c file,
@@ -4900,7 +4900,8 @@ static bool constructive_modifier_is_deform_modified(ModifierData *md)
}
if (md->type == eModifierType_Mirror) {
MirrorModifierData *mmd = (MirrorModifierData *)md;
- return mmd->mirror_ob != NULL && object_moves_in_time(mmd->mirror_ob);
+ return mmd->mirror_ob != NULL &&
+ (object_moves_in_time(mmd->mirror_ob) || object_moves_in_time(ob));
}
if (md->type == eModifierType_Screw) {
ScrewModifierData *smd = (ScrewModifierData *)md;
@@ -4984,7 +4985,7 @@ int BKE_object_is_deform_modified(Scene *scene, Object *ob)
bool can_deform = mti->type == eModifierTypeType_OnlyDeform || is_modifier_animated;
if (!can_deform) {
- can_deform = constructive_modifier_is_deform_modified(md);
+ can_deform = constructive_modifier_is_deform_modified(ob, md);
}
if (can_deform) {