Animation with GI that doesn't flicker

New Scene here:
This one hopefully better demonstrates the flickering.

http://www.dukecg.net/anim\_test2.zip

-----------------------------------------------------

Let’s make one shall we?

I’ll render this dude walking through a closed section. Some of the more important settings are in red. The low interpolation samples and only show GI toggles are to focus on the GI solution. Here’s my original settings:

Scene here. Done in Max2009. I’ve included the calculated IR map aswell: http://www.dukecg.net/anim\_test.zip

And here it is rendered with the above settings:

Changed the GI interp frames to 12. You can see what it’s doing but it’s not hiding the extremes:

Maybe it’s the Lightcache? Changed Primary and Secondary to use LC. At first it looks pretty good, but look at the biped and spinning box. It’s hiding something dammit.

LC filters (prefilter and filter) off/set to 0. Notice how on the static areas, the samples are almost 100% stable. Around the rotating box and biped, things are all over the place.

After the above, I tried it with 1000 samples and it was the same, just with more samples/overlaps. I tried it with adaptive as well, but that made it flicker all over and have no stable areas. Therefore, don’t use LC in adaptive mode for animations.

I changed the sample size to .01 (from .033). It makes a visual difference but I don’t know if it’s for the better. Notice how because it’s in screen space, the samples in the distance are larger. Presumably if you had animation going on in the background you’d need them to be denser there as well, so I think world space samples are a better way to go.

Changed to world at a similar size to what .01 in screenspace was. Ended up being 5cm. Pre-pass filter turned on at 64:

Pre-pass filter off, Nearest on at 64:

and Fixed set to 0.5m:

Well i’m just going to blur the shit out of it and leave the detail up the IR map. Pre-pass at 256, Nearest at 64:

Let’s get back to the combination of the two, knowing that any flickering in LC is so obscured it won’t have much to do with any other flickering. I ended up with 400 LC samples, world sample size of 5cm, pre-pass at 256 and nearest at 64. First time around after recalculating the pre-pass, it had the same sort of problems as I began with, so I investigated what sample-lookup did for hiding the flicker. I set the samples to 64 because in overlapping mode it seems to need it.

Density-based:

Overlapping:

Nearest:

Least Squares Fit:

Overlapping is by far the best, but it’s just covering up the issue, so the only way forward is more blur. Back to the samples! Maybe it’s simply the sample distribution and sensitivity. Rather than playing with the 3 thresholds, I went straight to the DMC sampler and changed the noise threshold from .008 to .001 and recalculated. I rendered again with Overlapping and was pleasantly surprised! Note that I changed the threshold back to .008 after the IR map was calculated.

Here it is with Interp samples at 32 (was 1):

Moon Doggies settings (but with overlapped, multipass and randomize samples off):

Morbid Angel’s settings (same as above, overlapped, etc.):

can you upload the scene?

Sure. I just noticed something though and i’m going to redo what i’ve done so far. Look at the animated dude. In the first 2 he’s fine, but in the 3rd (only LC) it’s awful, so LC may be more of a problem in day-to-day animated scenes than i’m making it out to be. I’ll add a slowly rotating door thing or something.

The suggested settings I would use would be

IMAP
mode: animation (prepass)
min: -3
max: -1
hsph: 50
interp samples: 20 (this blurs the samples on the imap)
interp frames: 2 (this settings blends the imap with the two frames before and two after)

Light Cache:
mode: fly-through
store direct light: ticked
use light cache for glossy rays: ticked

DMC Sampler
adaptive: .9
noise: .01

calculate the imap (prepass) and save it. then do the rendering using the imap animation (rendering) and link it to the imap frames you just calculated.

The rest of the settings at default, and it should work fine.

the fundemental issue in such approaches is the inproper use of light cache. From talking to vlado, he explained to me that light cache when computed with irradience map for animations, should in theory be interpolated along with the irradience map when the mode is set to animation (rendering).
However, this does not always work: In some spcific cases where major parts of the scene move, lightcache computed is not interpolated correctly.

Below are two more or less proper setups.

In this test, the irmap is computer per frame with the setting of -1/-1 and 20/80
light cache of 500 with filtering of 40 in screen space, with size of 0.005. Lightcache is computed with a flythrough mode. Though you cant really see on the gif, there is a very minute flickering happening still.

In this test, the irmap is computer in animation mode (prepass/rendering) with interpolation of 4 frames with the setting of -3/-1 and 20/80
light cache of 600 with filtering of 40 in screen space, with size of 0.005. This time LC is computed per frame. In this test there is little to no flickering.

So in most non-static scenes you shouldn’t use lightcache in flythrough mode? I thought that was the case but i’ve seen some people use it and some haven’t.

You should not use the fly-through mode of the light cache for moving objects; you’ll have to calculate it per frame (possibly with lower subdivs but large prefilter to make it faster and more smooth).

Best regards,
Vlado

Does this still offer any speed benefits over qmc / lc after the prepass and render are done?

also just trying to light the scene with a vraysky isnt the most efficient way of doing things.
If you turn on the vraysun you have in the scene you will have a few more light samples to play with.

Note the “show GI only” flag :wink:

I observed Morbid Angel’s method seems to produce better corner GI as well.
Morbid’s looks just right, unlike using flythrough mode. Flythrough ones just look alittle
too dark at the corners for outdoor environment GI.

If the scene is largely open, using brute force GI for the secondary bounces might work better. However if it is a closed space and you need the bounced light, the light cache will provide a better solution.

Best regards,
Vlado

“Largely open” meant outdoor scene?

Yes, an exterior scene probably will work better with brute force as secondary GI, as opposed to the light cache.

Best regards,
Vlado

great stuff guys. can you post the .max scene for the last animation please? (morbid angel settings)

i tried blundering through various tests of my own but never quite got there

Brute Force as sencondary GI is too slow with blurry reflections, isn’t it?. Is there any way to make it faster, or maybe just try to render with light cache. Here’s my second question, can I use “use light cache for glossy rays” in the animation ?
Just to let you know, I’m doing a car animation and I have lot of glossies, 3d motion blur for the wheels with glossy reflection is really slow, therefore my questions. I’ve done several animations and could never get rid of the flickering… :frowning: . I’m kind of desperate
Hope you can help me

Thx in advance

It would be helpful if you can show some flickering frames; it might be possible that the flickering is not due to GI at all.

Best regards,
Vlado

Could you render the light cache through backburner if your going to render every frame of the light cache instead of a single file flythough as morbid angel test suggested? Because I think sending a animation on only one computer with a animation for example with 2000 frames+ would take days on a single machine. How did you render the light cache every frame?

Um, just leave it to the default mode “Single frame”.

Best regards,
Vlado

So I sent the light cache every frame through the backburner and it seemed to just overwrite itself every frame. I wouldn’t give me individual light cache files like the prepass would. I wonder if I’m doing it wrong because morbid angel’s method seems to work quite well in getting no flickers in the the last animation sample gif he posted.