Animating influence of 'Child Of' bone constraint causing motion blur errors. #73756

Open
opened 2020-02-12 14:34:49 +01:00 by stephen thomas · 27 comments

System Information
Operating system: Linux-5.3.0-29-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: GeForce GTX 1080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.59

Blender Version
Broken: version: 2.82 (sub 6), branch: master, commit date: 2020-02-11 14:45, hash: blender/blender@c939b4df18
Worked: This has been the way Cycles motion blur has worked since I started using it, so I wasn't sure if this was classed as a bug or not. Either way, it would be great if this didn't happen.

Short description of error
When animating the influence value of the 'Child Of' constraint, motion blur errors occur when the bone isn't in the position where 'Set Inverse' correction was set.

The very simple example attached (blur-childof-constraint-bug.blend) shows how the mesh of the cube isn't "moving", but still gets blurred based on the parent bone's motion, the 'Child Of' constraint seems to be ignored by the blur.

blur-childof-constraint-bug.blend

blur-test-render_00001.png

This is a practical problem for character animators in particular. See example apple-blur-test.blend. A character picks up an apple with one hand, tosses it in the air and catches it with the other hand, then places it back down again in a different position. The child of constraint needs to be animated to control the influence the hands have on the apple. Position and rotation keyframes need to be added to compensate for the Inverse correction of the Child Of constraint. When influence switches from 1 to 0 (when a hand is letting go of the apple), a motion blur error occurs (see below frames 40 and 80 of the apple test where this influence switch occurs).

apple-blur-test.blend

apple-blur-test_00040.png

apple-blur-test_00080.png

apple-blur-test.mp4

Exact steps for others to reproduce the error

  • Open 'blur-childof-constraint-bug.blend'
  • Hit render.

Or

  • Open 'apple-blur-test.blend'
  • Go to frame 40 or frame 80.
  • Hit render.
**System Information** Operating system: Linux-5.3.0-29-generic-x86_64-with-debian-buster-sid 64 Bits Graphics card: GeForce GTX 1080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.59 **Blender Version** Broken: version: 2.82 (sub 6), branch: master, commit date: 2020-02-11 14:45, hash: `blender/blender@c939b4df18` Worked: This has been the way Cycles motion blur has worked since I started using it, so I wasn't sure if this was classed as a bug or not. Either way, it would be great if this didn't happen. **Short description of error** When animating the influence value of the 'Child Of' constraint, motion blur errors occur when the bone isn't in the position where 'Set Inverse' correction was set. The very simple example attached (blur-childof-constraint-bug.blend) shows how the mesh of the cube isn't "moving", but still gets blurred based on the parent bone's motion, the 'Child Of' constraint seems to be ignored by the blur. [blur-childof-constraint-bug.blend](https://archive.blender.org/developer/F8336378/blur-childof-constraint-bug.blend) ![blur-test-render_00001.png](https://archive.blender.org/developer/F8336371/blur-test-render_00001.png) This is a practical problem for character animators in particular. See example apple-blur-test.blend. A character picks up an apple with one hand, tosses it in the air and catches it with the other hand, then places it back down again in a different position. The child of constraint needs to be animated to control the influence the hands have on the apple. Position and rotation keyframes need to be added to compensate for the Inverse correction of the Child Of constraint. When influence switches from 1 to 0 (when a hand is letting go of the apple), a motion blur error occurs (see below frames 40 and 80 of the apple test where this influence switch occurs). [apple-blur-test.blend](https://archive.blender.org/developer/F8336377/apple-blur-test.blend) ![apple-blur-test_00040.png](https://archive.blender.org/developer/F8336373/apple-blur-test_00040.png) ![apple-blur-test_00080.png](https://archive.blender.org/developer/F8336375/apple-blur-test_00080.png) [apple-blur-test.mp4](https://archive.blender.org/developer/F8336386/apple-blur-test.mp4) **Exact steps for others to reproduce the error** - Open 'blur-childof-constraint-bug.blend' - Hit render. Or - Open 'apple-blur-test.blend' - Go to frame 40 or frame 80. - Hit render.
Author

Added subscriber: @stephenthomas

Added subscriber: @stephenthomas

blender/blender#73758 was marked as duplicate of this issue

blender/blender#73758 was marked as duplicate of this issue

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'

Added subscriber: @iss

Added subscriber: @iss

Changed status from 'Confirmed' to: 'Archived'

Changed status from 'Confirmed' to: 'Archived'
Richard Antalik self-assigned this 2020-02-13 00:24:18 +01:00

