Because we’re often trying to simulate small wet transparent things we rely pretty heavily on stochastic raytracing. We can handle transparency, large light sources, depth of field, light scattering, etc. all at the same time. It’s a general purpose setup that works well for a broad range of “soft” phenomenon. Brazil is pretty fast, but there are limits to our patience, especially since the sampling isn’t reusable. Once you make any change at all to the scene, you essentially have to start over. So we try to get a lot of revisions done to refine a look and still keep the speeds good so we can get those revisions turned around quickly.
When you reduce the number of samples, you get a large increase in speed, but the downside is aliasing, which generally looks like noise, since it is stochastic.
The trick, then, is to manage the noise so that you get a clean render that is both temporally and spatially free of aliasing.
Ordinarily this can be done with some filtering, perhaps a 9×9 Gaussian blur or similar, perhaps even a 9x9x9 blur that can handle the temporal aliasing. The problem that you lose a lot of fine textural detail this way, to the point where the subtle surfaces of the cells or bacteria get lost, and you end with what looks like a low resolution or out of focus image. This can save you a lot of time when you do texturing and animation, but it isn’t professional.
We’ve been experimenting with using noise reduction method that uses optical flow to estimate the transformation of pixels over a number of frames, and only average between those pixels, even though they aren’t at the same XY coordinates in the image.
The results are fairly impressive.
And here are some crops showing the differences in noise levels.
a) Original render
b) Processed with both temporal and spatial noise reduction
c) Processed with spatial noise reduction only
The left column is modestly contrast enhanced to show the noise better, and the right one has a Laplacian filter applied to highlight the noise.
Notice that A and C are similar. There’s some noise reduction going on, but the whole image is softer too.
B is actually more detailed and sharper appearing than A. Because the samples are taken from 5 frames, you can actually get more accurate result that shows the texture better than the original.
If the optical flow doesn’t calculate the transforms correctly, there is a chance that the pixels will “jiggle” some. It’s actually a pleasant side effect when doing organic fluid motion. If the relative transforms of the surfaces can be recorded to a X and Y vector channels, as they often can with CG images, then you can eliminate the optical flow estimation and get a cleaner image. Unfortunately, that’s not feasible for transparent objects.




April 21st, 2010 at 7:54 am
hello
I have similar problems with my animation rendered in max and vray. especially the glossy reflections are noisy.
I am new to fusion and would like to ask you how you made the noise reduction exactly?
best regards
themaxxer