Looking at this file again, after looking at blender/blender#73758 and playing around a bit, I think that there is no bug here. If you enable subframes and look at motion between frame 40 and 41, result of rendering looks correct.
https://docs.blender.org/manual/en/dev/editors/timeline.html#playback-popover

I if you change interpolation to constant and set motion blur position to start of frame you can work around this issue.
0030-0060.mp4

Looking at this file again, after looking at blender/blender#73758 and playing around a bit, I think that there is no bug here. If you enable subframes and look at motion between frame 40 and 41, result of rendering looks correct. https://docs.blender.org/manual/en/dev/editors/timeline.html#playback-popover I if you change interpolation to constant and set motion blur position to start of frame you can work around this issue. [0030-0060.mp4](https://archive.blender.org/developer/F8337166/0030-0060.mp4)

Added subscriber: @pokedstudio

Added subscriber: @pokedstudio

This comment was removed by @pokedstudio

*This comment was removed by @pokedstudio*
Author

Thank you for looking at this and also for merging the bugs, I wasn't quite sure if they were the same issue or not.

Where you say

if you change interpolation to constant and set motion blur position to start of frame you can work around this issue.

Suggests that this an issue to be worked around, making it a bug? I've already been working around this issue for years, but it does seem to be an error rather than incorrect use of the feature. i.e. changing the interpolation to constant and setting motion blur position to start of frame is not an intuitive solution at all if an artist comes across this issue. They're going to think that motion blur is broken. I understand that this might be a difficult issue to fix, but I think it is very much an issue.

Thank you for looking at this and also for merging the bugs, I wasn't quite sure if they were the same issue or not. Where you say > if you change interpolation to constant and set motion blur position to start of frame you can work around this issue. Suggests that this an issue to be worked around, making it a bug? I've already been working around this issue for years, but it does seem to be an error rather than incorrect use of the feature. i.e. changing the interpolation to constant and setting motion blur position to start of frame is not an intuitive solution at all if an artist comes across this issue. They're going to think that motion blur is broken. I understand that this might be a difficult issue to fix, but I think it is very much an issue.
Author

If I put this into context of the current project I'm working on, maybe this will convince you that this is something that needs to be looked at further.

We're currently working on a short character animation, about 5 minutes long, consisting of hundreds of shots. Animators working on the project aren't necessarily technical artists, they animate based on what looks best for the shot.

We've come across this issue several times and whenever it occurs it substantially increases render times. On average, our test renders have been around 1 minute. When a frame has this issue, the render time jumps, sometimes as high as 11 hours. It would be extremely time consuming to check every shot for this issue before hitting render. It's also a waste of render time when this bug occurs, as it ties up a render node for way too long. If we grin and bear the very high render times for these problem frames, yes, we can find them, go through the shots with these problems and manually do the workaround that you suggest, but again, this takes up more time. As you say, it's something we can work around, but it's not very practical.

If I put this into context of the current project I'm working on, maybe this will convince you that this is something that needs to be looked at further. We're currently working on a short character animation, about 5 minutes long, consisting of hundreds of shots. Animators working on the project aren't necessarily technical artists, they animate based on what looks best for the shot. We've come across this issue several times and whenever it occurs it substantially increases render times. On average, our test renders have been around 1 minute. When a frame has this issue, the render time jumps, sometimes as high as 11 hours. It would be extremely time consuming to check every shot for this issue before hitting render. It's also a waste of render time when this bug occurs, as it ties up a render node for way too long. If we grin and bear the very high render times for these problem frames, yes, we can find them, go through the shots with these problems and manually do the workaround that you suggest, but again, this takes up more time. As you say, it's something we can work around, but it's not very practical.

Added subscribers: @WilliamReynish, @Blendify

Added subscribers: @WilliamReynish, @Blendify

We've come across this issue several times and whenever it occurs it substantially increases render times. On average, our test renders have been around 1 minute. When a frame has this issue, the render time jumps, sometimes as high as 11 hours.

This would be a bug. Can you report this With example .blend separately?

We could reopen this as known issue as in it needs better documentation, workflow example and possibly change default settings.
@Blendify, @WilliamReynish what do you think?

tl;dr: teleporting objects requires special workflow for motion blur to work correctly.

>We've come across this issue several times and whenever it occurs it substantially increases render times. On average, our test renders have been around 1 minute. When a frame has this issue, the render time jumps, sometimes as high as 11 hours. This would be a bug. Can you report this With example .blend separately? We could reopen this as known issue as in it needs better documentation, workflow example and possibly change default settings. @Blendify, @WilliamReynish what do you think? tl;dr: teleporting objects requires special workflow for motion blur to work correctly.
Author

Thanks Richard. Unfortunately we can't share anything from the project, but I'll look into duplicating the issue in another example that shows a bump in render times, will send it over as soon as I get a chance to put it together.

Thanks Richard. Unfortunately we can't share anything from the project, but I'll look into duplicating the issue in another example that shows a bump in render times, will send it over as soon as I get a chance to put it together.
Member

Changed status from 'Archived' to: 'Needs User Info'

Changed status from 'Archived' to: 'Needs User Info'
Member

I am not sure what default settings would need to be changed to fix this. There does seem like the possibility of a bug somewhere so I will leave to report open for now.

I am not sure what default settings would need to be changed to fix this. There does seem like the possibility of a bug somewhere so I will leave to report open for now.
Author

Thanks guys. Hopefully I’ll have some time this weekend to put together a sample that better illustrates the problem.

Thanks guys. Hopefully I’ll have some time this weekend to put together a sample that better illustrates the problem.

@Blendify
If motion blur position should be set to start of frame by default and if boolean properties could have constant interpolation by default, teleporting objects with motion blur in this case would work out of box. I guess that using constant interpolation for bools by default, could have unforseen consequences though and there may be cases where this defaults wouldn't be enough.

So I personally would rather just properly document why this happens (motion in subframes), and what to do to resolve this problem (eliminate motion in subframes while shutter is open).

@Blendify If motion blur position should be set to start of frame by default and if boolean properties could have constant interpolation by default, teleporting objects with motion blur in this case would work out of box. I guess that using constant interpolation for bools by default, could have unforseen consequences though and there may be cases where this defaults wouldn't be enough. So I personally would rather just properly document why this happens (motion in subframes), and what to do to resolve this problem (eliminate motion in subframes while shutter is open).

thanks for re-looking at this guys!

thanks for re-looking at this guys!

Changed status from 'Needs User Info' to: 'Confirmed'

Changed status from 'Needs User Info' to: 'Confirmed'

Added subscriber: @ideasman42

Added subscriber: @ideasman42

Marking as documentation TODO.

Marking as documentation TODO.
Richard Antalik removed their assignment 2020-02-27 14:48:19 +01:00

Added subscriber: @vasiln

Added subscriber: @vasiln

@stephenthomas

Just as a work-around, considering that this is related to a current, probably commercial, project, baking to visual keyframes should eliminate the weird in-betweens that happen from animated child-of influence.

If there is a bug related to huge rendering times when child-of influence leads to large in-between differences in object position, it should resolve that as well.

@stephenthomas Just as a work-around, considering that this is related to a current, probably commercial, project, baking to visual keyframes should eliminate the weird in-betweens that happen from animated child-of influence. If there is a bug related to huge rendering times when child-of influence leads to large in-between differences in object position, it should resolve that as well.
Author

Thanks @vasiln, it was a commercial project that ended a while ago :) We did some kind of workaround, think it was having several instances of the object being picked up with constraints based on if they were being held or not, then animated the visibility to switch between them. We did consider baking out the meshes, but didn't in the end.

Thanks @vasiln, it was a commercial project that ended a while ago :) We did some kind of workaround, think it was having several instances of the object being picked up with constraints based on if they were being held or not, then animated the visibility to switch between them. We did consider baking out the meshes, but didn't in the end.

Added subscriber: @StephenHamacek

Added subscriber: @StephenHamacek

In #73756#1030611, @vasiln wrote:
@stephenthomas

Just as a work-around, considering that this is related to a current, probably commercial, project, baking to visual keyframes should eliminate the weird in-betweens that happen from animated child-of influence.

If there is a bug related to huge rendering times when child-of influence leads to large in-between differences in object position, it should resolve that as well.

Thanks for this tip, i've just come across this bug myself, and it certainly doesn't make sense from an artist pov, when object is at pt A then pt B, but because of a constraint the motion blur doesn't work.

> In #73756#1030611, @vasiln wrote: > @stephenthomas > > Just as a work-around, considering that this is related to a current, probably commercial, project, baking to visual keyframes should eliminate the weird in-betweens that happen from animated child-of influence. > > If there is a bug related to huge rendering times when child-of influence leads to large in-between differences in object position, it should resolve that as well. Thanks for this tip, i've just come across this bug myself, and it certainly doesn't make sense from an artist pov, when object is at pt A then pt B, but because of a constraint the motion blur doesn't work.

Added subscriber: @B_Engstler

Added subscriber: @B_Engstler
Aaron Carlisle removed the
Module
Rendering & Cycles
label 2023-02-08 05:05:03 +01:00
Aaron Carlisle added the
Module
Rendering & Cycles
label 2023-08-13 14:32:11 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-manual#73756
No description provided.